From 3c3574a139f9093d6841b2483c0015060f88ee55 Mon Sep 17 00:00:00 2001 From: Preetham Chandru R Date: Thu, 29 Nov 2012 17:08:50 +0530 Subject: usb: tegra: conditionally set wake enable Set wake enable only if remote wakeup is supported by the platform Bug 1039143 Signed-off-by: Preetham Chandru R Change-Id: I805dd773cdbb5639f59b2f5ba4bcb2e14be74d5b Reviewed-on: http://git-master/r/147462 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Suresh Mangipudi Reviewed-by: Krishna Yarlagadda Reviewed-by: Bitan Biswas Reviewed-by: Matthew Pedro --- drivers/usb/gadget/tegra_udc.c | 16 ++++++++++------ drivers/usb/host/ehci-tegra.c | 20 ++++++++++++-------- drivers/usb/otg/tegra-otg.c | 14 ++++++++------ 3 files changed, 30 insertions(+), 20 deletions(-) (limited to 'drivers') diff --git a/drivers/usb/gadget/tegra_udc.c b/drivers/usb/gadget/tegra_udc.c index ddf9c602dc89..9af22ebe8b58 100644 --- a/drivers/usb/gadget/tegra_udc.c +++ b/drivers/usb/gadget/tegra_udc.c @@ -38,6 +38,7 @@ #include #include #include +#include #include #include @@ -2565,6 +2566,7 @@ static int __init tegra_udc_probe(struct platform_device *pdev) { struct tegra_udc *udc; struct resource *res; + struct tegra_usb_platform_data *pdata = dev_get_platdata(&pdev->dev); int err = -ENODEV; DBG("%s(%d) BEGIN\n", __func__, __LINE__); @@ -2615,12 +2617,14 @@ static int __init tegra_udc_probe(struct platform_device *pdev) goto err_iounmap; } - err = enable_irq_wake(udc->irq); - if (err < 0) { - dev_warn(&pdev->dev, - "Couldn't enable USB udc mode wakeup, irq=%d, error=%d\n", - udc->irq, err); - err = 0; + if (pdata->u_data.dev.remote_wakeup_supported) { + err = enable_irq_wake(udc->irq); + if (err < 0) { + dev_warn(&pdev->dev, + "Couldn't enable USB udc mode wakeup, irq=%d," + " error=%d\n", udc->irq, err); + err = 0; + } } udc->phy = tegra_usb_phy_open(pdev); diff --git a/drivers/usb/host/ehci-tegra.c b/drivers/usb/host/ehci-tegra.c index af6fa87fb645..4ddb279cfb35 100644 --- a/drivers/usb/host/ehci-tegra.c +++ b/drivers/usb/host/ehci-tegra.c @@ -407,6 +407,7 @@ static int tegra_ehci_probe(struct platform_device *pdev) struct resource *res; struct usb_hcd *hcd; struct tegra_ehci_hcd *tegra; + struct tegra_usb_platform_data *pdata = dev_get_platdata(&pdev->dev); int err = 0; int irq; @@ -477,13 +478,15 @@ static int tegra_ehci_probe(struct platform_device *pdev) goto fail_phy; } - err = enable_irq_wake(tegra->irq); - if (err < 0) { - dev_warn(&pdev->dev, - "Couldn't enable USB host mode wakeup, irq=%d, " - "error=%d\n", irq, err); - err = 0; - tegra->irq = 0; + if (pdata->u_data.host.remote_wakeup_supported) { + err = enable_irq_wake(tegra->irq); + if (err < 0) { + dev_warn(&pdev->dev, + "Couldn't enable USB host mode wakeup," + " irq=%d error=%d\n", irq, err); + err = 0; + tegra->irq = 0; + } } tegra->ehci = hcd_to_ehci(hcd); @@ -531,6 +534,7 @@ static int tegra_ehci_suspend(struct platform_device *pdev, pm_message_t state) static int tegra_ehci_remove(struct platform_device *pdev) { 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 == NULL || hcd == NULL) @@ -543,7 +547,7 @@ static int tegra_ehci_remove(struct platform_device *pdev) } #endif - if (tegra->irq) + if (tegra->irq && pdata->u_data.host.remote_wakeup_supported) disable_irq_wake(tegra->irq); /* Make sure phy is powered ON to access USB register */ diff --git a/drivers/usb/otg/tegra-otg.c b/drivers/usb/otg/tegra-otg.c index 22e303ede24e..ce19f77433fc 100644 --- a/drivers/usb/otg/tegra-otg.c +++ b/drivers/usb/otg/tegra-otg.c @@ -472,12 +472,14 @@ static int tegra_otg_probe(struct platform_device *pdev) goto err_irq; } - err = enable_irq_wake(tegra->irq); - if (err < 0) { - dev_warn(&pdev->dev, - "Couldn't enable USB otg mode wakeup, irq=%d, error=%d\n", - tegra->irq, err); - err = 0; + if (pdata->ehci_pdata->u_data.host.remote_wakeup_supported) { + err = enable_irq_wake(tegra->irq); + if (err < 0) { + dev_warn(&pdev->dev, + "Couldn't enable USB otg mode wakeup," + " irq=%d, error=%d\n", tegra->irq, err); + err = 0; + } } INIT_WORK(&tegra->work, irq_work); -- cgit v1.2.3