static int ohci_omap3_bus_resume(struct usb_hcd *hcd) { struct device *dev = hcd->self.controller; struct ohci_hcd_omap_platform_data *pdata; struct omap_hwmod *oh; dev_dbg(dev, "ohci_omap3_bus_resume\n"); oh = omap_hwmod_lookup(USBHS_OHCI_HWMODNAME); omap_hwmod_disable_ioring_wakeup(oh); /* Re-enable any external transceiver */ pdata = dev->platform_data; if (pdata->ohci_phy_suspend) pdata->ohci_phy_suspend(0); if (dev->parent) pm_runtime_get_sync(dev->parent); set_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags); enable_irq(hcd->irq); *pdata->usbhs_update_sar = 1; return ohci_bus_resume(hcd); }
static void usbhs_resume_work(struct work_struct *work) { dev_dbg(usbhs_wake->dev, "USB IO PAD Wakeup event triggered\n"); if (usbhs_wake->wakeup_ehci) { usbhs_wake->wakeup_ehci = 0; omap_hwmod_disable_ioring_wakeup(usbhs_wake->oh_ehci); } if (usbhs_wake->wakeup_ohci) { usbhs_wake->wakeup_ohci = 0; omap_hwmod_disable_ioring_wakeup(usbhs_wake->oh_ohci); } if (pm_runtime_suspended(usbhs_wake->dev)) pm_runtime_get_sync(usbhs_wake->dev); }