Re: [PATCH] ARM: OMAP: fix erroneous mmc2 clock change on mmc3 setup

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Jan 27, 2012 at 1:19 AM, Tony Lindgren <tony@xxxxxxxxxxx> wrote:
> * Grazvydas Ignotas <notasas@xxxxxxxxx> [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@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;
>
> 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@xxxxxxxxxxxxxxx
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html

-- 
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


[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux