linux/drivers/mmc/host
Laurent Pinchart 6de707f200 mmc: tmio: Don't access hardware registers after stopping clocks
The tmio_mmc_set_ios() function configures the MMC power, clock and bus
width. When the mmc core requests the driver to power off the card, we
inform runtime PM, that the controller can be suspended. This can lead
to the MSTP clock being turned off.

Writing to any 16-bit hardware registers with the MSTP clock off leads
to timeouts and errors being printed to the kernel log. This can occur
both when stopping the MMC clock and when configuring the bus width.

To fix this, stop the MMC clock before calling put_runtime_pm(), and
skip bus width configuration when power is off.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Tested-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Tested-by: Simon Horman <horms@verge.net.au>
Acked-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Signed-off-by: Chris Ball <cjb@laptop.org>
2012-07-21 00:02:07 -04:00
..
at91_mci.c ARM: at91: code removal of CAP9 SoC 2012-02-03 13:33:05 +01:00
at91_mci.h mmc: at91_mci: move register header from include/ to drivers/ 2011-07-21 10:35:08 -04:00
atmel-mci-regs.h mmc: atmel-mci: fix burst/chunk size modification 2012-06-06 08:52:12 -04:00
atmel-mci.c mmc: atmel-mci: fix burst/chunk size modification 2012-06-06 08:52:12 -04:00
au1xmmc.c MIPS: Alchemy: Au1300 SoC support 2011-12-07 22:02:05 +00:00
bfin_sdh.c mmc: convert drivers/mmc/host/* to use module_platform_driver() 2012-01-11 23:58:42 -05:00
cb710-mmc.c mmc: convert drivers/mmc/host/* to use module_platform_driver() 2012-01-11 23:58:42 -05:00
cb710-mmc.h mmc: Driver for CB710/720 memory card reader (MMC part) 2009-06-13 22:42:58 +02:00
davinci_mmc.c mmc: davinci_mmc: set MODULE_ALIAS to allow autoloading 2012-04-22 11:16:58 -04:00
dw_mmc-pci.c mmc: Support of PCI mode in the dw_mmc driver 2012-03-25 19:33:44 -04:00
dw_mmc-pltfm.c mmc: Support of PCI mode in the dw_mmc driver 2012-03-25 19:33:44 -04:00
dw_mmc.c mmc: dw_mmc: Add check for IDMAC configuration 2012-07-21 00:02:06 -04:00
dw_mmc.h mmc: Support of PCI mode in the dw_mmc driver 2012-03-25 19:33:44 -04:00
jz4740_mmc.c mmc: convert drivers/mmc/host/* to use module_platform_driver() 2012-01-11 23:58:42 -05:00
Kconfig mmc: at91-mci: this driver is now deprecated 2012-05-17 14:33:48 -04:00
Makefile mmc: remove imxmmc driver 2012-04-22 11:17:25 -04:00
mmc_spi.c mmc: Remove redundant spi driver bus initialization 2012-01-11 23:58:42 -05:00
mmci.c ARM: 7427/1: mmc: mmci: Defer probe() in case of yet uninitialized GPIOs 2012-06-17 22:24:36 +01:00
mmci.h ARM: 7280/1: mmc: mmci: Cache MMCICLOCK and MMCIPOWER register 2012-02-02 17:02:15 +00:00
msm_sdcc.c mmc: remove the second argument of k[un]map_atomic() 2012-01-11 23:58:42 -05:00
msm_sdcc.h mmc: msm_sdcc: Use MCI_INT_MASK0 for PIO interrupts 2011-10-26 15:43:37 -04:00
mvsdio.c ARM: Orion: SDIO: Add support for clk. 2012-05-08 16:34:00 -07:00
mvsdio.h
mxcmmc.c mmc mxcmmc: do not depend on grouped clocks 2012-04-25 17:03:38 +02:00
mxs-mmc.c mmc: mxs-mmc: Move of_match_table out of CONFIG_PM 2012-06-06 10:16:40 -04:00
of_mmc_spi.c mmc: of_mmc_spi: fix little endian support 2012-02-13 20:38:58 -05:00
omap_hsmmc.c Revert "mmc: omap_hsmmc: Enable Auto CMD12" 2012-06-26 16:10:30 -04:00
omap.c mmc: omap: Fix broken reg_shift initialization 2012-06-06 09:47:49 -04:00
pxamci.c mmc: convert drivers/mmc/host/* to use module_platform_driver() 2012-01-11 23:58:42 -05:00
pxamci.h
s3cmci.c mmc: Fix typo in s3cmci.c 2012-02-05 17:14:47 +01:00
s3cmci.h s3cmci: DMA fixes 2009-10-01 16:11:15 -07:00
sdhci-cns3xxx.c mmc: convert drivers/mmc/host/* to use module_platform_driver() 2012-01-11 23:58:42 -05:00
sdhci-dove.c mmc: sdhci-dove: Fix compile error by including module.h 2012-04-05 20:32:33 -04:00
sdhci-esdhc-imx.c arm-soc: clock driver changes 2012-05-26 12:42:29 -07:00
sdhci-esdhc.h mmc: sdhci-esdhc: Change delay after setting clock from 100ms to 1ms 2012-01-11 23:58:41 -05:00
sdhci-of-esdhc.c mmc: esdhc: Workaround for data crc error on p1010rdb 2012-03-25 19:33:45 -04:00
sdhci-of-hlwd.c mmc: convert drivers/mmc/host/* to use module_platform_driver() 2012-01-11 23:58:42 -05:00
sdhci-pci-data.c mmc: sdhci-pci: add platform data 2012-01-11 23:58:47 -05:00
sdhci-pci.c Revert "mmc: sdhci-pci: Add MSI support" 2012-04-05 20:32:32 -04:00
sdhci-pltfm.c mmc: dt: Consolidate DT bindings 2012-05-15 13:29:42 +02:00
sdhci-pltfm.h mmc: sdhci: remove "state" argument from sdhci_suspend_host 2011-12-19 15:50:11 -08:00
sdhci-pxav2.c mmc: sdhci-pxa: Add device tree support 2012-07-21 00:01:47 -04:00
sdhci-pxav3.c mmc: sdhci-pxa: Add device tree support 2012-07-21 00:01:47 -04:00
sdhci-s3c.c mmc: sdhci-s3c: pass IRQF ONESHOT to request threaded irq 2012-06-06 09:53:22 -04:00
sdhci-spear.c Viresh has moved 2012-06-20 14:39:36 -07:00
sdhci-tegra.c MMC highlights for 3.5: 2012-05-25 08:23:32 -07:00
sdhci.c mmc: sdhci: Use DBG() instead of pr_warning() on large timeout 2012-06-06 05:52:36 -04:00
sdhci.h mmc: sdhci: Add platform suspend/resume hooks. 2012-03-25 19:33:44 -04:00
sdricoh_cs.c mmc: Add module.h to drivers/mmc users assuming implicit presence. 2011-10-26 16:32:19 -04:00
sh_mmcif.c mmc: sh_mmcif: Support MMC_SLEEP_AWAKE command 2012-07-21 00:02:07 -04:00
sh_mobile_sdhi.c mmc: sh_mobile_sdhi: support modular mmc-core with non-standard hotplug 2012-03-27 12:20:19 -04:00
tifm_sd.c Autogenerated GPG tag for Rusty D1ADB8F1: 15EE 8D6C AB0E 7F0C F999 BFCB D920 0E6C D1AD B8F1 2012-01-14 12:32:16 -08:00
tmio_mmc_dma.c Merge branch 'next' of git://git.infradead.org/users/vkoul/slave-dma 2012-03-29 15:34:57 -07:00
tmio_mmc_pio.c mmc: tmio: Don't access hardware registers after stopping clocks 2012-07-21 00:02:07 -04:00
tmio_mmc.c mmc: convert drivers/mmc/host/* to use module_platform_driver() 2012-01-11 23:58:42 -05:00
tmio_mmc.h mmc: tmio_mmc: remove unused sdio_irq_enabled flag 2012-03-27 12:20:17 -04:00
ushc.c USB: convert some miscellanies drivers to use module_usb_driver() 2011-11-18 09:52:10 -08:00
via-sdmmc.c mmc: replace printk with appropriate display macro 2011-10-26 16:32:22 -04:00
vub300.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
wbsd.c mmc: replace printk with appropriate display macro 2011-10-26 16:32:22 -04:00
wbsd.h