USB: dwc_otg_310: release channel for qtd that has been dequeued before
authorYunzhi Li <lyz@rock-chips.com>
Fri, 28 Aug 2015 07:34:34 +0000 (15:34 +0800)
committerYunzhi Li <lyz@rock-chips.com>
Tue, 1 Sep 2015 06:17:31 +0000 (14:17 +0800)
Change-Id: I184ed185074b2ccee24cbbf57c9ff1dad06bd9d7
Signed-off-by: Yunzhi Li <lyz@rock-chips.com>
drivers/usb/dwc_otg_310/dwc_otg_hcd_intr.c

index f462accd82e10b5e4b245b6377d6be39b97949dc..533799708553a5c8835c52a221edda9f1c0debb2 100755 (executable)
@@ -2110,6 +2110,8 @@ int32_t dwc_otg_hcd_handle_hc_n_intr(dwc_otg_hcd_t *dwc_otg_hcd, uint32_t num)
                /* All transfer had been killed, clear panding interrupts */
                hcint.d32 = DWC_READ_REG32(&hc_regs->hcint);
                DWC_WRITE_REG32(&hc_regs->hcint, hcint.d32);
+               release_channel(dwc_otg_hcd, hc, NULL,
+                               DWC_OTG_HC_XFER_URB_DEQUEUE);
                return retval;
        }
        qtd = DWC_CIRCLEQ_FIRST(&hc->qh->qtd_list);