usb: dwc_otg_310: Fixed that otg-host cannot transport LS device data.
authorFrank Wang <frank.wang@rock-chips.com>
Wed, 8 Jun 2016 02:17:57 +0000 (10:17 +0800)
committerFrank Wang <frank.wang@rock-chips.com>
Wed, 8 Jun 2016 02:37:11 +0000 (10:37 +0800)
Decreasing the use_count of urb is pended since core usb have put it
into the tasklet after HC dequeued, so we add a condition which check
urb in HC queue is NULL or not to enhance exception conditions here.

BUG=Redmine: Defect#95115
TEST=RK3366-SDK, LS mouse device works.

Change-Id: I8b6d8ae2a866817b0c638e0b43811d108962b591
Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
drivers/usb/dwc_otg_310/dwc_otg_hcd_linux.c [changed mode: 0755->0644]

old mode 100755 (executable)
new mode 100644 (file)
index 02e7c12..d5451f0
@@ -993,7 +993,7 @@ static int urb_enqueue(struct usb_hcd *hcd,
        }
 #endif
 
-       if (unlikely(atomic_read(&urb->use_count) > 1)) {
+       if (unlikely(atomic_read(&urb->use_count) > 1) && urb->hcpriv) {
                retval = -EPERM;
                printk("%s urb %p already in queue, qtd %p, use_count %d\n",
                       __func__, urb, urb->hcpriv,