arm: omap4: hsmmc: pbias fixes
Subsystems (4)
cover arm: omap4: hsmmc: pbias fixes
MMC1 pbias and speed control fix for SDMMC1 extended I/O cell
Balaji T K (2):
arm: omap4: hsmmc: Fix Pbias configuration on regulator OFF
arm: omap4: hsmmc: configure SDMMC1_DR0 properly
arch/arm/mach-omap2/hsmmc.c | 16 +++------------- 1 files changed, 3 insertions(+), 13 deletions(-)
PATCH 1/2 arm: omap4: hsmmc: Fix Pbias configuration on regulator OFF
MMC1 data line IO's are powered down in before set regulator function. IO's should not be powered ON when regulator is OFF.
Keep the IO's in power pown mode after regulator OFF. Delete incorrect comments which are not applicable for OMAP4.
--- arch/arm/mach-omap2/hsmmc.c | 14 ++------------ 1 files changed, 2 insertions(+), 12 deletions(-)
arch/arm/mach-omap2/hsmmc.c +2 -12
@@ -129,15 +129,11 @@ static void omap4_hsmmc1_before_set_reg(struct device *dev, int slot,* Assume we power both OMAP VMMC1 (for CMD, CLK, DAT0..3) and the * card with Vcc regulator (from twl4030 or whatever). OMAP has both * 1.8V and 3.0V modes, controlled by the PBIAS register. -* -* In 8-bit modes, OMAP VMMC1A (for DAT4..7) needs a supply, which -* is most naturally TWL VSIM; those pins also use PBIAS. -* -* FIXME handle VMMC1A as needed ... */ reg =omap4_ctrl_pad_readl (control_pbias_offset); reg &= ~(OMAP4_MMC1_PBIASLITE_PWRDNZ_MASK | -OMAP4_MMC1_PWRDNZ_MASK ); +OMAP4_MMC1_PWRDNZ_MASK | +OMAP4_MMC1_PBIASLITE_VMODE_MASK );omap4_ctrl_pad_writel (reg, control_pbias_offset); }
@@ -172,12 +168,6 @@ static void omap4_hsmmc1_after_set_reg(struct device *dev, int slot, reg &= ~(OMAP4_MMC1_PWRDNZ_MASK );omap4_ctrl_pad_writel (reg, control_pbias_offset); } - }else { - reg =omap4_ctrl_pad_readl (control_pbias_offset); - reg |= (OMAP4_MMC1_PBIASLITE_PWRDNZ_MASK | -OMAP4_MMC1_PWRDNZ_MASK | -OMAP4_MMC1_PBIASLITE_VMODE_MASK ); -omap4_ctrl_pad_writel (reg, control_pbias_offset); } }
Signature · 1 line
1.7.0.4
Tony Lindgren
maintainerPATCH 1/2 arm: omap4: hsmmc: Fix Pbias configuration on regulator OFF
Quoted 4 lines · Balaji T K
MMC1 data line IO's are powered down in before set regulator function. IO's should not be powered ON when regulator is OFF.
Keep the IO's in power pown mode after regulator OFF. Delete incorrect comments which are not applicable for OMAP4.
Care to check how this is different from what I added into fixes branch as commit 3fe8df93b0992199e3a0026fc51e90b705f94e40?
Is this a separate issue?
Tony
Quoted 45 lines
Signed-off-by Balaji T K <[email protected]>Signed-off-by Kishore Kadiyala <[email protected]>Reported-by Viswanath Puttagunta <[email protected]>--- arch/arm/mach-omap2/hsmmc.c | 14 ++------------ 1 files changed, 2 insertions(+), 12 deletions(-)arch/arm/mach-omap2/hsmmc.c +2
-12@@ -129,15 +129,11 @@ static void omap4_hsmmc1_before_set_reg(struct device *dev, int slot,* Assume we power both OMAP VMMC1 (for CMD, CLK, DAT0..3) and the * card with Vcc regulator (from twl4030 or whatever). OMAP has both * 1.8V and 3.0V modes, controlled by the PBIAS register. -* -* In 8-bit modes, OMAP VMMC1A (for DAT4..7) needs a supply, which -* is most naturally TWL VSIM; those pins also use PBIAS. -* -* FIXME handle VMMC1A as needed ... */ reg =omap4_ctrl_pad_readl (control_pbias_offset); reg &= ~(OMAP4_MMC1_PBIASLITE_PWRDNZ_MASK | -OMAP4_MMC1_PWRDNZ_MASK ); +OMAP4_MMC1_PWRDNZ_MASK | +OMAP4_MMC1_PBIASLITE_VMODE_MASK );omap4_ctrl_pad_writel (reg, control_pbias_offset); }@@ -172,12 +168,6 @@ static void omap4_hsmmc1_after_set_reg(struct device *dev, int slot, reg &= ~(OMAP4_MMC1_PWRDNZ_MASK );omap4_ctrl_pad_writel (reg, control_pbias_offset); } - }else { - reg =omap4_ctrl_pad_readl (control_pbias_offset); - reg |= (OMAP4_MMC1_PBIASLITE_PWRDNZ_MASK | -OMAP4_MMC1_PWRDNZ_MASK | -OMAP4_MMC1_PBIASLITE_VMODE_MASK ); -omap4_ctrl_pad_writel (reg, control_pbias_offset); } }Signature · 1 line
1.7.0.4
PATCH 1/2 arm: omap4: hsmmc: Fix Pbias configuration on regulator OFF
Quoted 10 lines · Tony Lindgren
Quoted 4 lines · Balaji T K
MMC1 data line IO's are powered down in before set regulator function. IO's should not be powered ON when regulator is OFF.
Keep the IO's in power pown mode after regulator OFF. Delete incorrect comments which are not applicable for OMAP4.Care to check how this is different from what I added into fixes branch as commit
3fe8df93b0992199e3a0026fc51e90b705f94e40?Is this a separate issue?
Yes.
commit 3fe8df93b fixes USBC1 configuration.
USBC1 IO was configured unnecessarily for MMC IO.
This patch keeps the MMC IO's in power down after regulator OFF otherwise it generates VMODE_ERROR due to mismatch in input (regulator) voltage and MMC IO drive voltage.
Quoted 49 lines
Tony
Quoted 45 lines
Signed-off-by Balaji T K <[email protected]>Signed-off-by Kishore Kadiyala <[email protected]>Reported-by Viswanath Puttagunta <[email protected]>---
?arch/arm/mach-omap2/hsmmc.c | ? 14 ++------------ ?1 files changed, 2 insertions(+), 12 deletions(-)arch/arm/mach-omap2/hsmmc.c +0
-0@@ -129,15 +129,11 @@ static void omap4_hsmmc1_before_set_reg(struct device *dev, int slot,? ? ? ?* Assume we power both OMAP VMMC1 (for CMD, CLK, DAT0..3) and the ? ? ? ?* card with Vcc regulator (from twl4030 or whatever). ?OMAP has both ? ? ? ?* 1.8V and 3.0V modes, controlled by the PBIAS register.
- ? ? ?*
- ? ? ?* In 8-bit modes, OMAP VMMC1A (for DAT4..7) needs a supply, which
- ? ? ?* is most naturally TWL VSIM; those pins also use PBIAS.
- ? ? ?*
- ? ? ?* FIXME handle VMMC1A as needed ...
? ? ? ?*/
? ? ? reg =omap4_ctrl_pad_readl(control_pbias_offset);
? ? ? reg &= ~(OMAP4_MMC1_PBIASLITE_PWRDNZ_MASK |
- ? ? ? ? ? ?OMAP4_MMC1_PWRDNZ_MASK);
+ ? ? ? ? ? ?OMAP4_MMC1_PWRDNZ_MASK|
+ ? ? ? ? ? ?OMAP4_MMC1_PBIASLITE_VMODE_MASK);
? ? ?omap4_ctrl_pad_writel(reg, control_pbias_offset);
?}arch/arm/mach-omap2/hsmmc.c +0
-7@@ -172,12 +168,6 @@ static void omap4_hsmmc1_after_set_reg(struct device *dev, int slot, ? ? ? ? ? ? ? ? ? ? ? reg &= ~(OMAP4_MMC1_PWRDNZ_MASK); ? ? ? ? ? ? ? ? ? ? ? omap4_ctrl_pad_writel(reg, control_pbias_offset); ? ? ? ? ? ? ? } - ? ? } else { - ? ? ? ? ? ? reg = omap4_ctrl_pad_readl(control_pbias_offset); - ? ? ? ? ? ? reg |= (OMAP4_MMC1_PBIASLITE_PWRDNZ_MASK | - ? ? ? ? ? ? ? ? ? ? OMAP4_MMC1_PWRDNZ_MASK | - ? ? ? ? ? ? ? ? ? ? OMAP4_MMC1_PBIASLITE_VMODE_MASK); - ? ? ? ? ? ? omap4_ctrl_pad_writel(reg, control_pbias_offset); ? ? ? } ?} --1.7.0.4
Tony Lindgren
maintainerPATCH 1/2 arm: omap4: hsmmc: Fix Pbias configuration on regulator OFF
Quoted 12 lines · T Krishnamoorthy, Balaji
Quoted 10 lines · Tony Lindgren
Quoted 4 lines · Balaji T K
MMC1 data line IO's are powered down in before set regulator function. IO's should not be powered ON when regulator is OFF.
Keep the IO's in power pown mode after regulator OFF. Delete incorrect comments which are not applicable for OMAP4.Care to check how this is different from what I added into fixes branch as commit
3fe8df93b0992199e3a0026fc51e90b705f94e40?Is this a separate issue?
Quoted 7 lines
Yes.
commit3fe8df93bfixes USBC1 configuration.
USBC1 IO was configured unnecessarily for MMC IO.This patch keeps the MMC IO's in power down after regulator OFF otherwise it generates
VMODE_ERRORdue to mismatch in input (regulator) voltage and MMC IO drive voltage.
OK, can you please refresh it against the current fixes branch?
Thanks,
Tony
PATCH 2/2 arm: omap4: hsmmc: configure SDMMC1_DR0 properly
In reply to Balaji T KFix the typo, instead it should be SDMMC1
USBC1 is not related to MMC1 I/Os
--- arch/arm/mach-omap2/hsmmc.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
arch/arm/mach-omap2/hsmmc.c +1 -1
@@ -495,7 +495,7 @@ void __init omap2_hsmmc_init(struct omap2_hsmmc_info *controllers) OMAP4_SDMMC1_PUSTRENGTH_GRP1_MASK); reg &= ~(OMAP4_SDMMC1_PUSTRENGTH_GRP2_MASK |OMAP4_SDMMC1_PUSTRENGTH_GRP3_MASK ); - reg |= (OMAP4_USBC1_DR0_SPEEDCTRL_MASK | + reg |= (OMAP4_SDMMC1_DR0_SPEEDCTRL_MASK |OMAP4_SDMMC1_DR1_SPEEDCTRL_MASK |OMAP4_SDMMC1_DR2_SPEEDCTRL_MASK );omap4_ctrl_pad_writel (reg, control_mmc1);
Signature · 1 line
1.7.0.4