
Hi all,
I have a problem on reading low speed card on my platform. While high speed card were all correct.
However I have only SD 1.0 specification in hand, I'll try to get 3.0 version tomorrow.
But, I've found that in include/mmc.h /* SCR definitions in different words */ #define SD_HIGHSPEED_BUSY 0x00020000 #define SD_HIGHSPEED_SUPPORTED 0x00020000 The both of these 2 defined the same value.
Then I've force the driver/mmc/mmc.c return 0 before checking SD_HIGHSPEED_SUPPORTED bit. (workaround) All operations on low speed card get correct now. The mmcinfo, fatls and fatload works normally like high speed cards.
--- a/drivers/mmc/mmc.c +++ b/drivers/mmc/mmc.c @@ -784,6 +784,7 @@ retry_scr: }
/* If high-speed isn't supported, we return */ + return 0; if (!(__be32_to_cpu(switch_status[3]) & SD_HIGHSPEED_SUPPORTED)) return 0;
Because I have no specification in hand, I cannot check the bit fields and send correct patch if there is a problem until next week. Could someone help to check it before this weekend ?
Thanks.