Browse Source

ARM: OMAP: fix MMC2 loopback clock handling

Currently MMC2 setup code can only enable loopback clock and
relies on reset value for boards that need to have it disabled.
This causes a problem with certain bootloaders that always enable
that clock, resulting with unwanted bootloader dependencies.

Fix this by making it disable the clock if board data says so.

Signed-off-by: Grazvydas Ignotas <notasas@gmail.com>
Acked-by: Igor Grinberg <grinberg@compulab.co.il>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Grazvydas Ignotas 13 years ago
parent
commit
d82e5190da
1 changed files with 5 additions and 4 deletions
  1. 5 4
      arch/arm/mach-omap2/hsmmc.c

+ 5 - 4
arch/arm/mach-omap2/hsmmc.c

@@ -175,11 +175,12 @@ static void hsmmc2_select_input_clk_src(struct omap_mmc_platform_data *mmc)
 {
 {
 	u32 reg;
 	u32 reg;
 
 
-	if (mmc->slots[0].internal_clock) {
-		reg = omap_ctrl_readl(control_devconf1_offset);
+	reg = omap_ctrl_readl(control_devconf1_offset);
+	if (mmc->slots[0].internal_clock)
 		reg |= OMAP2_MMCSDIO2ADPCLKISEL;
 		reg |= OMAP2_MMCSDIO2ADPCLKISEL;
-		omap_ctrl_writel(reg, control_devconf1_offset);
-	}
+	else
+		reg &= ~OMAP2_MMCSDIO2ADPCLKISEL;
+	omap_ctrl_writel(reg, control_devconf1_offset);
 }
 }
 
 
 static void hsmmc2_before_set_reg(struct device *dev, int slot,
 static void hsmmc2_before_set_reg(struct device *dev, int slot,