diff options
author | Suresh Mangipudi <smangipudi@nvidia.com> | 2014-01-10 15:46:08 +0530 |
---|---|---|
committer | Suresh Mangipudi <smangipudi@nvidia.com> | 2014-01-13 04:06:52 -0800 |
commit | 9f0db0c9b9991adb0978cc85ade2efd5be7b0fdb (patch) | |
tree | a9c3d395c443586498e0bfe0069dd12037e0e8c1 /drivers/usb/gadget | |
parent | a2a718903ae979b57cb9c2c6b9c66b41037d1363 (diff) |
usb: tegra: wake enable at suspend
enable_irq_wake call moved from probe function to suspend.
Resume function has disable_irq_wake call
Bug 992448
Change-Id: I7612887dd8db274a1994eb0ca1713becba69eca8
Signed-off-by: Suresh Mangipudi <smangipudi@nvidia.com>
Reviewed-on: http://git-master/r/354182
Reviewed-by: Automatic_Commit_Validation_User
GVS: Gerrit_Virtual_Submit
Reviewed-by: Venkat Moganty <vmoganty@nvidia.com>
Diffstat (limited to 'drivers/usb/gadget')
-rw-r--r-- | drivers/usb/gadget/tegra_udc.c | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/drivers/usb/gadget/tegra_udc.c b/drivers/usb/gadget/tegra_udc.c index 2fdb51581213..1caade8a4a33 100644 --- a/drivers/usb/gadget/tegra_udc.c +++ b/drivers/usb/gadget/tegra_udc.c @@ -2842,13 +2842,6 @@ 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; - } /*Disable fence read if H/W support is disabled*/ pdata = dev_get_platdata(&pdev->dev); if (pdata) { @@ -3090,6 +3083,7 @@ static int tegra_udc_suspend(struct platform_device *pdev, pm_message_t state) unsigned long flags; u32 temp; + int err = 0; DBG("%s(%d) BEGIN\n", __func__, __LINE__); if (udc->support_pmu_vbus) { @@ -3108,6 +3102,14 @@ static int tegra_udc_suspend(struct platform_device *pdev, pm_message_t state) if (udc->transceiver) return 0; + if (udc->irq) { + err = enable_irq_wake(udc->irq); + if (err < 0) + dev_err(&pdev->dev, + "Couldn't enable USB udc mode wakeup," + " irq=%d, error=%d\n", udc->irq, err); + } + if (udc->vbus_active) { spin_lock_irqsave(&udc->lock, flags); /* Reset all internal Queues and inform client driver */ @@ -3130,6 +3132,7 @@ static int tegra_udc_resume(struct platform_device *pdev) struct tegra_udc *udc = platform_get_drvdata(pdev); u32 temp; + int err = 0; DBG("%s(%d) BEGIN\n", __func__, __LINE__); udc->vbus_in_lp0 = false; @@ -3159,6 +3162,14 @@ static int tegra_udc_resume(struct platform_device *pdev) if (udc->transceiver) return 0; + if (udc->irq) { + err = disable_irq_wake(udc->irq); + if (err < 0) + dev_err(&pdev->dev, + "Couldn't disable USB udc mode wakeup, " + "irq=%d, error=%d\n", udc->irq, err); + } + tegra_usb_phy_power_on(udc->phy); tegra_udc_restart(udc); |