usb:host:usb devices can be detected but can't work when boot up
authorfeng wang <feng.a.wang@intel.com>
Thu, 19 Jan 2012 10:30:56 +0000 (18:30 +0800)
committerbuildbot <buildbot@intel.com>
Mon, 6 Feb 2012 11:27:56 +0000 (03:27 -0800)
         system with Hub&keyboard&mouse connected

BZ: 19184

When registering a new composite driver in system start up, pull up D+ will
be called.USBCMD registers will be changed and host controller will be halt.
This will lead to host controller halt in a_host mode.

Change-Id: I82076437c9eb9e115f98102653fb3a0861943de8
Reviewed-on: http://android.intel.com:8080/32475
Reviewed-by: Wang, Feng A <feng.a.wang@intel.com>
Reviewed-by: Zhuang, Jin Can <jin.can.zhuang@intel.com>
Reviewed-by: Tang, Richard <richard.tang@intel.com>
Reviewed-by: Gross, Mark <mark.gross@intel.com>
Tested-by: Sun, Jianhua <jianhua.sun@intel.com>
Reviewed-by: Wu, Hao <hao.wu@intel.com>
Reviewed-by: buildbot <buildbot@intel.com>
Tested-by: buildbot <buildbot@intel.com>
drivers/usb/gadget/langwell_udc.c

index 28059bb..972fdb4 100644 (file)
@@ -1428,6 +1428,12 @@ static int langwell_pullup(struct usb_gadget *_gadget, int is_on)
 
        dev_vdbg(&dev->pdev->dev, "---> %s()\n", __func__);
 
+       if (!dev->got_irq) {
+               dev_vdbg(&dev->pdev->dev, "<--- %s() return with got_irq = %d\n",
+               __func__, dev->got_irq);
+               return -ENODEV;
+       }
+
        pm_runtime_get_sync(&dev->pdev->dev);
        /* PHY should exit low power before set USBCMD Run/Stop */
        langwell_phy_low_power(dev, 0);