Example #1
0
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);
}
Example #2
0
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);
}