linux/drivers/mmc/host
Kevin Liu b0a8dece55 mmc: sdhci: disable interrupt before free_irq
Current code missed disabling interrupts before free irq which is shared.

Notice below comments for function free_irq (kernel/irq/manage.c):
On a shared IRQ the caller must ensure the interrupt is disabled
on the card it drives before calling this function.

Original code has below issue during suspend/resume when multiple SD
hosts share the same IRQ:
1. Assume there are two hosts (host1 for emmc while host2 for sd) share
the same mmc irq.
2. When system suspend, host2 will be suspended before host1.
So the sequence is below:
	step1: irq handler for host2 removed ->
	step2: irq handler for host1 removed and irq disabled ->
	... system suspended ...
	... system resumed ...
	step3: irq enabled and the irq handler for host1 restored ->
	step4: irq handler for host2 restored
3. So there is the buggy time slot that the irq is enabled but the irq
handler for host2 is removed. Then host2 interrupt can be triggered
but can't be handled at that moment.

Signed-off-by: Jialing Fu <jlfu@marvell.com>
Signed-off-by: Kevin Liu <kliu5@marvell.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
2013-02-11 13:28:50 -05: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 ARM: arm-soc: Header cleanups 2012-12-12 11:45:16 -08:00
au1xmmc.c mmc: remove use of __devexit 2012-11-28 12:28:18 -08:00
bfin_sdh.c mmc: remove use of __devexit 2012-11-28 12:28:18 -08:00
cb710-mmc.c mmc: remove use of __devexit 2012-11-28 12:28:18 -08:00
cb710-mmc.h
davinci_mmc.c MMC highlights for 3.7: 2012-10-10 10:58:42 +09:00
dw_mmc-exynos.c mmc: dw_mmc: constify dw_mci_idmac_ops in exynos back-end 2012-11-07 15:02:55 -05:00
dw_mmc-pci.c Drivers: mmc: remove __dev* attributes. 2013-01-03 15:57:14 -08:00
dw_mmc-pltfm.c Drivers: mmc: remove __dev* attributes. 2013-01-03 15:57:14 -08:00
dw_mmc-pltfm.h mmc: remove use of __devexit 2012-11-28 12:28:18 -08:00
dw_mmc.c mmc: dw_mmc: remove duplicated buswidth code 2012-12-06 13:55:12 -05:00
dw_mmc.h mmc: dw_mmc: add support for implementation specific callbacks 2012-10-03 10:05:19 -04:00
jz4740_mmc.c mmc: remove use of __devexit 2012-11-28 12:28:18 -08:00
Kconfig mmc: add BCM2835 driver 2013-02-11 13:28:49 -05:00
Makefile mmc: add BCM2835 driver 2013-02-11 13:28:49 -05:00
mmc_spi.c mmc: remove use of __devexit 2012-11-28 12:28:18 -08:00
mmci.c Merge branch 'for-linus' of git://git.linaro.org/people/rmk/linux-arm 2012-12-12 11:30:02 -08:00
mmci.h ARM: 7562/2: MMCI: fetch pinctrl handle and set default state 2012-11-04 10:31:46 +00:00
msm_sdcc.c ARM: msm: move platform_data definitions 2012-09-14 11:17:35 +02: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: use devm_ API to simplify/correct error paths. 2013-01-23 01:08:01 +00:00
mvsdio.h
mxcmmc.c ARM: arm-soc: Cleanups on various subarchitectures 2012-12-12 11:51:39 -08:00
mxs-mmc.c mmc: mxs-mmc: Remove platform data 2012-12-06 13:54:44 -05:00
of_mmc_spi.c mmc: of_mmc_spi: fix little endian support 2012-02-13 20:38:58 -05:00
omap_hsmmc.c ARM: arm-soc: Header cleanups 2012-12-12 11:45:16 -08:00
omap.c ARM: arm-soc: Header cleanups 2012-12-12 11:45:16 -08:00
pxamci.c mmc: remove use of __devinit 2012-11-28 12:28:18 -08:00
pxamci.h
rtsx_pci_sdmmc.c mmc: rtsx: Call MFD hook to switch output voltage 2013-01-27 01:29:57 +01:00
s3cmci.c mmc: remove use of __devexit 2012-11-28 12:28:18 -08:00
s3cmci.h
sdhci-acpi.c Drivers: mmc: remove __dev* attributes. 2013-01-03 15:57:14 -08:00
sdhci-bcm2835.c mmc: add BCM2835 driver 2013-02-11 13:28:49 -05:00
sdhci-cns3xxx.c mmc: remove use of __devexit 2012-11-28 12:28:18 -08:00
sdhci-dove.c Driver core updates for 3.8-rc1 2012-12-11 13:13:55 -08:00
sdhci-esdhc-imx.c mmc: sdhci-esdhc-imx: use slot-gpio helpers for CD and WP 2013-02-11 12:51:24 -05:00
sdhci-esdhc.h mmc: sdhci-esdhc: break out early if clock is 0 2012-09-04 13:58:06 -04:00
sdhci-of-esdhc.c Driver core updates for 3.8-rc1 2012-12-11 13:13:55 -08:00
sdhci-of-hlwd.c mmc: remove use of __devexit 2012-11-28 12:28:18 -08:00
sdhci-pci-data.c mmc: sdhci-pci: add platform data 2012-01-11 23:58:47 -05:00
sdhci-pci.c Driver core updates for 3.8-rc1 2012-12-11 13:13:55 -08:00
sdhci-pltfm.c mmc: dt: add no-1-8-v device tree flag 2012-12-06 13:55:05 -05: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: remove use of __devexit 2012-11-28 12:28:18 -08:00
sdhci-pxav3.c mmc: remove unncessary mmc_gpio_free_cd() call from slot-gpio users 2013-02-11 12:51:23 -05:00
sdhci-s3c.c Driver core updates for 3.8-rc1 2012-12-11 13:13:55 -08:00
sdhci-spear.c Driver core updates for 3.8-rc1 2012-12-11 13:13:55 -08:00
sdhci-tegra.c mmc: remove use of __devexit 2012-11-28 12:28:18 -08:00
sdhci.c mmc: sdhci: disable interrupt before free_irq 2013-02-11 13:28:50 -05:00
sdhci.h mmc: eSDHC: Recover from ADMA errors 2012-12-06 13:55:13 -05: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: simplify IRQ processing 2013-02-11 13:28:45 -05:00
sh_mobile_sdhi.c Driver core updates for 3.8-rc1 2012-12-11 13:13:55 -08: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: remove unncessary mmc_gpio_free_cd() call from slot-gpio users 2013-02-11 12:51:23 -05:00
tmio_mmc.c mmc: remove use of __devexit 2012-11-28 12:28:18 -08: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: remove use of __devexit 2012-11-28 12:28:18 -08:00
vub300.c mmc: vub300: add missing usb_put_dev 2012-12-06 13:55:03 -05:00
wbsd.c mmc: remove use of __devexit 2012-11-28 12:28:18 -08:00
wbsd.h
wmt-sdmmc.c Drivers: mmc: remove __dev* attributes. 2013-01-03 15:57:14 -08:00