aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorFlorian Fainelli <florian@openwrt.org>2012-10-08 09:11:28 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2012-10-22 14:23:59 -0400
commitd4ae47dc5670efecd2214110caf33dfc0ff7191f (patch)
tree644fbfdd28236f968b60a014af851a7612f335e5 /drivers
parentcd1965db054eeace344487b9c8560439961f5f55 (diff)
USB: ohci: remove check for RH already suspended in ohci_suspend
As suggested by Alan Stern, the code checking for the OHCI RH already suspended is no longer required since the bug it fixes has not been seen in ages. Remove that check making ohci_suspend much simpler. Signed-off-by: Florian Fainelli <florian@openwrt.org> Acked-by: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/usb/host/ohci-hcd.c11
1 files changed, 2 insertions, 9 deletions
diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c
index 1382689b31db..76663295e1c7 100644
--- a/drivers/usb/host/ohci-hcd.c
+++ b/drivers/usb/host/ohci-hcd.c
@@ -1017,26 +1017,19 @@ static int __maybe_unused ohci_suspend(struct usb_hcd *hcd, bool do_wakeup)
1017{ 1017{
1018 struct ohci_hcd *ohci = hcd_to_ohci (hcd); 1018 struct ohci_hcd *ohci = hcd_to_ohci (hcd);
1019 unsigned long flags; 1019 unsigned long flags;
1020 int rc = 0;
1021 1020
1022 /* Root hub was already suspended. Disable irq emission and 1021 /* Disable irq emission and mark HW unaccessible. Use
1023 * mark HW unaccessible, bail out if RH has been resumed. Use
1024 * the spinlock to properly synchronize with possible pending 1022 * the spinlock to properly synchronize with possible pending
1025 * RH suspend or resume activity. 1023 * RH suspend or resume activity.
1026 */ 1024 */
1027 spin_lock_irqsave (&ohci->lock, flags); 1025 spin_lock_irqsave (&ohci->lock, flags);
1028 if (ohci->rh_state != OHCI_RH_SUSPENDED) {
1029 rc = -EINVAL;
1030 goto bail;
1031 }
1032 ohci_writel(ohci, OHCI_INTR_MIE, &ohci->regs->intrdisable); 1026 ohci_writel(ohci, OHCI_INTR_MIE, &ohci->regs->intrdisable);
1033 (void)ohci_readl(ohci, &ohci->regs->intrdisable); 1027 (void)ohci_readl(ohci, &ohci->regs->intrdisable);
1034 1028
1035 clear_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags); 1029 clear_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags);
1036 bail:
1037 spin_unlock_irqrestore (&ohci->lock, flags); 1030 spin_unlock_irqrestore (&ohci->lock, flags);
1038 1031
1039 return rc; 1032 return 0;
1040} 1033}
1041 1034
1042 1035