struct delayed_work boost_cpu_freq_work;
struct pm_qos_request boost_cpu_freq_req;
#endif
- bool is_skip_resume_enabled;
};
struct dma_align_buffer {
ehci_dbg(ehci, "pmc interrupt detected\n");
wake_lock_timeout(&tegra->ehci_wake_lock, HZ);
usb_hcd_resume_root_hub(hcd);
- hcd_to_bus(hcd)->skip_resume = false;
spin_unlock(&ehci->lock);
return irq_status;
}
err = ehci_bus_suspend(hcd);
if (err)
tegra->bus_suspended_fail = true;
- else {
+ else
usb_phy_set_suspend(get_usb_phy(tegra->phy), 1);
- hcd_to_bus(hcd)->skip_resume = true;
- }
mutex_unlock(&tegra->sync_lock);
EHCI_DBG("%s() END\n", __func__);
tegra->ehci = hcd_to_ehci(hcd);
- hcd_to_bus(hcd)->skip_resume = pdata->u_data.host.skip_resume;
- tegra->is_skip_resume_enabled = pdata->u_data.host.skip_resume;
if (pdata->port_otg) {
tegra->transceiver =
devm_usb_get_phy(&pdev->dev, USB_PHY_TYPE_USB2);
int err = 0;
struct tegra_ehci_hcd *tegra = platform_get_drvdata(pdev);
struct tegra_usb_platform_data *pdata = dev_get_platdata(&pdev->dev);
- struct usb_hcd *hcd = ehci_to_hcd(tegra->ehci);
-
if (tegra->irq) {
err = disable_irq_wake(tegra->irq);
if (err < 0)
"Couldn't disable USB host mode wakeup, irq=%d, "
"error=%d\n", tegra->irq, err);
}
-
- if (tegra->is_skip_resume_enabled) {
- if (tegra_usb_phy_is_pmc_wake(tegra->phy))
- hcd_to_bus(hcd)->skip_resume = false;
- }
-
if (pdata->u_data.host.turn_off_vbus_on_lp0) {
tegra_usb_enable_vbus(tegra->phy, true);
tegra_ehci_notify_event(tegra, USB_EVENT_ID);
}
- if (tegra->is_skip_resume_enabled)
- return 0;
- else
- return tegra_usb_phy_power_on(tegra->phy);
-
+ return tegra_usb_phy_power_on(tegra->phy);
}
static int tegra_ehci_suspend(struct platform_device *pdev, pm_message_t state)
if (tegra->bus_suspended_fail)
return -EBUSY;
else {
- if (!tegra->is_skip_resume_enabled) {
- err = tegra_usb_phy_power_off(tegra->phy);
- if (err < 0)
- return err;
- if (pdata->u_data.host.turn_off_vbus_on_lp0) {
- tegra_usb_enable_vbus(tegra->phy, false);
- tegra_usb_phy_pmc_disable(tegra->phy);
- }
+ err = tegra_usb_phy_power_off(tegra->phy);
+ if (err < 0)
+ return err;
+ if (pdata->u_data.host.turn_off_vbus_on_lp0) {
+ tegra_usb_enable_vbus(tegra->phy, false);
+ tegra_usb_phy_pmc_disable(tegra->phy);
}
if (tegra->irq) {
err = enable_irq_wake(tegra->irq);