linux/drivers/mmc/host
Tony Lindgren 814a3c0c2a mmc: omap_hsmmc: Fix PM regression with deferred probe for pm_runtime_reinit
Commit 5de85b9d57 ("PM / runtime: Re-init runtime PM states at probe
error and driver unbind") introduced pm_runtime_reinit() that is used
to reinitialize PM runtime after -EPROBE_DEFER. This allows shutting
down the device after a failed probe.

However, for drivers using pm_runtime_use_autosuspend() this can cause
a state where suspend callback is never called after -EPROBE_DEFER.
On the following device driver probe, hardware state is different from
the PM runtime state causing omap_device to produce the following
error:

omap_device_enable() called from invalid state 1

And with omap_device and omap hardware being picky for PM, this will
block any deeper idle states in hardware.

The solution is to fix the drivers to follow the PM runtime documentation:

1. For sections of code that needs the device disabled, use
   pm_runtime_put_sync_suspend() if pm_runtime_set_autosuspend() has
   been set.

2. For driver exit code, use pm_runtime_dont_use_autosuspend() before
   pm_runtime_put_sync() if pm_runtime_use_autosuspend() has been
   set.

Fixes: 5de85b9d57 ("PM / runtime: Re-init runtime PM states at probe
error and driver unbind")
Cc: linux-mmc@vger.kernel.org
Cc: Alan Stern <stern@rowland.harvard.edu>
Cc: Kevin Hilman <khilman@baylibre.com>
Cc: Nishanth Menon <nm@ti.com>
Cc: Rafael J. Wysocki <rafael@kernel.org>
Cc: Ulf Hansson <ulf.hansson@linaro.org>
Cc: Tero Kristo <t-kristo@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
2016-02-15 14:10:48 +01:00
..
Kconfig mmc: mvsdio: delete platform data code path 2015-12-22 11:32:12 +01:00
Makefile mmc: sdhci-pci: Build o2micro support in the same module 2015-10-26 16:00:05 +01:00
android-goldfish.c mmc: android-goldfish: remove incorrect __iomem annotation 2015-09-01 14:19:11 +02:00
atmel-mci.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/egtvedt/linux-avr32 2016-01-18 12:50:55 -08:00
au1xmmc.c
bfin_sdh.c
cb710-mmc.c
cb710-mmc.h mmc: cb710: use to_platform_device() 2016-01-05 18:04:57 +01:00
davinci_mmc.c mmc: davinci: Constify platform_device_id 2015-06-01 09:06:49 +02:00
dw_mmc-exynos.c mmc: mmc: extend the mmc_send_tuning() 2015-10-27 10:38:41 +01:00
dw_mmc-exynos.h mmc: dw_mmc: exynos: Support eMMC's HS400 mode 2015-03-23 14:13:28 +01:00
dw_mmc-k3.c mmc: dw_mmc: k3: Fix modalias to make module auto-loading work 2015-06-01 09:07:05 +02:00
dw_mmc-pci.c
dw_mmc-pltfm.c mmc: dw_mmc: use resource_size_t to store physical address 2015-12-22 11:32:19 +01:00
dw_mmc-pltfm.h
dw_mmc-rockchip.c mmc: core: Remove MMC_CAP_RUNTIME_RESUME as it's redundant 2015-12-22 11:32:03 +01:00
dw_mmc.c mmc: dw_mmc: remove the unused quirks 2016-01-05 18:04:58 +01:00
dw_mmc.h mmc: dw_mmc: fix the CardThreshold boundary at CardThrCtl register 2015-10-29 11:00:37 +01:00
jz4740_mmc.c
mmc_spi.c mmc: mmc_spi: add checks for dma mapping error 2016-02-08 15:22:04 +01:00
mmci.c mmc: mmci: support 8bit mode on the Nomadik 2016-01-14 10:47:46 +01:00
mmci.h
mmci_qcom_dml.c
mmci_qcom_dml.h
moxart-mmc.c mmc: moxart: Fix module autoload for OF platform driver 2015-10-26 15:59:57 +01:00
mtk-sd.c mmc: mediatek: change some dev_err to dev_dbg 2015-12-22 11:32:17 +01:00
mvsdio.c mmc: mvsdio: delete platform data code path 2015-12-22 11:32:12 +01:00
mvsdio.h
mxcmmc.c mmc: host: mxcmmc: Simplify a trivial if-return sequence 2015-06-01 09:07:02 +02:00
mxs-mmc.c mmc: mxs: Constify platform_device_id 2015-06-01 09:06:50 +02:00
of_mmc_spi.c mmc: of_mmc_spi: Add IRQF_ONESHOT to interrupt flags 2015-12-22 11:32:17 +01:00
omap.c mmc: omap: Fix module autoload for OF platform driver 2015-10-26 15:59:58 +01:00
omap_hsmmc.c mmc: omap_hsmmc: Fix PM regression with deferred probe for pm_runtime_reinit 2016-02-15 14:10:48 +01:00
pxamci.c mmc: pxamci: fix the device-tree probe deferral path 2016-02-08 15:25:43 +01:00
pxamci.h
rtsx_pci_sdmmc.c mmc: rtsx: Constify platform_device_id 2015-06-01 09:06:50 +02:00
rtsx_usb_sdmmc.c mmc: rtsx: Constify platform_device_id 2015-06-01 09:06:50 +02:00
s3cmci.c mmc: s3cmci: Constify platform_device_id 2015-06-01 09:06:51 +02:00
s3cmci.h
sdhci-acpi.c mmc: sdhci-acpi: Fix card detect race for Intel BXT/APL 2016-02-11 11:39:56 +01:00
sdhci-bcm-kona.c mmc: sdhci-bcm-kona: fix logic to check for 8-bit data width 2015-10-26 15:59:55 +01:00
sdhci-bcm2835.c mmc: sdhci-bcm2835: Actually enable the clock 2015-06-01 09:56:07 +02:00
sdhci-cns3xxx.c mmc: sdhci: set the .remove to sdhci_pltfm_unregister() 2015-03-23 14:13:35 +01:00
sdhci-dove.c mmc: sdhci: set the .remove to sdhci_pltfm_unregister() 2015-03-23 14:13:35 +01:00
sdhci-esdhc-imx.c mmc: sdhci-esdhc-imx: correct the tuning-step setting 2015-12-22 11:32:09 +01:00
sdhci-esdhc.h mmc: sdhci-of-esdhc: support both BE and LE host controller 2015-10-26 16:00:08 +01:00
sdhci-iproc.c mmc: sdhci-iproc: fix oops in sdhci_iproc_writew 2015-03-23 14:13:47 +01:00
sdhci-msm.c mmc: mmc: extend the mmc_send_tuning() 2015-10-27 10:38:41 +01:00
sdhci-of-arasan.c mmc: sdhci-of-arasan: Add the support for sdhci-5.1 2015-08-27 14:50:54 +02:00
sdhci-of-at91.c mmc: sdhci-of-at91: fix pm runtime unbalanced issue in error path 2016-02-02 14:09:14 +01:00
sdhci-of-esdhc.c mmc: sdhci-of-esdhc: add/remove some quirks according to vendor version 2015-12-22 11:32:11 +01:00
sdhci-of-hlwd.c mmc: sdhci: set the .remove to sdhci_pltfm_unregister() 2015-03-23 14:13:35 +01:00
sdhci-pci-core.c mmc: sdhci-pci: Fix card detect race for Intel BXT/APL 2016-02-11 11:39:56 +01:00
sdhci-pci-data.c mmc: sdhci-pci: Add support for drive strength selection for SPT 2015-06-01 09:07:14 +02:00
sdhci-pci-o2micro.c mmc: sdhci-pci: Make sdhci_pci_o2_fujin2_pci_init() static 2015-10-26 16:00:05 +01:00
sdhci-pci-o2micro.h mmc: sdhci-pci: Make sdhci_pci_o2_fujin2_pci_init() static 2015-10-26 16:00:05 +01:00
sdhci-pci.h mmc: sdhci-pci: Add more PCI IDs for Intel controllers 2015-10-26 16:00:19 +01:00
sdhci-pltfm.c mmc: core: enable support for the standard "wakeup-source" property 2015-12-22 11:32:01 +01:00
sdhci-pltfm.h
sdhci-pxav2.c mmc: sdhci-{pxav2,pxav3}: Use of_match_ptr() macro 2015-06-01 09:06:53 +02:00
sdhci-pxav3.c mmc: sdhci-pxav3: fix error handling of armada_38x_quirks 2015-10-08 19:24:23 +02:00
sdhci-s3c-regs.h
sdhci-s3c.c mmc: sdhci-s3c: Constify platform_device_id 2015-06-01 09:06:52 +02:00
sdhci-sirf.c mmc: mmc: extend the mmc_send_tuning() 2015-10-27 10:38:41 +01:00
sdhci-spear.c Update Viresh Kumar's email address 2015-07-17 16:39:53 -07:00
sdhci-st.c mmc: sdhci-st: Fix modalias to make module auto-loading work 2015-06-01 09:07:07 +02:00
sdhci-tegra.c mmc: tegra: use correct accessor for misc ctrl register 2016-01-05 18:04:56 +01:00
sdhci.c mmc: sdhci: Allow override of get_cd() called from sdhci_request() 2016-02-11 11:39:56 +01:00
sdhci.h mmc: sdhci: Allow override of mmc host operations 2016-02-11 11:39:56 +01:00
sdhci_f_sdh30.c mmc: sdhci_f_sdh30: Fix the size passed to sdhci_alloc_host 2015-06-01 09:06:46 +02:00
sdricoh_cs.c
sh_mmcif.c mmc: sh_mmcif: Correct TX DMA channel allocation 2016-02-10 17:02:25 +01:00
sh_mobile_sdhi.c mmc: sh_mobile_sdhi: remove sh_mobile_sdhi_info 2015-03-05 21:54:26 +05:30
sunxi-mmc.c mmc: sunxi: Add card busy detection 2015-10-26 16:00:02 +01:00
tifm_sd.c
tmio_mmc.c mmc: TMIO: Use devm_request_irq() 2015-06-01 09:06:48 +02:00
tmio_mmc.h mmc: tmio: mmc: tmio: tmio_mmc_data has .chan_priv_?x 2015-03-05 21:54:17 +05:30
tmio_mmc_dma.c mmc: tmio_mmc_dma: don't print invalid DMA cookie 2016-01-14 11:00:29 +01:00
tmio_mmc_pio.c mmc: tmio: Fix timeout value for command request 2015-08-24 11:25:53 +02:00
toshsd.c
toshsd.h
usdhi6rol0.c mmc: usdhi6rol0: handle NULL data in timeout 2015-12-22 11:32:18 +01:00
ushc.c
via-sdmmc.c
vub300.c mmc: vub300: Remove unneded semicolons 2015-10-26 15:59:54 +01:00
wbsd.c mmc: wbsd: Remove unneded semicolon 2015-10-26 15:59:53 +01:00
wbsd.h
wmt-sdmmc.c mmc: constify of_device_id array 2015-03-23 14:13:49 +01:00