linux/drivers/mmc/core
Adrian Hunter 51b12f7764 mmc: mmc: Fix HS setting in mmc_select_hs400()
mmc_select_hs400() begins with the card and host in HS200 mode.
Therefore, any commands sent to the card should use HS200 timing.
It is incorrect to set the host to High Speed (HS) timing before
sending the switch command.  Doing so is unreliable because
the timing parameters for HS mode are tighter than the timing
parameters for HS200 mode.  Thus the HS timings should be set
only after the card has switched mode.

However, it is not unreasonable first to reduce the frequency to
the HS mode frequency, which should make the switch command and
subsequent CMD13 commands more reliable.

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>
2015-11-09 13:16:20 +01:00
..
bus.c Revert "mmc: core: Convert mmc_driver to device_driver" 2015-04-17 11:48:01 +02:00
bus.h mmc: rename dev_to_mmc_card() to mmc_dev_to_card() 2010-10-23 21:11:12 +08:00
core.c mmc: core: Add mmc_regulator_set_vqmmc() 2015-10-26 16:00:10 +01:00
core.h mmc: core: Remove MMC_CLKGATE 2015-10-26 16:00:09 +01:00
debugfs.c mmc: core: Remove MMC_CLKGATE 2015-10-26 16:00:09 +01:00
host.c mmc: core: Add DT bindings for eMMC hardware reset support 2015-10-27 10:21:15 +01:00
host.h mmc: host: Add facility to support re-tuning 2015-06-01 09:06:53 +02:00
Kconfig mmc: core: Remove MMC_CLKGATE 2015-10-26 16:00:09 +01:00
Makefile mmc: pwrseq: add driver for emmc hardware reset 2015-02-04 09:45:09 +01:00
mmc_ops.c mmc: mmc: extend the mmc_send_tuning() 2015-10-27 10:38:41 +01:00
mmc_ops.h mmc: core: Convert __mmc_switch() into an internal core function 2015-10-26 15:59:54 +01:00
mmc.c mmc: mmc: Fix HS setting in mmc_select_hs400() 2015-11-09 13:16:20 +01:00
pwrseq_emmc.c mmc: pwrseq: Use highest priority for eMMC restart handler 2015-10-27 11:11:06 +01:00
pwrseq_simple.c mmc: pwrseq_simple: use GPIO descriptors array API 2015-10-26 15:59:59 +01:00
pwrseq.c mmc: pwrseq: Fix error code propagation in mmc_pwrseq_simple_alloc() 2015-04-17 10:17:19 +02:00
pwrseq.h mmc: pwrseq: simplify alloc/free hooks 2015-03-23 14:13:42 +01:00
quirks.c mmc: core: Remove MMC_CLKGATE 2015-10-26 16:00:09 +01:00
sd_ops.c mmc: sd: warn if card stays busy during init 2014-07-09 11:26:07 +02:00
sd_ops.h mmc: add erase, secure erase, trim and secure trim operations 2010-08-12 08:43:30 -07:00
sd.c mmc: skip reclaiming host on mmc_add_card() error 2015-10-26 16:00:14 +01:00
sd.h mmc: drop the speed mode of card's state 2014-05-12 18:05:53 -04:00
sdio_bus.c mmc: core: Attach PM domain prior probing of SDIO func driver 2015-06-04 10:03:51 +02:00
sdio_bus.h
sdio_cis.c mmc: sdio: Change pr_warning to pr_warn_ratelimited 2012-07-22 15:25:48 -04:00
sdio_cis.h
sdio_io.c mmc: sdio: Use multiple scatter/gather list 2012-12-06 13:54:43 -05:00
sdio_irq.c mmc: core: Remove MMC_CLKGATE 2015-10-26 16:00:09 +01:00
sdio_ops.c mmc: sdio: Use multiple scatter/gather list 2012-12-06 13:54:43 -05:00
sdio_ops.h mmc: Add mmc_is_io_op helper function 2015-10-26 16:00:01 +01:00
sdio.c mmc: core: Remove MMC_CLKGATE 2015-10-26 16:00:09 +01:00
slot-gpio.c mmc: slot-gpio: Allow host driver to provide isr for card-detect interrupts 2015-01-19 09:56:29 +01:00
slot-gpio.h mmc: slot-gpio: Make mmc_gpio_alloc() available for MMC core 2015-01-19 09:56:17 +01:00