ARM: OMAP: fix MMC2 loopback clock handling
authorGrazvydas Ignotas <notasas@gmail.com>
Wed, 11 Jan 2012 14:03:48 +0000 (16:03 +0200)
committerGrazvydas Ignotas <notasas@gmail.com>
Fri, 13 Jan 2012 15:09:47 +0000 (17:09 +0200)
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 in unwanted bootloader dependencies.
Fix this by making it disable the clock if board data says so.

arch/arm/mach-omap2/hsmmc.c

index d90ac08..616523a 100644 (file)
@@ -180,14 +180,14 @@ static void hsmmc2_before_set_reg(struct device *dev, int slot,
                mmc->slots[0].remux(dev, slot, power_on);
 
        if (power_on) {
-               /* Only MMC2 supports a CLKIN */
-               if (mmc->slots[0].internal_clock) {
-                       u32 reg;
+               u32 reg;
 
-                       reg = omap_ctrl_readl(control_devconf1_offset);
+               reg = omap_ctrl_readl(control_devconf1_offset);
+               if (mmc->slots[0].internal_clock)
                        reg |= OMAP2_MMCSDIO2ADPCLKISEL;
-                       omap_ctrl_writel(reg, control_devconf1_offset);
-               }
+               else
+                       reg &= ~OMAP2_MMCSDIO2ADPCLKISEL;
+               omap_ctrl_writel(reg, control_devconf1_offset);
        }
 }