]> git.dujemihanovic.xyz Git - u-boot.git/commit
mmc: fsl_esdhc_imx: Send 80 clocks before IDLE command
authorYe Li <ye.li@nxp.com>
Tue, 1 Oct 2024 13:07:54 +0000 (21:07 +0800)
committerFabio Estevam <festevam@gmail.com>
Fri, 4 Oct 2024 12:15:15 +0000 (09:15 -0300)
commit51e7c1f822fa222d88d1ee06995cf355542427cc
tree8aaeeca89669d1c29a7be68b8e6a7d19d197a259
parent76332fae769acbba49751827ce126b0cb1014b48
mmc: fsl_esdhc_imx: Send 80 clocks before IDLE command

According to SD and MMC spec, 74 clocks must be sent to device after
power stable. This is need in reinit ops for DM MMC or init ops for
non-DM MMC after power cycle.

So set the INTIA to send 80 clocks in esdhc_init_common and move
its calling from probe to reinit.

However, on 8MQ EVK and 8QXP MEK with some brands of SD cards, sending
80 clocks may not work well.

The root cause is related with power up time.  According to spec, after
power stable, host shall supply at least 74 SD clocks to the SD card with
the maximum of 1ms. However, the power ram up time is related with the
characteristic of SD card. At the moment of sending 74 SD clocks, the
power probably not ram up to the operating level on the problematic
cards. Then cause the cards not ready.

This patch changes to send SD clock with 1ms duration to replace 80
SD clocks (0.2ms at 400Khz clock).
This way meets the spec requirement as well, and adds the margin for
power ram up time to be compatible with the problematic SD cards.
This is also aligned with implementation which has FORCE clock
always on.

Reviewed-and-tested-by: Haibo Chen <haibo.chen@nxp.com>
Signed-off-by: Ye Li <ye.li@nxp.com>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
drivers/mmc/fsl_esdhc_imx.c