Hi Tony, Would be nice to have this for -rc as this used to work several releases back when hsmmc23_before_set_reg() was checking for a regulator, which wasn't set for MMC3 so the function would return early, not causing the problem it causes now. On Sun, Dec 18, 2011 at 2:35 AM, Grazvydas Ignotas <notasas@xxxxxxxxx> wrote: > hsmmc23_before_set_reg() can set MMCSDIO2ADPCLKISEL bit, which > enables internal clock for MMC2. Currently this function is also called > by code handling MMC3, and if .internal_clock is set in platform data > (by default it currently is), it will set MMCSDIO2ADPCLKISEL for MMC2 > instead of MMC3 (MMC3 doesn't have such bit so nothing actually needs to > be done). This breaks 2nd SD slot on pandora. > > Fix this by changing hsmmc23_before_set_reg() to only handle MMC2. > Note that this removes .remux() call for MMC3, but no board currently > needs it and it's also not called for MMC4 and MMC5. > > Signed-off-by: Grazvydas Ignotas <notasas@xxxxxxxxx> > --- > applies both on mainline and hsmmc branch. > > arch/arm/mach-omap2/hsmmc.c | 7 +++---- > 1 files changed, 3 insertions(+), 4 deletions(-) > > diff --git a/arch/arm/mach-omap2/hsmmc.c b/arch/arm/mach-omap2/hsmmc.c > index f4a1020..d90ac08 100644 > --- a/arch/arm/mach-omap2/hsmmc.c > +++ b/arch/arm/mach-omap2/hsmmc.c > @@ -171,7 +171,7 @@ static void omap4_hsmmc1_after_set_reg(struct device *dev, int slot, > } > } > > -static void hsmmc23_before_set_reg(struct device *dev, int slot, > +static void hsmmc2_before_set_reg(struct device *dev, int slot, > int power_on, int vdd) > { > struct omap_mmc_platform_data *mmc = dev->platform_data; > @@ -378,14 +378,13 @@ static int __init omap_hsmmc_pdata_init(struct omap2_hsmmc_info *c, > c->caps &= ~MMC_CAP_8_BIT_DATA; > c->caps |= MMC_CAP_4_BIT_DATA; > } > - /* FALLTHROUGH */ > - case 3: > if (mmc->slots[0].features & HSMMC_HAS_PBIAS) { > /* off-chip level shifting, or none */ > - mmc->slots[0].before_set_reg = hsmmc23_before_set_reg; > + mmc->slots[0].before_set_reg = hsmmc2_before_set_reg; > mmc->slots[0].after_set_reg = NULL; > } > break; > + case 3: > case 4: > case 5: > mmc->slots[0].before_set_reg = NULL; > -- > 1.7.0.4 > -- Gražvydas -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html