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;
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);