linux-stable/drivers/mmc/host
Romain Naour a433300285 mmc: sdhci-omap: re-tuning is needed after a pm transition to support emmc HS200 mode
commit f9e2a5b00a upstream.

"PM runtime functions" was been added in sdhci-omap driver in commit
f433e8aac6 ("mmc: sdhci-omap: Implement PM runtime functions") along
with "card power off and enable aggressive PM" in commit 3edf588e7f
("mmc: sdhci-omap: Allow SDIO card power off and enable aggressive PM").

Since then, the sdhci-omap driver doesn't work using mmc-hs200 mode
due to the tuning values being lost during a pm transition.

As for the sdhci_am654 driver, request a new tuning sequence before
suspend (sdhci_omap_runtime_suspend()), otherwise the device will
trigger cache flush error:

  mmc1: cache flush error -110 (ETIMEDOUT)
  mmc1: error -110 doing aggressive suspend

followed by I/O errors produced by fdisk -l /dev/mmcblk1boot1:

  I/O error, dev mmcblk1boot0, sector 64384 op 0x0:(READ) flags 0x80700 phys_seg 1
  prio class 2
  I/O error, dev mmcblk1boot1, sector 64384 op 0x0:(READ) flags 0x80700 phys_seg 1
  prio class 2
  I/O error, dev mmcblk1boot1, sector 64384 op 0x0:(READ) flags 0x0 phys_seg 1
  prio class 2
  Buffer I/O error on dev mmcblk1boot1, logical block 8048, async page read
  I/O error, dev mmcblk1boot0, sector 64384 op 0x0:(READ) flags 0x0 phys_seg 1
  prio class 2
  Buffer I/O error on dev mmcblk1boot0, logical block 8048, async page read

Don't re-tune if auto retuning is supported in HW (when SDHCI_TUNING_MODE_3
is available).

