USB: ohci: move ohci_pci_{suspend,resume} to ohci-hcd.c
As suggested by Alan Stern, move the ohci-pci.c ohci_pci_{suspend,resume} routines to ohci-hcd.c. Due to their move, also rename them to ohci_{suspend,resume} to make it clear they operate on ohci_hcd. Since they are not necessarily called, annotate them with __maybe_unused, and make them enclosed within an #ifdef CONFIG_PM / #endif section. 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>
This commit is contained in:
parent
2b16e39ee0
commit
cd1965db05
@ -1011,6 +1011,49 @@ static int ohci_restart (struct ohci_hcd *ohci)
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_PM
|
||||||
|
|
||||||
|
static int __maybe_unused ohci_suspend(struct usb_hcd *hcd, bool do_wakeup)
|
||||||
|
{
|
||||||
|
struct ohci_hcd *ohci = hcd_to_ohci (hcd);
|
||||||
|
unsigned long flags;
|
||||||
|
int rc = 0;
|
||||||
|
|
||||||
|
/* Root hub was already suspended. Disable irq emission and
|
||||||
|
* mark HW unaccessible, bail out if RH has been resumed. Use
|
||||||
|
* the spinlock to properly synchronize with possible pending
|
||||||
|
* RH suspend or resume activity.
|
||||||
|
*/
|
||||||
|
spin_lock_irqsave (&ohci->lock, flags);
|
||||||
|
if (ohci->rh_state != OHCI_RH_SUSPENDED) {
|
||||||
|
rc = -EINVAL;
|
||||||
|
goto bail;
|
||||||
|
}
|
||||||
|
ohci_writel(ohci, OHCI_INTR_MIE, &ohci->regs->intrdisable);
|
||||||
|
(void)ohci_readl(ohci, &ohci->regs->intrdisable);
|
||||||
|
|
||||||
|
clear_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags);
|
||||||
|
bail:
|
||||||
|
spin_unlock_irqrestore (&ohci->lock, flags);
|
||||||
|
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int __maybe_unused ohci_resume(struct usb_hcd *hcd, bool hibernated)
|
||||||
|
{
|
||||||
|
set_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags);
|
||||||
|
|
||||||
|
/* Make sure resume from hibernation re-enumerates everything */
|
||||||
|
if (hibernated)
|
||||||
|
ohci_usb_reset(hcd_to_ohci(hcd));
|
||||||
|
|
||||||
|
ohci_finish_controller_resume(hcd);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
/*-------------------------------------------------------------------------*/
|
/*-------------------------------------------------------------------------*/
|
||||||
|
|
||||||
MODULE_AUTHOR (DRIVER_AUTHOR);
|
MODULE_AUTHOR (DRIVER_AUTHOR);
|
||||||
|
@ -296,49 +296,6 @@ static int __devinit ohci_pci_start (struct usb_hcd *hcd)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_PM
|
|
||||||
|
|
||||||
static int ohci_pci_suspend(struct usb_hcd *hcd, bool do_wakeup)
|
|
||||||
{
|
|
||||||
struct ohci_hcd *ohci = hcd_to_ohci (hcd);
|
|
||||||
unsigned long flags;
|
|
||||||
int rc = 0;
|
|
||||||
|
|
||||||
/* Root hub was already suspended. Disable irq emission and
|
|
||||||
* mark HW unaccessible, bail out if RH has been resumed. Use
|
|
||||||
* the spinlock to properly synchronize with possible pending
|
|
||||||
* RH suspend or resume activity.
|
|
||||||
*/
|
|
||||||
spin_lock_irqsave (&ohci->lock, flags);
|
|
||||||
if (ohci->rh_state != OHCI_RH_SUSPENDED) {
|
|
||||||
rc = -EINVAL;
|
|
||||||
goto bail;
|
|
||||||
}
|
|
||||||
ohci_writel(ohci, OHCI_INTR_MIE, &ohci->regs->intrdisable);
|
|
||||||
(void)ohci_readl(ohci, &ohci->regs->intrdisable);
|
|
||||||
|
|
||||||
clear_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags);
|
|
||||||
bail:
|
|
||||||
spin_unlock_irqrestore (&ohci->lock, flags);
|
|
||||||
|
|
||||||
return rc;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static int ohci_pci_resume(struct usb_hcd *hcd, bool hibernated)
|
|
||||||
{
|
|
||||||
set_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags);
|
|
||||||
|
|
||||||
/* Make sure resume from hibernation re-enumerates everything */
|
|
||||||
if (hibernated)
|
|
||||||
ohci_usb_reset(hcd_to_ohci(hcd));
|
|
||||||
|
|
||||||
ohci_finish_controller_resume(hcd);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* CONFIG_PM */
|
|
||||||
|
|
||||||
|
|
||||||
/*-------------------------------------------------------------------------*/
|
/*-------------------------------------------------------------------------*/
|
||||||
|
|
||||||
@ -362,8 +319,8 @@ static const struct hc_driver ohci_pci_hc_driver = {
|
|||||||
.shutdown = ohci_shutdown,
|
.shutdown = ohci_shutdown,
|
||||||
|
|
||||||
#ifdef CONFIG_PM
|
#ifdef CONFIG_PM
|
||||||
.pci_suspend = ohci_pci_suspend,
|
.pci_suspend = ohci_suspend,
|
||||||
.pci_resume = ohci_pci_resume,
|
.pci_resume = ohci_resume,
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user