
Hi Andy,
2011/11/9 Andy Fleming afleming@gmail.com:
On Tue, Nov 8, 2011 at 3:15 AM, Macpaul Lin macpaul@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.