usb: dwc_otg: change method of checking urb dequeue status
[firefly-linux-kernel-4.4.55.git] / drivers / usb / dwc_otg_310 / dwc_otg_hcd_intr.c
index e1dccb1a7a220261f75ef475f6f915b40b386cd6..a7bbaaeeeacd77c232ceb760c2283bebf39e5be4 100755 (executable)
@@ -837,26 +837,6 @@ static void release_channel(dwc_otg_hcd_t *hcd,
        DWC_DEBUGPL(DBG_HCDV, "  %s: channel %d, halt_status %d\n",
                    __func__, hc->hc_num, halt_status);
 
-       if (halt_status != DWC_OTG_HC_XFER_URB_DEQUEUE) {
-               if (((uint32_t) qtd & 0xf0000000) == 0) {
-                       DWC_PRINTF("%s error: qtd %p, status %d 0!!!\n",
-                                  __func__, qtd, halt_status);
-                       goto cleanup;
-               }
-
-               if (((uint32_t) qtd & 0x80000000) == 0) {
-                       DWC_PRINTF("%s error: qtd %p, status %d 1!!!\n",
-                                  __func__, qtd, halt_status);
-                       goto cleanup;
-               }
-
-               if (((uint32_t) qtd->urb & 0xf0000000) == 0) {
-                       DWC_PRINTF("%s qtd %p urb %p, status %d\n", __func__,
-                                  qtd, qtd->urb, halt_status);
-                       goto cleanup;
-               }
-       }
-
        switch (halt_status) {
        case DWC_OTG_HC_XFER_URB_COMPLETE:
                free_qtd = 1;
@@ -1129,17 +1109,15 @@ static int32_t handle_hc_xfercomp_intr(dwc_otg_hcd_t *hcd,
        DWC_DEBUGPL(DBG_HCD, "--Host Channel %d Interrupt: "
                    "Transfer Complete--\n", hc->hc_num);
 
-       if (((uint32_t) qtd & 0xf0000000) == 0) {
-               DWC_PRINTF("%s qtd %p\n", __func__, qtd);
-               release_channel(hcd, hc, qtd, hc->halt_status);
-               return 1;
+       if (!qtd) {
+               release_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_URB_DEQUEUE);
+               goto handle_xfercomp_done;
        }
 
        urb = qtd->urb;
-       if (((uint32_t) urb & 0xf0000000) == 0) {
-               DWC_PRINTF("%s qtd %p, urb %p\n", __func__, qtd, urb);
-               release_channel(hcd, hc, qtd, hc->halt_status);
-               return 1;
+       if (!urb) {
+               release_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_URB_DEQUEUE);
+               goto handle_xfercomp_done;
        }
 
        pipe_type = dwc_otg_hcd_get_pipe_type(&urb->pipe_info);