From 44e09c74704dffa6f36c009261598df99ba146eb Mon Sep 17 00:00:00 2001 From: Peter Hurley Date: Wed, 27 Mar 2013 06:59:59 -0400 Subject: [PATCH] --- yaml --- r: 374701 b: refs/heads/master c: 8db491490b88c8b016b41ad56ac980c4cbb06d7a h: refs/heads/master i: 374699: c58bd79ce3f8203fd73736333426b61835b7a569 v: v3 --- [refs] | 2 +- trunk/drivers/firewire/ohci.c | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index 7c4d19d91e8d..fe473ae0e767 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 247fd50b5953d2b07832a07bd1d1c3b8e221fe9e +refs/heads/master: 8db491490b88c8b016b41ad56ac980c4cbb06d7a diff --git a/trunk/drivers/firewire/ohci.c b/trunk/drivers/firewire/ohci.c index 48889353723f..673c8970749e 100644 --- a/trunk/drivers/firewire/ohci.c +++ b/trunk/drivers/firewire/ohci.c @@ -3712,11 +3712,16 @@ static int pci_probe(struct pci_dev *dev, static void pci_remove(struct pci_dev *dev) { - struct fw_ohci *ohci; + struct fw_ohci *ohci = pci_get_drvdata(dev); - ohci = pci_get_drvdata(dev); - reg_write(ohci, OHCI1394_IntMaskClear, ~0); - flush_writes(ohci); + /* + * If the removal is happening from the suspend state, LPS won't be + * enabled and host registers (eg., IntMaskClear) won't be accessible. + */ + if (reg_read(ohci, OHCI1394_HCControlSet) & OHCI1394_HCControl_LPS) { + reg_write(ohci, OHCI1394_IntMaskClear, ~0); + flush_writes(ohci); + } cancel_work_sync(&ohci->bus_reset_work); fw_core_remove_card(&ohci->card);