diff options
author | Pierre Ossman <drzeus@drzeus.cx> | 2007-03-06 07:38:49 -0500 |
---|---|---|
committer | Pierre Ossman <drzeus@drzeus.cx> | 2007-03-06 07:38:49 -0500 |
commit | a715dfc7b9ef15ed5b398b185bd84cc015ff37f6 (patch) | |
tree | b2aa0f57700fef3c7273b6dfd9194643e032b10b /drivers/mmc/sdhci.c | |
parent | 62df67a523acd7a22d936bf946b1889dbd60ca98 (diff) |
sdhci: release irq during suspend
Release the device's irq during sleep, as all well-behaved drivers
should.
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
Diffstat (limited to 'drivers/mmc/sdhci.c')
-rw-r--r-- | drivers/mmc/sdhci.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/mmc/sdhci.c b/drivers/mmc/sdhci.c index f3260ec61fe9..d749f08601b8 100644 --- a/drivers/mmc/sdhci.c +++ b/drivers/mmc/sdhci.c | |||
@@ -1079,6 +1079,13 @@ static int sdhci_suspend (struct pci_dev *pdev, pm_message_t state) | |||
1079 | 1079 | ||
1080 | pci_save_state(pdev); | 1080 | pci_save_state(pdev); |
1081 | pci_enable_wake(pdev, pci_choose_state(pdev, state), 0); | 1081 | pci_enable_wake(pdev, pci_choose_state(pdev, state), 0); |
1082 | |||
1083 | for (i = 0;i < chip->num_slots;i++) { | ||
1084 | if (!chip->hosts[i]) | ||
1085 | continue; | ||
1086 | free_irq(chip->hosts[i]->irq, chip->hosts[i]); | ||
1087 | } | ||
1088 | |||
1082 | pci_disable_device(pdev); | 1089 | pci_disable_device(pdev); |
1083 | pci_set_power_state(pdev, pci_choose_state(pdev, state)); | 1090 | pci_set_power_state(pdev, pci_choose_state(pdev, state)); |
1084 | 1091 | ||
@@ -1107,6 +1114,11 @@ static int sdhci_resume (struct pci_dev *pdev) | |||
1107 | continue; | 1114 | continue; |
1108 | if (chip->hosts[i]->flags & SDHCI_USE_DMA) | 1115 | if (chip->hosts[i]->flags & SDHCI_USE_DMA) |
1109 | pci_set_master(pdev); | 1116 | pci_set_master(pdev); |
1117 | ret = request_irq(chip->hosts[i]->irq, sdhci_irq, | ||
1118 | IRQF_SHARED, chip->hosts[i]->slot_descr, | ||
1119 | chip->hosts[i]); | ||
1120 | if (ret) | ||
1121 | return ret; | ||
1110 | sdhci_init(chip->hosts[i]); | 1122 | sdhci_init(chip->hosts[i]); |
1111 | mmiowb(); | 1123 | mmiowb(); |
1112 | ret = mmc_resume_host(chip->hosts[i]->mmc); | 1124 | ret = mmc_resume_host(chip->hosts[i]->mmc); |