From cfefc1ae7df99c8f3996a52605c2400975b7f59b Mon Sep 17 00:00:00 2001 From: Bitan Biswas Date: Tue, 29 May 2012 22:21:55 +0530 Subject: usb: otg: tegra: wake enabled Wake sources usb VBUS or ID detect enabled bug 980993 bug 936982 Change-Id: Iea36d308c1a118abdb7815212d749bd058d0054f Signed-off-by: Bitan Biswas Reviewed-on: http://git-master/r/103141 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Rakesh Bodla Reviewed-by: Laxman Dewangan --- drivers/usb/gadget/tegra_udc.c | 11 ++++++++++- drivers/usb/host/ehci-tegra.c | 2 +- drivers/usb/otg/tegra-otg.c | 12 +++++++++++- 3 files changed, 22 insertions(+), 3 deletions(-) (limited to 'drivers/usb') diff --git a/drivers/usb/gadget/tegra_udc.c b/drivers/usb/gadget/tegra_udc.c index 7968847f6278..47e2e97984a4 100644 --- a/drivers/usb/gadget/tegra_udc.c +++ b/drivers/usb/gadget/tegra_udc.c @@ -2517,13 +2517,22 @@ static int __init tegra_udc_probe(struct platform_device *pdev) goto err_iounmap; } - err = request_irq(udc->irq, tegra_udc_irq, IRQF_SHARED, + err = request_irq(udc->irq, tegra_udc_irq, + IRQF_SHARED | IRQF_TRIGGER_HIGH, driver_name, udc); if (err) { ERR("cannot request irq %d err %d\n", udc->irq, err); 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; + } + udc->phy = tegra_usb_phy_open(pdev); if (IS_ERR(udc->phy)) { dev_err(&pdev->dev, "failed to open USB phy\n"); diff --git a/drivers/usb/host/ehci-tegra.c b/drivers/usb/host/ehci-tegra.c index a55c16875aa3..be667f0c57c6 100644 --- a/drivers/usb/host/ehci-tegra.c +++ b/drivers/usb/host/ehci-tegra.c @@ -472,7 +472,7 @@ static int tegra_ehci_probe(struct platform_device *pdev) goto fail_phy; } - err = usb_add_hcd(hcd, irq, IRQF_DISABLED | IRQF_SHARED); + err = usb_add_hcd(hcd, irq, IRQF_SHARED | IRQF_TRIGGER_HIGH); if (err) { dev_err(&pdev->dev, "Failed to add USB HCD, error=%d\n", err); goto fail_phy; diff --git a/drivers/usb/otg/tegra-otg.c b/drivers/usb/otg/tegra-otg.c index ee76e6d8f58f..a5e85bf90d14 100644 --- a/drivers/usb/otg/tegra-otg.c +++ b/drivers/usb/otg/tegra-otg.c @@ -445,11 +445,21 @@ static int tegra_otg_probe(struct platform_device *pdev) tegra->irq = res->start; err = request_threaded_irq(tegra->irq, tegra_otg_irq, NULL, - IRQF_SHARED, "tegra-otg", tegra); + IRQF_SHARED | IRQF_TRIGGER_HIGH, + "tegra-otg", tegra); if (err) { dev_err(&pdev->dev, "Failed to register IRQ\n"); 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; + } + INIT_WORK(&tegra->work, irq_work); dev_info(&pdev->dev, "otg transceiver registered\n"); -- cgit v1.2.3