[U-Boot] How to reduce SDcard speed in u-boot

Marco Cavallini cavallini.koan at gmail.com
Mon Mar 30 17:32:02 CEST 2015


Hello,
I am probably working on a 'buggy hardware' based on i.MX6 that isn't
able to manage a SDcard speed properly.
I mean, u-boot starts, but as soon as I try to perform a fatload if
the uImage the command won't work properly.
I had the possibility to test the SoM on another carrier with a
different layout and a different microSD connector and it works at
every boot.
The quick and dirty hack I found is to modify sd_switch() in
drivers/mmc/mmc.c in this way

/*
 * Reduce SD/MMC speed
 * u-boot> mmc info
 * before : Tran Speed: 50000000
 * after   : Tran Speed: 25000000
 */
        printf("*** Skip support SD_HIGHSPEED in sd_change_freq\n") ;
        return 0;

just before

    /* If high-speed isn't supported, we return */
    if (!(__be32_to_cpu(switch_status[3]) & SD_HIGHSPEED_SUPPORTED))
        return 0;

the problem is that on 80% of the carrier boards the problem is still present.
My questions are:
1. is this hack the best solution in this case or can you suggest me
another better way to proceed?
2. would be possible to reduce the speed more than this and how?

thank you in advance
--
Marco


More information about the U-Boot mailing list