
Hi Andy,
2011/11/26 Andy Fleming afleming@gmail.com
On Thu, Nov 17, 2011 at 3:31 AM, Macpaul Lin macpaul@andestech.com wrote:
Add a host capability checking to avoid the mmc stack switch the card to HIGHSPEED mode when the card supports HIGHSPEED while the host doesn't.
if (!((mmc->host_caps & MMC_MODE_HS_52MHz) ||
(mmc->host_caps & MMC_MODE_HS)))
return 0;
I wrote this is because I've thought that SD cards usually work at 50MHz when they under high speed mode (MMC_MODE_HS), and MMC cards usually work at 52MHz when they are under high speed mode. I'm not sure if one controller support HS_52MHz for MMC cards will definitely support SD cards under 50MHz. If I'm wrong for the above please correct me.
Hence I wrote this to force them working under low speed to avoid problem occur.
But I think you're correct, we should use "&&" logic here until there is really a problem for the unbelievable situation I mentioned above that happened. :-p
Isn't this the wrong logic? It seems like you don't want to switch unless both support high speed. But this logic says to switch if either one does.
Shouldn't it be:
if (!((mmc->host_caps & MMC_MODE_HS_52MHz) && (mmc->host_caps & MMC_MODE_HS))) return 0;
?
I'll send patch v2 by using your logic later. Thanks!