[U-Boot] [RFC] [MMC] Is the HIGH_SPEED_SUPPORT bit checked wrong in mmc.c?

Macpaul Lin macpaul at gmail.com
Fri Nov 18 09:51:31 CET 2011


Hi Andy,

2011/11/9 Andy Fleming <afleming at gmail.com>:
> On Tue, Nov 8, 2011 at 3:15 AM, Macpaul Lin <macpaul at gmail.com> wrote:
>> Hi all,
>>
> [...]
>
>
> That sounds good to me.
>
> Andy
>

               if (mmc->card_caps & MMC_MODE_HS)
                       mmc_set_clock(mmc, 50000000);
               else
                       mmc_set_clock(mmc, 25000000);

On my platform, I found the frequency related to HIGHSPEED to be set
with mmc_set_clock seem not related to if the card really switched to high
speed mode. It is weird but it looks works fine if I forced the card
in low speed
but set 50MHz to controller.

The only problem I've found is if the host doesn't afford HIGHSPEED capability
even the card dose, the mmc should not send SD_SWITCH command to card
to make the card switch to high speed. Under this circumstance, the host and
the card will run in different mode then lead problem when data transaction
even the host could provide 50MHz.

I've send the fix patch "mmc: add host_caps checking avoid switch card
improperly"
to avoid this problem.
http://patchwork.ozlabs.org/patch/126164/

I also send a patch about new fix (PATCH v3) of the ftsdc010
controller to force the host capability.
http://patchwork.ozlabs.org/patch/126166/

I think this is enough for the RFC because I cannot reproduce the
problem related to
clock misconfiguration (25MHz, 50MHz) with my environment.

Thanks.

-- 
Best regards,
Macpaul Lin


More information about the U-Boot mailing list