Hi,
I have a 26MHz SD card, the mmc driver with u-boot source had incorrectly
setting it to 50MHz tran_speed and caused unreliable reading and writing on the
SD card.
The variable "mmc->card_caps" had correctly described my SD card with value
0x05. i.e. 4 bit, MMC_MODE_HS, however, in function "static int
mmc_startup(struct mmc *mmc)" with the blow section of code,
"
If (mmc->card_caps & MMC_MODE_HS)
mmc->tran_speed = 50000000;
else
mmc->tran_speed = 25000000;
"
This section of codes wrongly set the "mmc->tran_speed" to 50MHz without
considering there could be two types of high speed, that is 52M, and 26M. and
then later on calling the "mmc_set_clock" function with 50MHZ.
Suggested change is given below:
"
If (mmc->card_caps & MMC_MODE_HS) {
If (mmc->card_caps & (MMC_MODE_HS_52MHz+MMC_MODE_DDR_52MHz))
mmc->tran_speed = 50000000;
else
mmc->tran_speed = 25000000;
}
"
Cheers,
Damien
_______________________________________________
U-Boot mailing list
[email protected]
http://lists.denx.de/mailman/listinfo/u-boot