diff options
author | 2014-01-11 06:23:57 +0700 | |
---|---|---|
committer | 2014-01-11 06:23:57 +0700 | |
commit | c43a5eb2698e2028cc8f6aba9c5cb35b7b154eed (patch) | |
tree | 062e2822934edb2157160eeb0cecea568a78b2ab | |
parent | Merge tag 'clk-fixes-for-linus' of git://git.linaro.org/people/mike.turquette/linux (diff) | |
parent | mfd: rtsx_pcr: Disable interrupts before cancelling delayed works (diff) | |
download | linux-dev-c43a5eb2698e2028cc8f6aba9c5cb35b7b154eed.tar.xz linux-dev-c43a5eb2698e2028cc8f6aba9c5cb35b7b154eed.zip |
Merge tag 'mfd-fixes-3.13-2' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-fixes
Pull MFD fix from Samuel Ortiz:
"This is the 2nd MFD pull request for 3.13
It only contains one fix for the rtsx_pcr driver. Without it we see a
kernel panic on some machines, when resuming from suspend to RAM"
* tag 'mfd-fixes-3.13-2' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-fixes:
mfd: rtsx_pcr: Disable interrupts before cancelling delayed works
-rw-r--r-- | drivers/mfd/rtsx_pcr.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/mfd/rtsx_pcr.c b/drivers/mfd/rtsx_pcr.c index 11e20afbdcac..705698fd2c7e 100644 --- a/drivers/mfd/rtsx_pcr.c +++ b/drivers/mfd/rtsx_pcr.c @@ -1228,8 +1228,14 @@ static void rtsx_pci_remove(struct pci_dev *pcidev) pcr->remove_pci = true; - cancel_delayed_work(&pcr->carddet_work); - cancel_delayed_work(&pcr->idle_work); + /* Disable interrupts at the pcr level */ + spin_lock_irq(&pcr->lock); + rtsx_pci_writel(pcr, RTSX_BIER, 0); + pcr->bier = 0; + spin_unlock_irq(&pcr->lock); + + cancel_delayed_work_sync(&pcr->carddet_work); + cancel_delayed_work_sync(&pcr->idle_work); mfd_remove_devices(&pcidev->dev); |