[PATCH] ARM: OMAP: fix erroneous mmc2 clock change on mmc3 setup
Grazvydas Ignotas
notasas at gmail.com
Thu Jan 26 18:37:05 EST 2012
On Fri, Jan 27, 2012 at 1:19 AM, Tony Lindgren <tony at atomide.com> wrote:
> * Grazvydas Ignotas <notasas at gmail.com> [111217 16:03]:
>> 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 at gmail.com>
>> ---
>> 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;
>
> This hunk above changing the function name seems to be a typo?
No it's not, this function is changing MMC2 clock source and is no
longer called for MMC3 after this patch (the call for MMC3 was the
problem), so it loses hsmmc23 name.
>> @@ -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
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
>> the body of a message to majordomo at vger.kernel.org
>> More majordomo info at http://vger.kernel.org/majordomo-info.html
--
Gražvydas
More information about the linux-arm-kernel
mailing list