mirror of https://gitee.com/openkylin/linux.git
d23029332c
mmc_select_hs400() calls __mmc_switch() which checks the switch is successful using CMD13 (SEND_STATUS). The problem is that it does that using the timing settings of the previous mode. That is prone to error, especially when switching from HS to HS400 because the timing parameters for HS mode are tighter than the timing parameters for HS400 mode. In the case when CMD13 polling is used (i.e. not MMC_CAP_WAIT_WHILE_BUSY) with the switch command, it must be assumed that using different modes on the card and host must work. However in the case when CMD13 polling is not used (i.e. MMC_CAP_WAIT_WHILE_BUSY) mmc_select_hs400() can be made more reliable by setting the host to the correct timing before sending CMD13. This patch does that. Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Cc: <stable@vger.kernel.org> # 4.2+ Tested-by: Alim Akhtar <alim.akhtar@samsung.com> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org> |
||
---|---|---|
.. | ||
Kconfig | ||
Makefile | ||
bus.c | ||
bus.h | ||
core.c | ||
core.h | ||
debugfs.c | ||
host.c | ||
host.h | ||
mmc.c | ||
mmc_ops.c | ||
mmc_ops.h | ||
pwrseq.c | ||
pwrseq.h | ||
pwrseq_emmc.c | ||
pwrseq_simple.c | ||
quirks.c | ||
sd.c | ||
sd.h | ||
sd_ops.c | ||
sd_ops.h | ||
sdio.c | ||
sdio_bus.c | ||
sdio_bus.h | ||
sdio_cis.c | ||
sdio_cis.h | ||
sdio_io.c | ||
sdio_irq.c | ||
sdio_ops.c | ||
sdio_ops.h | ||
slot-gpio.c | ||
slot-gpio.h |