Link: https://lore.kernel.org/all/2e5f1997-564c-44e4-b357-6343e0dae7ab@smile.fr
Fixes: f433e8aac6 ("mmc: sdhci-omap: Implement PM runtime functions")
Signed-off-by: Romain Naour <romain.naour@skf.com>
Reviewed-by: Tony Lindgren <tony@atomide.com>
Acked-by: Adrian Hunter <adrian.hunter@intel.com>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/20240315234444.816978-1-romain.naour@smile.fr
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2024-04-03 15:19:48 +02:00
..
Kconfig mmc: sdhci_omap: Fix TI SoC dependencies 2024-01-25 15:27:38 -08:00
Makefile mmc: Add driver for LiteX's LiteSDCard interface 2022-02-28 13:06:21 +01:00
alcor.c mmc: alcor: fix return value check of mmc_add_host() 2022-12-31 13:32:23 +01:00
atmel-mci.c mmc: atmel-mci: fix race between stop command and start of next command 2023-03-22 13:33:53 +01:00
au1xmmc.c mmc: au1xmmc: Fix an error handling path in au1xmmc_probe() 2022-09-14 11:53:47 +02:00
bcm2835.c mmc: bcm2835: fix deferred probing 2023-06-28 11:12:26 +02:00
cavium-octeon.c mmc: cavium-octeon: Add of_node_put() when breaking out of loop 2022-07-21 18:02:55 +02:00
cavium-thunderx.c mmc: cavium-thunderx: Add of_node_put() when breaking out of loop 2022-07-21 18:03:08 +02:00
cavium.c
cavium.h
cb710-mmc.c
cb710-mmc.h
cqhci-core.c mmc: cqhci: Fix task clearing in CQE error recovery 2023-12-08 08:51:13 +01:00
cqhci-crypto.c
cqhci-crypto.h
cqhci.h
davinci_mmc.c mmc: davinci_mmc: Handle error for clk_enable 2022-03-15 10:29:53 +01:00
dw_mmc-bluefield.c
dw_mmc-exynos.c mmc: dw_mmc: exynos: Obviously always return success in remove callback 2022-07-12 12:25:37 +02:00
dw_mmc-exynos.h
dw_mmc-hi3798cv200.c mmc: dw_mmc: hi3789cv200: Obviously always return success in remove callback 2022-07-12 12:25:37 +02:00
dw_mmc-k3.c
dw_mmc-pci.c
dw_mmc-pltfm.c
dw_mmc-pltfm.h
dw_mmc-rockchip.c mmc: dw_mmc: rockchip: Obviously always return success in remove callback 2022-07-12 12:25:38 +02:00
dw_mmc.c treewide: use prandom_u32_max() when possible, part 1 2022-10-11 17:42:55 -06:00
dw_mmc.h mmc: dw_mmc: Support setting f_min from host drivers 2022-03-07 12:56:38 +01:00
jz4740_mmc.c mmc: jz4740: Work around bug on JZ4760(B) 2023-02-22 12:59:47 +01:00
litex_mmc.c mmc: litex_mmc: set PROBE_PREFER_ASYNCHRONOUS 2023-06-28 11:12:25 +02:00
meson-gx-mmc.c mmc: meson-gx: Remove setting of CMD_CFG_ERROR 2023-11-28 17:07:10 +00:00
meson-mx-sdhc-clkc.c mmc: meson-mx-sdhc: Drop unused MESON_SDHC_NUM_BUILTIN_CLKS macro 2021-12-20 11:19:01 +01:00
meson-mx-sdhc-mmc.c mmc: meson-mx-sdhc: Fix initialization frozen issue 2024-01-10 17:10:36 +01:00
meson-mx-sdhc.h
meson-mx-sdio.c mmc: meson-mx-sdio: add IRQ check 2021-12-21 13:22:34 +01:00
mmc_hsq.c mmc: hsq: Fix data stomping during mmc recovery 2022-09-27 12:38:29 +02:00
mmc_hsq.h
mmc_spi.c mmc: mmc_spi: remove custom DMA mapped buffers 2024-01-31 16:17:01 -08:00
mmci.c mmc: mmci: Set PROBE_PREFER_ASYNCHRONOUS 2023-07-19 16:22:09 +02:00
mmci.h
mmci_qcom_dml.c
mmci_stm32_sdmmc.c mmc: mmci: stm32: fix DMA API overlapping mappings warning 2024-03-06 14:45:11 +00:00
moxart-mmc.c mmc: moxart: read scr register without changing byte order 2023-08-16 18:27:21 +02:00
mtk-sd.c mmc: mtk-sd: Use readl_poll_timeout_atomic in msdc_reset_hw 2023-10-25 12:03:13 +02:00
mvsdio.c mmc: mvsdio: fix deferred probing 2023-06-28 11:12:30 +02:00
mvsdio.h
mxcmmc.c mmc: mxcmmc: fix return value check of mmc_add_host() 2022-12-31 13:32:23 +01:00
mxs-mmc.c
of_mmc_spi.c mmc: mmc_spi: parse speed mode options 2022-04-26 14:05:19 +02:00
omap.c mmc: omap: fix deferred probing 2023-06-28 11:12:30 +02:00
omap_hsmmc.c mmc: omap_hsmmc: fix deferred probing 2023-06-28 11:12:30 +02:00
owl-mmc.c mmc: owl: fix deferred probing 2023-06-28 11:12:30 +02:00
pxamci.c mmc: pxamci: fix return value check of mmc_add_host() 2022-12-31 13:32:24 +01:00
pxamci.h
renesas_sdhi.h mmc: renesas_sdhi: add quirk for broken register layout 2022-12-31 13:33:04 +01:00
renesas_sdhi_core.c mmc: renesas_sdhi: register irqs before registering controller 2023-09-13 09:43:03 +02:00
renesas_sdhi_internal_dmac.c mmc: renesas_sdhi: add quirk for broken register layout 2022-12-31 13:33:04 +01:00
renesas_sdhi_sys_dmac.c
rtsx_pci_sdmmc.c mmc: rtsx_pci: fix return value check of mmc_add_host() 2022-12-31 13:32:24 +01:00
rtsx_usb_sdmmc.c mmc: rtsx_usb_sdmmc: fix return value check of mmc_add_host() 2022-12-31 13:32:24 +01:00
s3cmci.c
s3cmci.h
sdhci-acpi.c mmc: sdhci-acpi: fix deferred probing 2023-06-28 11:12:30 +02:00
sdhci-bcm-kona.c treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_30.RULE (part 2) 2022-06-10 14:51:35 +02:00
sdhci-brcmstb.c mmc: sdhci-brcmstb: Fix SDHCI_RESET_ALL for CQHCI 2022-11-07 13:33:09 +01:00
sdhci-cadence.c
sdhci-cns3xxx.c
sdhci-cqhci.h mmc: cqhci: Provide helper for resetting both SDHCI and CQHCI 2022-11-07 13:28:47 +01:00
sdhci-dove.c
sdhci-esdhc-imx.c mmc: sdhci-esdhc-imx: improve ESDHC_FLAG_ERR010450 2023-09-23 11:11:02 +02:00
sdhci-esdhc-mcf.c
sdhci-esdhc.h
sdhci-iproc.c treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_30.RULE (part 2) 2022-06-10 14:51:35 +02:00
sdhci-milbeaut.c
sdhci-msm.c mmc: sdhci-msm: Disable broken 64-bit DMA on MSM8916 2023-06-28 11:12:25 +02:00
sdhci-of-arasan.c mmc: sdhci-of-arasan: Fix SDHCI_RESET_ALL for CQHCI 2022-11-07 13:28:47 +01:00
sdhci-of-aspeed-test.c mmc: sdhci-of-aspeed: test: Use kunit_test_suite() macro 2022-07-11 17:13:32 -06:00
sdhci-of-aspeed.c mmc: sdhci-of-aspeed: test: Use kunit_test_suite() macro 2022-07-11 17:13:32 -06:00
sdhci-of-at91.c mmc: sdhci-of-at91: fix set_uhs_signaling rewriting of MC1R 2022-07-12 12:42:37 +02:00
sdhci-of-dwcmshc.c mmc: sdhci-of-dwcmshc: Re-enable support for the BlueField-3 SoC 2022-08-15 19:31:04 +02:00
sdhci-of-esdhc.c mmc: sdhci-of-esdhc: fix quirk to ignore command inhibit for data 2023-05-11 23:03:11 +09:00
sdhci-of-hlwd.c
sdhci-of-sparx5.c
sdhci-omap.c mmc: sdhci-omap: re-tuning is needed after a pm transition to support emmc HS200 mode 2024-04-03 15:19:48 +02:00
sdhci-pci-arasan.c
sdhci-pci-core.c mmc: sdhci-pci: Fix possible memory leak caused by missing pci_dev_put() 2022-11-16 17:00:39 +01:00
sdhci-pci-dwc-mshc.c
sdhci-pci-gli.c mmc: sdhci-pci-gli: Disable LPM during initialization 2023-12-08 08:51:13 +01:00
sdhci-pci-o2micro.c mmc: sdhci-pci-o2micro: Fix a warm reboot issue that disk can't be detected by BIOS 2024-02-23 09:12:45 +01:00
sdhci-pci.h mmc: sdhci-pci: Add PCI ID for Intel ADL 2021-12-14 21:35:25 +01:00
sdhci-pic32.c
sdhci-pltfm.c
sdhci-pltfm.h
sdhci-pxav2.c
sdhci-pxav3.c
sdhci-s3c.c
sdhci-spear.c mmc: sdhci-spear: fix deferred probing 2023-06-28 11:12:25 +02:00
sdhci-sprd.c mmc: sdhci-sprd: Fix eMMC init failure after hw reset 2024-01-10 17:10:36 +01:00
sdhci-st.c mmc: sdhci-st: Obviously always return success in remove callback 2022-07-12 12:25:38 +02:00
sdhci-tegra.c mmc: sdhci-tegra: Issue CMD and DAT resets together 2022-12-31 13:33:04 +01:00
sdhci-xenon-phy.c mmc: sdhci-xenon: fix PHY init clock stability 2024-03-06 14:45:11 +00:00
sdhci-xenon.c Revert "mmc: sdhci-xenon: fix annoying 1.8V regulator warning" 2022-04-04 12:17:46 +02:00
sdhci-xenon.h
sdhci.c mmc: sdhci: fix DMA configure compatibility issue when 64bit DMA mode is used. 2023-07-19 16:22:09 +02:00
sdhci.h mmc: sdhci-tegra: Issue CMD and DAT resets together 2022-12-31 13:33:04 +01:00
sdhci_am654.c mmc: sdhci_am654: fix start loop index for TAP value parsing 2023-11-28 17:07:11 +00:00
sdhci_f_sdh30.c mmc: f-sdh30: fix order of function calls in sdhci_f_sdh30_remove 2023-08-23 17:52:42 +02:00
sdhci_f_sdh30.h
sdricoh_cs.c
sh_mmcif.c mmc: sh_mmcif: fix deferred probing 2023-06-28 11:12:31 +02:00
sunxi-mmc.c mmc: sunxi: fix deferred probing 2023-06-28 11:12:26 +02:00
tifm_sd.c
tmio_mmc.c mmc: tmio: avoid glitches when resetting 2022-07-12 12:31:32 +02:00
tmio_mmc.h mmc: tmio: avoid glitches when resetting 2022-07-12 12:31:32 +02:00
tmio_mmc_core.c mmc: tmio: avoid concurrent runs of mmc_request_done() 2024-04-03 15:19:30 +02:00
toshsd.c mmc: toshsd: fix return value check of mmc_add_host() 2022-12-31 13:32:24 +01:00
toshsd.h
uniphier-sd.c mmc: improve API to make clear hw_reset callback is for cards 2022-04-26 14:05:20 +02:00
usdhi6rol0.c mmc: usdhi60rol0: fix deferred probing 2023-06-28 11:12:31 +02:00
ushc.c
via-sdmmc.c mmc: via-sdmmc: fix return value check of mmc_add_host() 2022-12-31 13:32:24 +01:00
vub300.c mmc: vub300: fix an error code 2023-11-28 17:07:11 +00:00
wbsd.c mmc: wbsd: fix double mmc_free_host() in wbsd_init() 2023-08-23 17:52:39 +02:00
wbsd.h
wmt-sdmmc.c mmc: wmt-sdmmc: remove an incorrect release_mem_region() call in the .remove function 2024-03-26 18:20:39 -04:00