linux/drivers/mmc/host
Adrian Hunter 6fe5845642 mmc: sdhci: Fix recovery from tuning timeout
[ Upstream commit 61e53bd004 ]

Clearing the tuning bits should reset the tuning circuit. However there is
more to do. Reset the command and data lines for good measure, and then
for eMMC ensure the card is not still trying to process a tuning command by
sending a stop command.

Note the JEDEC eMMC specification says the stop command (CMD12) can be used
to stop a tuning command (CMD21) whereas the SD specification is silent on
the subject with respect to the SD tuning command (CMD19). Considering that
CMD12 is not a valid SDIO command, the stop command is sent only when the
tuning command is CMD21 i.e. for eMMC. That addresses cases seen so far
which have been on eMMC.

Note that this replaces the commit fe5fb2e3b5 ("mmc: sdhci: Reset cmd and
data circuits after tuning failure") which is being reverted for v4.9+.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Tested-by: Dan O'Donovan <dan@emutex.com>
Cc: stable@vger.kernel.org
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
History 2017-01-15 09:49:50 -05:00
..
android-goldfish.c mmc: remove unnecessary platform_set_drvdata() 2013-05-26 14:23:23 -04:00
atmel-mci-regs.h mmc: atmel-mci: AP700x PDC is not connected to MCI 2012-10-03 10:05:23 -04:00
atmel-mci.c mmc: atmel-mci: fix bad variable type for clkdiv 2015-06-10 13:42:22 -04:00
au1xmmc.c mmc: au1xmmc: fix error return code in au1xmmc_probe() 2014-09-09 13:59:01 +02:00
bfin_sdh.c mmc: bfin_sdh: Move away from using deprecated APIs 2013-10-30 20:26:36 -04:00
cb710-mmc.c mmc: cb710: Move away from using deprecated APIs 2013-10-30 20:26:37 -04:00
cb710-mmc.h mmc: host: use platform_{get,set}_drvdata() 2013-06-27 11:13:02 -04:00
davinci_mmc.c mmc: davinci: Remove redundant of_match_ptr 2014-02-25 15:42:55 -05:00
dw_mmc-exynos.c mmc: dw_mmc: exynos: Staticize dw_mci_exynos_pmops 2014-05-12 18:04:30 -04:00
dw_mmc-k3.c mmc: dw_mmc: fix possible build error 2014-03-03 14:00:56 -05:00
dw_mmc-pci.c mmc: dw_mmc-pci: Remove superflous #else condition on CONFIG_PM_SLEEP 2014-09-09 13:59:05 +02:00
dw_mmc-pltfm.c mmc: dw_mmc: move rockchip related code to a separate file 2014-09-09 13:59:16 +02:00
dw_mmc-pltfm.h mmc: remove use of __devexit 2012-11-28 12:28:18 -08:00
dw_mmc-rockchip.c mmc: dw_mmc: move rockchip related code to a separate file 2014-09-09 13:59:16 +02:00
dw_mmc.c mmc: dw_mmc: avoid write to CDTHRCTL on older versions 2015-01-08 10:30:16 -08:00
dw_mmc.h mmc: dw_mmc: Support voltage changes 2014-09-09 13:59:18 +02:00
jz4740_mmc.c mmc: remove .owner field for drivers using module_platform_driver 2014-09-09 13:59:04 +02:00
Kconfig mmc: dw_mmc: move rockchip related code to a separate file 2014-09-09 13:59:16 +02:00
Makefile mmc: dw_mmc: move rockchip related code to a separate file 2014-09-09 13:59:16 +02:00
mmc_spi.c mmc: mmc_spi: Add Card Detect comments and fix CD GPIO case 2016-04-18 08:49:32 -04:00
mmci.c mmc: mmci: fix an ages old detection error 2016-02-09 22:56:51 -05:00
mmci.h mmc: mmci: Add Qcom specific rx_fifocnt logic. 2014-07-09 11:25:57 +02:00
mmci_qcom_dml.c mmc: mmci: Add qcom dml support to the driver. 2014-09-09 13:58:46 +02:00
mmci_qcom_dml.h mmc: mmci: Add qcom dml support to the driver. 2014-09-09 13:58:46 +02:00
moxart-mmc.c mmc: remove .owner field for drivers using module_platform_driver 2014-09-09 13:59:04 +02:00
msm_sdcc.c mmc: msm_sdcc: Move away from using deprecated APIs 2013-10-30 20:26:41 -04:00
msm_sdcc.h mmc: msm_sdcc: Use MCI_INT_MASK0 for PIO interrupts 2011-10-26 15:43:37 -04:00
mvsdio.c mmc: mvsdio: avoid compiler warning 2014-06-12 10:50:27 +02:00
mvsdio.h mmc: SDIO driver for Marvell SoCs 2009-03-24 21:30:03 +01:00
mxcmmc.c mmc: remove .owner field for drivers using module_platform_driver 2014-09-09 13:59:04 +02:00
mxs-mmc.c mmc: remove .owner field for drivers using module_platform_driver 2014-09-09 13:59:04 +02:00
of_mmc_spi.c mmc: mmc_spi: Support CD/RO GPIOs 2013-08-24 23:45:22 -04:00
omap.c mmc: remove .owner field for drivers using module_platform_driver 2014-09-09 13:59:04 +02:00
omap_hsmmc.c mmc: omap_hsmmc: Fix UHS card with DDR50 support 2015-01-08 10:30:16 -08:00
pxamci.c mmc: pxamci: prepare and unprepare the clocks 2014-09-09 13:59:24 +02:00
pxamci.h [ARM] pxa: mmc: add 1st host controller support for pxa3xx 2008-01-26 15:07:53 +00:00
rtsx_pci_sdmmc.c mmc: rtsx_pci: Set power related cap2 macros 2014-09-24 11:20:16 +02:00
rtsx_usb_sdmmc.c mmc: rtsx_usb_sdmmc: Handle runtime PM while changing the led 2016-11-23 21:30:37 -05:00
s3cmci.c mmc: Convert pr_warning to pr_warn 2014-09-24 10:13:09 +02:00
s3cmci.h mmc: s3cmci: port DMA code to dmaengine API 2014-07-09 11:26:13 +02:00
sdhci-acpi.c mmc: sdhci-acpi: Remove MMC_CAP_BUS_WIDTH_TEST for Intel controllers 2016-06-06 19:11:11 -04:00
sdhci-bcm-kona.c mmc, sdhci, bcm-kona, LLVMLinux: Remove use of __initconst 2014-10-03 14:33:46 +02:00
sdhci-bcm2835.c mmc: remove .owner field for drivers using module_platform_driver 2014-09-09 13:59:04 +02:00
sdhci-cns3xxx.c mmc: remove .owner field for drivers using module_platform_driver 2014-09-09 13:59:04 +02:00
sdhci-dove.c mmc: remove .owner field for drivers using module_platform_driver 2014-09-09 13:59:04 +02:00
sdhci-esdhc-imx.c mmc: sdhci-esdhc-imx: set the correct max timeout value for uSDHC 2014-09-09 13:59:21 +02:00
sdhci-esdhc.h mmc: sdhci-esdhc: Make 8BIT bus work 2015-08-27 13:25:44 -04:00
sdhci-msm.c mmc: Consolidate emmc tuning blocks 2014-09-23 09:13:19 +02:00
sdhci-of-arasan.c mmc: remove .owner field for drivers using module_platform_driver 2014-09-09 13:59:04 +02:00
sdhci-of-esdhc.c mmc: remove .owner field for drivers using module_platform_driver 2014-09-09 13:59:04 +02:00
sdhci-of-hlwd.c mmc: remove .owner field for drivers using module_platform_driver 2014-09-09 13:59:04 +02:00
sdhci-pci-data.c mmc: sdhci-pci: add platform data 2012-01-11 23:58:47 -05:00
sdhci-pci-o2micro.c mmc: sdhci-pci-o2micro: Fix Dell E5440 issue 2015-01-08 10:30:16 -08:00
sdhci-pci-o2micro.h mmc: sdhci-pci-o2micro: Add SeaBird SeaEagle SD3 support 2014-05-22 08:40:44 -04:00
sdhci-pci.c mmc: sdhci-pci: Fix Braswell eMMC timeout clock frequency 2014-10-03 14:25:35 +02:00
sdhci-pci.h mmc: sdhci-pci: Add Bay Trail and Braswell SD card detect 2014-10-03 14:24:52 +02:00
sdhci-pltfm.c mmc: sdhci-pltfm: Do not use parent as the host's device 2014-09-09 13:58:58 +02:00
sdhci-pltfm.h mmc: sdhci-pltfm: export pltfm suspend/resume api 2014-01-13 12:48:06 -05:00
sdhci-pxav2.c mmc: remove .owner field for drivers using module_platform_driver 2014-09-09 13:59:04 +02:00
sdhci-pxav3.c mmc: sdhci-pxav3: do the mbus window configuration after enabling clocks 2015-07-05 10:13:00 -04:00
sdhci-s3c-regs.h mmc: sdhci-s3c: remove platform dependencies 2013-04-19 13:51:23 +02:00
sdhci-s3c.c mmc: remove .owner field for drivers using module_platform_driver 2014-09-09 13:59:04 +02:00
sdhci-sirf.c mmc: don't request CD IRQ until mmc_start_host() 2014-09-23 09:01:36 +02:00
sdhci-spear.c mmc: remove .owner field for drivers using module_platform_driver 2014-09-09 13:59:04 +02:00
sdhci-st.c mmc: sdhci-st: Intial support for ST SDHCI controller 2014-07-10 09:11:18 +02:00
sdhci-tegra.c mmc: remove .owner field for drivers using module_platform_driver 2014-09-09 13:59:04 +02:00
sdhci.c mmc: sdhci: Fix recovery from tuning timeout 2017-01-15 09:49:50 -05:00
sdhci.h mmc: sdhci: execute tuning when device is not busy 2014-09-24 11:03:17 +02:00
sdricoh_cs.c mmc: sdricoh_cs: Move away from using deprecated APIs 2013-10-30 20:28:32 -04:00
sh_mmcif.c mmc: sh_mmcif: Fix timeout value for command request 2015-06-09 13:43:39 -04:00
sh_mobile_sdhi.c mmc: use .multi_io_quirk on sh_mobile 2014-09-09 14:15:42 +02:00
sunxi-mmc.c mmc: sunxi: Use devm_reset_control_get_optional() for reset control 2015-05-17 19:11:53 -04:00
tifm_sd.c mmc: Convert pr_warning to pr_warn 2014-09-24 10:13:09 +02:00
tmio_mmc.c mmc: tmio_mmc: Fixup system PM suspend lock-up 2014-09-09 13:59:12 +02:00
tmio_mmc.h mmc: tmio: Remove library functions for system PM 2014-09-09 13:59:12 +02:00
tmio_mmc_dma.c mmc: tmio: remove Renesas specific #ifdef 2014-09-09 13:59:15 +02:00
tmio_mmc_pio.c mmc: don't request CD IRQ until mmc_start_host() 2014-09-23 09:01:36 +02:00
usdhi6rol0.c mmc: usdhi6rol0: fix compiler warnings 2014-06-12 10:38:50 +02:00
ushc.c mmc: ushc: Fix incorrect parameter in sizeof 2014-02-25 15:42:20 -05:00
via-sdmmc.c mmc: via-sdmmc: Move away from using deprecated APIs 2013-10-30 20:28:36 -04:00
vub300.c mmc: vub300: Move away from using deprecated APIs 2013-10-30 20:26:43 -04:00
wbsd.c mmc: Convert pr_warning to pr_warn 2014-09-24 10:13:09 +02:00
wbsd.h mmc: update header file paths 2007-07-26 01:53:31 +02:00
wmt-sdmmc.c mmc: wmt-sdmmc: Remove deprecated IRQF_DISABLED 2014-07-09 11:26:08 +02:00