android_kernel_asus_sm8350/drivers/mmc/host
Dong Aisheng a7f2be94be mmc: sdhci-esdhc-imx: fix warning during module remove function
Since the clock is managed by runtime pm currently, we do not need
disable it again during driver remove function, or it will cause
clock disable count mismatch issue since the clocks have already been disabled.

The issue can be simply reproduced by unbind the devices via sysfs.
mx6slevk:/sys/bus/platform/drivers/sdhci-esdhc-imx# echo 2194000.usdhc > unbind
mmc1: card aaaa removed
------------[ cut here ]------------
WARNING: CPU: 0 PID: 657 at drivers/clk/clk.c:842 __clk_disable+0x68/0x88()
Modules linked in:
CPU: 0 PID: 657 Comm: sh Not tainted 3.13.0-rc1+ #285
Backtrace:
[<80012160>] (dump_backtrace+0x0/0x10c) from [<80012438>] (show_stack+0x18/0x1c)
 r6:80481370 r5:00000000 r4:8088ecc8 r3:00000000
[<80012420>] (show_stack+0x0/0x1c) from [<80616b14>] (dump_stack+0x84/0x9c)
[<80616a90>] (dump_stack+0x0/0x9c) from [<80027158>] (warn_slowpath_common+0x70/0x94)
 r5:00000009 r4:00000000
[<800270e8>] (warn_slowpath_common+0x0/0x94) from [<80027220>] (warn_slowpath_null+0x24/0x2c)
 r8:bec4ff78 r7:0000000e r6:bf91d800 r5:bf81d080 r4:bf81d080
[<800271fc>] (warn_slowpath_null+0x0/0x2c) from [<80481370>] (__clk_disable+0x68/0x88)
[<80481308>] (__clk_disable+0x0/0x88) from [<8048148c>] (clk_disable+0x20/0x2c)
 r4:200f0113 r3:bf95ec00
[<8048146c>] (clk_disable+0x0/0x2c) from [<80463bd8>] (sdhci_esdhc_imx_remove+0x64/0xa4)
 r5:bf81d080 r4:bfabb010
[<80463b74>] (sdhci_esdhc_imx_remove+0x0/0xa4) from [<8032e82c>] (platform_drv_remove+0x20/0x24)
 r6:808ae0e0 r5:808ae0e0 r4:bf91d810 r3:80463b74
[<8032e80c>] (platform_drv_remove+0x0/0x24) from [<8032d010>] (__device_release_driver+0x78/0xd0)
[<8032cf98>] (__device_release_driver+0x0/0xd0) from [<8032d090>] (device_release_driver+0x28/0x34)
 r5:bf91d810 r4:bf91d844
[<8032d068>] (device_release_driver+0x0/0x34) from [<8032c0c8>] (unbind_store+0x80/0xc4)
 r5:bf91d810 r4:80899ba0
[<8032c048>] (unbind_store+0x0/0xc4) from [<8032b648>] (drv_attr_store+0x28/0x34)
 r7:bed73100 r6:0000000e r5:00000000 r4:8032b620
[<8032b620>] (drv_attr_store+0x0/0x34) from [<80140580>] (sysfs_write_file+0x1b0/0x1e4)
[<801403d0>] (sysfs_write_file+0x0/0x1e4) from [<800dcda0>] (vfs_write+0xb4/0x190)
[<800dccec>] (vfs_write+0x0/0x190) from [<800dd3e4>] (SyS_write+0x44/0x80)
 r9:0000000e r8:00000000 r7:01a00408 r6:bf3b1c00 r5:00000000
r4:00000000
[<800dd3a0>] (SyS_write+0x0/0x80) from [<8000e900>] (ret_fast_syscall+0x0/0x48)
 r9:bec4e000 r8:8000eac4 r7:00000004 r6:76f5fb40 r5:01a00408
r4:0000000e
---[ end trace a0897d268e6233b2 ]---

If without runtime pm, we just run as before to match the clock enable
in probe function.

