|
@@ -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);
|
|
|
|