aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/mmc/core.h
diff options
context:
space:
mode:
authorVincent Yang <vincent.yang.fujitsu@gmail.com>2014-11-21 08:51:40 +0800
committerUlf Hansson <ulf.hansson@linaro.org>2014-11-26 14:31:05 +0100
commitc6eb588028f8f23dae8e26312cf192f365c85b95 (patch)
tree97bc0ab1c2d1f0fb861ec6f736fc8c08ab1a9b72 /include/linux/mmc/core.h
parentmmc: mxs-mmc: Check for clk_prepare_enable() error (diff)
downloadlinux-dev-c6eb588028f8f23dae8e26312cf192f365c85b95.tar.xz
linux-dev-c6eb588028f8f23dae8e26312cf192f365c85b95.zip
mmc: core: hold SD Clock before CMD11 during Signal
Voltage Switch Procedure This patch is to fix an issue found on mb86s7x platforms. [symptom] There are some UHS-1 SD memory cards sometimes cannot be detected correctly, e.g., Transcend 600x SDXC 64GB UHS-1 memory card. During Signal Voltage Switch Procedure, failure to switch is indicated by the card holding DAT[3:0] low. [analysis] According to SD Host Controller Simplified Specification Version 3.00 chapter 3.6.1, the Signal Voltage Switch Procedure should be: (1) Check S18A; (2) Issue CMD11; (3) Check CMD 11 response; (4) Stop providing SD clock; (5) Check DAT[3:0] should be 0000b; (6) Set 1.8V Signal Enable; (7) Wait 5ms; (8) Check 1.8V Signal Enable; (9) Provide SD Clock; (10) Wait 1ms; (11) Check DAT[3:0] should be 1111b; (12) error handling With CONFIG_MMC_CLKGATE=y, sometimes there is one more gating/un-gating SD clock between (2) and (3). In this case, some UHS-1 SD cards will hold DAT[3:0] 0000b at (11) and thus fails Signal Voltage Switch Procedure. [solution] By mmc_host_clk_hold() before CMD11, the additional gating/un-gating SD clock between (2) and (3) can be prevented and thus no failure at (11). It has been verified with many UHS-1 SD cards on mb86s7x platforms and works correctly. Signed-off-by: Vincent Yang <Vincent.Yang@tw.fujitsu.com> Reviewed-by: Johan Rudholm <jrudholm@gmail.com> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Diffstat (limited to 'include/linux/mmc/core.h')
0 files changed, 0 insertions, 0 deletions