summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2014-01-11 06:23:57 +0700
committerLinus Torvalds <torvalds@linux-foundation.org>2014-01-11 06:23:57 +0700
commitc43a5eb2698e2028cc8f6aba9c5cb35b7b154eed (patch)
tree062e2822934edb2157160eeb0cecea568a78b2ab
parent21e20e22d4e9d6ae8504c7275049a57ad4d1b71f (diff)
parent73beb63d290f961c299526852884846b0d868840 (diff)
downloadkernel-common-c43a5eb2698e2028cc8f6aba9c5cb35b7b154eed.tar.gz
kernel-common-c43a5eb2698e2028cc8f6aba9c5cb35b7b154eed.tar.bz2
kernel-common-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.c10
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);