diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-01-11 06:23:57 +0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-01-11 06:23:57 +0700 |
commit | c43a5eb2698e2028cc8f6aba9c5cb35b7b154eed (patch) | |
tree | 062e2822934edb2157160eeb0cecea568a78b2ab | |
parent | 21e20e22d4e9d6ae8504c7275049a57ad4d1b71f (diff) | |
parent | 73beb63d290f961c299526852884846b0d868840 (diff) |
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); |