Signed-off-by: Dong Aisheng <b29396@freescale.com>
Acked-by: Shawn Guo <shawn.guo@linaro.org>
Signed-off-by: Chris Ball <chris@printf.net>
2014-01-13 14:02:39 -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: add vmmc-supply support 2014-01-13 13:03:40 -05:00
au1xmmc.c mmc: au1xmmc: Move away from using deprecated APIs 2013-10-30 20:26:35 -04: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_mmc: Move away from using deprecated APIs 2013-10-30 20:26:38 -04:00
dw_mmc-exynos.c mmc: dw_mmc: exynos: Revert the sdr_timing assignment 2013-11-08 14:27:39 -05:00
dw_mmc-k3.c mmc: dw_mmc: add dw_mmc-k3 for k3 platform 2014-01-13 12:48:33 -05:00
dw_mmc-pci.c mmc: dw_mmc-pci: enable bus-mastering mode 2013-08-25 00:10:12 -04:00
dw_mmc-pltfm.c mmc: dw_mmc: move the platform specific init call 2013-09-25 21:32:40 -04:00
dw_mmc-pltfm.h mmc: remove use of __devexit 2012-11-28 12:28:18 -08:00
dw_mmc-socfpga.c mmc: dw_mmc-socfpga: Staticize dw_mci_socfpga_probe 2013-09-25 21:57:35 -04:00
dw_mmc.c mmc: dw_mmc: use slot-gpio to handle cd pin 2014-01-13 12:48:32 -05:00
dw_mmc.h mmc: dw_mmc: control card read threshold 2013-09-25 21:34:39 -04:00
jz4740_mmc.c mmc: jz4740: Move away from using deprecated APIs 2013-10-30 20:26:40 -04:00
Kconfig mmc: arasan: Add driver for Arasan SDHCI 2014-01-13 12:48:34 -05:00
Makefile mmc: arasan: Add driver for Arasan SDHCI 2014-01-13 12:48:34 -05:00
mmc_spi.c mmc: mmc_spi: Remove platform data .get_cd() and .get_ro() callbacks 2013-08-24 23:58:06 -04:00
mmci.c MMC highlights for 3.13: 2013-11-18 14:47:30 -08:00
mmci.h ARM: 7831/1: mmc: mmci: Adapt to new pinctrl handling 2013-09-19 20:12:23 +01: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 highlights for 3.13: 2013-11-18 14:47:30 -08:00
mvsdio.h mmc: SDIO driver for Marvell SoCs 2009-03-24 21:30:03 +01:00
mxcmmc.c mmc: mxcmmc: Move away from using deprecated APIs 2013-10-30 20:28:26 -04:00
mxs-mmc.c mmc: mxs: use mmc_of_parse to parse devicetree properties 2014-01-13 12:48:21 -05:00
of_mmc_spi.c mmc: mmc_spi: Support CD/RO GPIOs 2013-08-24 23:45:22 -04:00
omap_hsmmc.c mmc: omap: Remove redundant suspend and resume callbacks 2013-10-30 20:28:24 -04:00
omap.c mmc: omap: Remove redundant suspend and resume callbacks 2013-10-30 20:28:24 -04:00
pxamci.c mmc: pxamci: Remove redundant suspend and resume callbacks 2013-10-30 20:28:29 -04:00
pxamci.h
rtsx_pci_sdmmc.c mmc: rtsx: Remove redundant suspend and resume callbacks 2013-10-30 20:28:31 -04:00
s3cmci.c mmc: s3cmci: Remove redundant suspend and resume callbacks 2013-10-30 20:28:28 -04:00
s3cmci.h s3cmci: DMA fixes 2009-10-01 16:11:15 -07:00
sdhci-acpi.c mmc: sdhci-acpi: add new ACPI ID 2014-01-13 12:48:16 -05:00
sdhci-bcm2835.c mmc: sdhci-bcm2835: Use sdhci_pltfm_unregister instead of open coded 2013-09-25 22:05:57 -04:00
sdhci-bcm-kona.c mmc: sdhci-bcm-kona: Use sdhci_pltfm_unregister instead of open coded 2013-09-25 22:05:26 -04:00
sdhci-cns3xxx.c mmc: sdhci: Add size for caller in init+register 2013-05-31 11:59:29 -04:00
sdhci-dove.c mmc: sdhci: Add size for caller in init+register 2013-05-31 11:59:29 -04:00
sdhci-esdhc-imx.c mmc: sdhci-esdhc-imx: fix warning during module remove function 2014-01-13 14:02:39 -05:00
sdhci-esdhc.h mmc: sdhci-esdhc: move common esdhc_set_clock to platform driver 2013-09-26 07:57:12 -04:00
sdhci-of-arasan.c mmc: arasan: Add driver for Arasan SDHCI 2014-01-13 12:48:34 -05:00
sdhci-of-esdhc.c mmc: sdhci-esdhc-imx: set actual_clock in clock setting 2013-09-27 10:31:48 -04:00
sdhci-of-hlwd.c mmc: sdhci: Add size for caller in init+register 2013-05-31 11:59:29 -04: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: add support of O2Micro/BayHubTech SD hosts 2014-01-13 12:48:32 -05:00
sdhci-pci-o2micro.h mmc: sdhci-pci: add support of O2Micro/BayHubTech SD hosts 2014-01-13 12:48:32 -05:00
sdhci-pci.c mmc: sdhci-pci: add broken HS200 quirk for Intel Merrifield 2014-01-13 13:03:25 -05:00
sdhci-pci.h mmc: sdhci-pci: break out definitions to header file 2014-01-13 12:48:31 -05:00
sdhci-pltfm.c mmc: sdhci-pltfm: export pltfm suspend/resume api 2014-01-13 12:48:06 -05:00
sdhci-pltfm.h mmc: sdhci-pltfm: export pltfm suspend/resume api 2014-01-13 12:48:06 -05:00
sdhci-pxav2.c mmc: sdhci: Add size for caller in init+register 2013-05-31 11:59:29 -04:00
sdhci-pxav3.c mmc: slot-gpio: Add debouncing capability to mmc_gpio_request_cd() 2013-08-24 23:45:09 -04:00
sdhci-s3c-regs.h mmc: sdhci-s3c: remove platform dependencies 2013-04-19 13:51:23 +02:00
sdhci-s3c.c mmc: sdhci-s3c: initialize host->quirks2 for using quirks2 2013-08-29 21:19:13 -04:00
sdhci-sirf.c mmc: slot-gpio: Add debouncing capability to mmc_gpio_request_cd() 2013-08-24 23:45:09 -04:00
sdhci-spear.c mmc: remove unnecessary platform_set_drvdata() 2013-05-26 14:23:23 -04:00
sdhci-tegra.c mmc: tegra: add support for Tegra124 2014-01-13 12:48:27 -05:00
sdhci.c mmc: sdhci: add quirk for broken HS200 support 2014-01-13 13:03:18 -05:00
sdhci.h mmc: sdhci: allow platform access of sdhci_send_command 2013-09-26 07:53:39 -04: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 compilation warning on 64-bit platforms 2014-01-13 12:48:26 -05:00
sh_mobile_sdhi.c mmc: SDHI: add SoC specific workaround via HW version 2014-01-13 12:48:24 -05:00
tifm_sd.c mmc: tifm_sd: Move away from using deprecated APIs 2013-10-30 20:28:23 -04:00
tmio_mmc_dma.c mmc: tmio: bus_shift become tmio_mmc_data member 2014-01-13 12:48:23 -05:00
tmio_mmc_pio.c mmc: tmio: add new TMIO_MMC_HAVE_HIGH_REG flags 2014-01-13 12:48:24 -05:00
tmio_mmc.c mmc: tmio: fixup compile error 2014-01-13 12:48:30 -05:00
tmio_mmc.h mmc: tmio: bus_shift become tmio_mmc_data member 2014-01-13 12:48:23 -05: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: 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: wbsd: Silence compiler warning 2013-11-08 14:32:03 -05:00
wbsd.h
wmt-sdmmc.c mmc: wmt-sdmmc: Move away from using deprecated APIs 2013-10-30 20:28:27 -04:00