Lines Matching refs:qtd

88 				    struct dwc2_qtd *qtd)  in dwc2_hc_handle_tt_clear()  argument
98 if (!qtd->urb) in dwc2_hc_handle_tt_clear()
101 usb_urb = qtd->urb->priv; in dwc2_hc_handle_tt_clear()
105 if (qtd->urb->status != -EPIPE && qtd->urb->status != -EREMOTEIO) { in dwc2_hc_handle_tt_clear()
402 struct dwc2_qtd *qtd, in dwc2_get_actual_xfer_length() argument
418 length = qtd->ssplit_out_xfer_count; in dwc2_get_actual_xfer_length()
451 struct dwc2_qtd *qtd) in dwc2_update_urb_state() argument
456 int xfer_length = dwc2_get_actual_xfer_length(hsotg, chan, chnum, qtd, in dwc2_update_urb_state()
507 struct dwc2_qtd *qtd) in dwc2_hcd_save_data_toggle() argument
519 qtd->data_toggle = DWC2_HC_PID_DATA0; in dwc2_hcd_save_data_toggle()
521 qtd->data_toggle = DWC2_HC_PID_DATA1; in dwc2_hcd_save_data_toggle()
537 int chnum, struct dwc2_qtd *qtd, in dwc2_update_isoc_urb_state() argument
541 struct dwc2_hcd_urb *urb = qtd->urb; in dwc2_update_isoc_urb_state()
546 frame_desc = &urb->iso_descs[qtd->isoc_frame_index]; in dwc2_update_isoc_urb_state()
552 chan, chnum, qtd, halt_status, NULL); in dwc2_update_isoc_urb_state()
560 qtd->isoc_split_offset, chan->qh->dw_align_buf, in dwc2_update_isoc_urb_state()
581 chan, chnum, qtd, halt_status, NULL); in dwc2_update_isoc_urb_state()
589 qtd->isoc_split_offset, chan->qh->dw_align_buf, in dwc2_update_isoc_urb_state()
597 qtd->complete_split = 0; in dwc2_update_isoc_urb_state()
598 qtd->isoc_split_offset = 0; in dwc2_update_isoc_urb_state()
608 if (++qtd->isoc_frame_index == urb->packet_count) { in dwc2_update_isoc_urb_state()
613 dwc2_host_complete(hsotg, qtd, 0); in dwc2_update_isoc_urb_state()
633 struct dwc2_qtd *qtd; in dwc2_deactivate_qh() local
644 qtd = list_first_entry(&qh->qtd_list, struct dwc2_qtd, qtd_list_entry); in dwc2_deactivate_qh()
646 if (qtd->complete_split) in dwc2_deactivate_qh()
648 else if (qtd->isoc_split_pos == DWC2_HCSPLT_XACTPOS_MID || in dwc2_deactivate_qh()
649 qtd->isoc_split_pos == DWC2_HCSPLT_XACTPOS_END) in dwc2_deactivate_qh()
653 dwc2_hcd_qtd_unlink_and_free(hsotg, qtd, qh); in dwc2_deactivate_qh()
679 struct dwc2_qtd *qtd, in dwc2_release_channel() argument
700 if (qtd && qtd->error_count >= 3) { in dwc2_release_channel()
704 dwc2_host_complete(hsotg, qtd, -EPROTO); in dwc2_release_channel()
717 dwc2_host_complete(hsotg, qtd, -EIO); in dwc2_release_channel()
777 struct dwc2_host_chan *chan, struct dwc2_qtd *qtd, in dwc2_halt_channel() argument
786 dwc2_release_channel(hsotg, chan, qtd, halt_status); in dwc2_halt_channel()
838 int chnum, struct dwc2_qtd *qtd, in dwc2_complete_non_periodic_xfer() argument
843 qtd->error_count = 0; in dwc2_complete_non_periodic_xfer()
871 dwc2_halt_channel(hsotg, chan, qtd, halt_status); in dwc2_complete_non_periodic_xfer()
877 dwc2_release_channel(hsotg, chan, qtd, halt_status); in dwc2_complete_non_periodic_xfer()
888 struct dwc2_qtd *qtd, in dwc2_complete_periodic_xfer() argument
893 qtd->error_count = 0; in dwc2_complete_periodic_xfer()
897 dwc2_release_channel(hsotg, chan, qtd, halt_status); in dwc2_complete_periodic_xfer()
900 dwc2_halt_channel(hsotg, chan, qtd, halt_status); in dwc2_complete_periodic_xfer()
905 struct dwc2_qtd *qtd) in dwc2_xfercomp_isoc_split_in() argument
910 if (!qtd->urb) in dwc2_xfercomp_isoc_split_in()
913 frame_desc = &qtd->urb->iso_descs[qtd->isoc_frame_index]; in dwc2_xfercomp_isoc_split_in()
914 len = dwc2_get_actual_xfer_length(hsotg, chan, chnum, qtd, in dwc2_xfercomp_isoc_split_in()
917 qtd->complete_split = 0; in dwc2_xfercomp_isoc_split_in()
918 qtd->isoc_split_offset = 0; in dwc2_xfercomp_isoc_split_in()
926 memcpy(qtd->urb->buf + frame_desc->offset + in dwc2_xfercomp_isoc_split_in()
927 qtd->isoc_split_offset, chan->qh->dw_align_buf, len); in dwc2_xfercomp_isoc_split_in()
930 qtd->isoc_split_offset += len; in dwc2_xfercomp_isoc_split_in()
934 qtd->isoc_frame_index++; in dwc2_xfercomp_isoc_split_in()
935 qtd->complete_split = 0; in dwc2_xfercomp_isoc_split_in()
936 qtd->isoc_split_offset = 0; in dwc2_xfercomp_isoc_split_in()
939 if (qtd->isoc_frame_index == qtd->urb->packet_count) { in dwc2_xfercomp_isoc_split_in()
940 dwc2_host_complete(hsotg, qtd, 0); in dwc2_xfercomp_isoc_split_in()
941 dwc2_release_channel(hsotg, chan, qtd, in dwc2_xfercomp_isoc_split_in()
944 dwc2_release_channel(hsotg, chan, qtd, in dwc2_xfercomp_isoc_split_in()
957 struct dwc2_qtd *qtd) in dwc2_hc_xfercomp_intr() argument
959 struct dwc2_hcd_urb *urb = qtd->urb; in dwc2_hc_xfercomp_intr()
986 if (qtd->complete_split && in dwc2_hc_xfercomp_intr()
988 qtd)) in dwc2_hc_xfercomp_intr()
991 qtd->complete_split = 0; in dwc2_hc_xfercomp_intr()
998 switch (qtd->control_phase) { in dwc2_hc_xfercomp_intr()
1001 qtd->control_phase = DWC2_CONTROL_DATA; in dwc2_hc_xfercomp_intr()
1003 qtd->control_phase = DWC2_CONTROL_STATUS; in dwc2_hc_xfercomp_intr()
1010 chnum, urb, qtd); in dwc2_hc_xfercomp_intr()
1012 qtd->control_phase = DWC2_CONTROL_STATUS; in dwc2_hc_xfercomp_intr()
1017 qtd); in dwc2_hc_xfercomp_intr()
1025 dwc2_host_complete(hsotg, qtd, urb->status); in dwc2_hc_xfercomp_intr()
1030 dwc2_complete_non_periodic_xfer(hsotg, chan, chnum, qtd, in dwc2_hc_xfercomp_intr()
1036 qtd); in dwc2_hc_xfercomp_intr()
1038 dwc2_host_complete(hsotg, qtd, urb->status); in dwc2_hc_xfercomp_intr()
1044 dwc2_hcd_save_data_toggle(hsotg, chan, chnum, qtd); in dwc2_hc_xfercomp_intr()
1045 dwc2_complete_non_periodic_xfer(hsotg, chan, chnum, qtd, in dwc2_hc_xfercomp_intr()
1051 qtd); in dwc2_hc_xfercomp_intr()
1058 dwc2_host_complete(hsotg, qtd, urb->status); in dwc2_hc_xfercomp_intr()
1064 dwc2_hcd_save_data_toggle(hsotg, chan, chnum, qtd); in dwc2_hc_xfercomp_intr()
1065 dwc2_complete_periodic_xfer(hsotg, chan, chnum, qtd, in dwc2_hc_xfercomp_intr()
1071 if (qtd->isoc_split_pos == DWC2_HCSPLT_XACTPOS_ALL) in dwc2_hc_xfercomp_intr()
1073 chnum, qtd, DWC2_HC_XFER_COMPLETE); in dwc2_hc_xfercomp_intr()
1074 dwc2_complete_periodic_xfer(hsotg, chan, chnum, qtd, in dwc2_hc_xfercomp_intr()
1089 struct dwc2_qtd *qtd) in dwc2_hc_stall_intr() argument
1091 struct dwc2_hcd_urb *urb = qtd->urb; in dwc2_hc_stall_intr()
1109 dwc2_host_complete(hsotg, qtd, -EPIPE); in dwc2_hc_stall_intr()
1113 dwc2_host_complete(hsotg, qtd, -EPIPE); in dwc2_hc_stall_intr()
1125 dwc2_halt_channel(hsotg, chan, qtd, DWC2_HC_XFER_STALL); in dwc2_hc_stall_intr()
1140 struct dwc2_qtd *qtd, in dwc2_update_urb_state_abn() argument
1144 qtd, halt_status, NULL); in dwc2_update_urb_state_abn()
1183 struct dwc2_qtd *qtd) in dwc2_hc_nak_intr() argument
1195 qtd->error_count = 0; in dwc2_hc_nak_intr()
1196 qtd->complete_split = 0; in dwc2_hc_nak_intr()
1197 dwc2_halt_channel(hsotg, chan, qtd, DWC2_HC_XFER_NAK); in dwc2_hc_nak_intr()
1201 switch (dwc2_hcd_get_pipe_type(&qtd->urb->pipe_info)) { in dwc2_hc_nak_intr()
1211 qtd->error_count = 0; in dwc2_hc_nak_intr()
1220 qtd->error_count = 0; in dwc2_hc_nak_intr()
1223 dwc2_update_urb_state_abn(hsotg, chan, chnum, qtd->urb, in dwc2_hc_nak_intr()
1224 qtd, DWC2_HC_XFER_NAK); in dwc2_hc_nak_intr()
1225 dwc2_hcd_save_data_toggle(hsotg, chan, chnum, qtd); in dwc2_hc_nak_intr()
1236 dwc2_halt_channel(hsotg, chan, qtd, DWC2_HC_XFER_NAK); in dwc2_hc_nak_intr()
1239 qtd->error_count = 0; in dwc2_hc_nak_intr()
1240 dwc2_halt_channel(hsotg, chan, qtd, DWC2_HC_XFER_NAK); in dwc2_hc_nak_intr()
1259 struct dwc2_qtd *qtd) in dwc2_hc_ack_intr() argument
1271 qtd->ssplit_out_xfer_count = chan->xfer_len; in dwc2_hc_ack_intr()
1274 qtd->complete_split = 1; in dwc2_hc_ack_intr()
1275 dwc2_halt_channel(hsotg, chan, qtd, DWC2_HC_XFER_ACK); in dwc2_hc_ack_intr()
1282 qtd->isoc_split_pos = DWC2_HCSPLT_XACTPOS_ALL; in dwc2_hc_ack_intr()
1283 qtd->isoc_split_offset = 0; in dwc2_hc_ack_intr()
1292 frame_desc = &qtd->urb->iso_descs[ in dwc2_hc_ack_intr()
1293 qtd->isoc_frame_index]; in dwc2_hc_ack_intr()
1294 qtd->isoc_split_offset += 188; in dwc2_hc_ack_intr()
1296 if (frame_desc->length - qtd->isoc_split_offset in dwc2_hc_ack_intr()
1298 qtd->isoc_split_pos = in dwc2_hc_ack_intr()
1301 qtd->isoc_split_pos = in dwc2_hc_ack_intr()
1307 qtd->error_count = 0; in dwc2_hc_ack_intr()
1318 dwc2_halt_channel(hsotg, chan, qtd, DWC2_HC_XFER_ACK); in dwc2_hc_ack_intr()
1338 struct dwc2_qtd *qtd) in dwc2_hc_nyet_intr() argument
1351 qtd->complete_split = 0; in dwc2_hc_nyet_intr()
1352 qtd->isoc_split_offset = 0; in dwc2_hc_nyet_intr()
1353 qtd->isoc_frame_index++; in dwc2_hc_nyet_intr()
1354 if (qtd->urb && in dwc2_hc_nyet_intr()
1355 qtd->isoc_frame_index == qtd->urb->packet_count) { in dwc2_hc_nyet_intr()
1356 dwc2_host_complete(hsotg, qtd, 0); in dwc2_hc_nyet_intr()
1357 dwc2_release_channel(hsotg, chan, qtd, in dwc2_hc_nyet_intr()
1360 dwc2_release_channel(hsotg, chan, qtd, in dwc2_hc_nyet_intr()
1384 qtd->error_count++; in dwc2_hc_nyet_intr()
1386 qtd->complete_split = 0; in dwc2_hc_nyet_intr()
1387 dwc2_halt_channel(hsotg, chan, qtd, in dwc2_hc_nyet_intr()
1394 dwc2_halt_channel(hsotg, chan, qtd, DWC2_HC_XFER_NYET); in dwc2_hc_nyet_intr()
1399 qtd->error_count = 0; in dwc2_hc_nyet_intr()
1401 dwc2_update_urb_state_abn(hsotg, chan, chnum, qtd->urb, qtd, in dwc2_hc_nyet_intr()
1403 dwc2_hcd_save_data_toggle(hsotg, chan, chnum, qtd); in dwc2_hc_nyet_intr()
1409 dwc2_halt_channel(hsotg, chan, qtd, DWC2_HC_XFER_NYET); in dwc2_hc_nyet_intr()
1421 struct dwc2_qtd *qtd) in dwc2_hc_babble_intr() argument
1426 dwc2_hc_handle_tt_clear(hsotg, chan, qtd); in dwc2_hc_babble_intr()
1435 dwc2_host_complete(hsotg, qtd, -EOVERFLOW); in dwc2_hc_babble_intr()
1436 dwc2_halt_channel(hsotg, chan, qtd, DWC2_HC_XFER_BABBLE_ERR); in dwc2_hc_babble_intr()
1441 qtd, DWC2_HC_XFER_BABBLE_ERR); in dwc2_hc_babble_intr()
1442 dwc2_halt_channel(hsotg, chan, qtd, halt_status); in dwc2_hc_babble_intr()
1455 struct dwc2_qtd *qtd) in dwc2_hc_ahberr_intr() argument
1457 struct dwc2_hcd_urb *urb = qtd->urb; in dwc2_hc_ahberr_intr()
1470 dwc2_hc_handle_tt_clear(hsotg, chan, qtd); in dwc2_hc_ahberr_intr()
1539 dwc2_host_complete(hsotg, qtd, -EIO); in dwc2_hc_ahberr_intr()
1558 struct dwc2_qtd *qtd) in dwc2_hc_xacterr_intr() argument
1563 dwc2_hc_handle_tt_clear(hsotg, chan, qtd); in dwc2_hc_xacterr_intr()
1571 switch (dwc2_hcd_get_pipe_type(&qtd->urb->pipe_info)) { in dwc2_hc_xacterr_intr()
1574 qtd->error_count++; in dwc2_hc_xacterr_intr()
1577 dwc2_update_urb_state_abn(hsotg, chan, chnum, qtd->urb, in dwc2_hc_xacterr_intr()
1578 qtd, DWC2_HC_XFER_XACT_ERR); in dwc2_hc_xacterr_intr()
1579 dwc2_hcd_save_data_toggle(hsotg, chan, chnum, qtd); in dwc2_hc_xacterr_intr()
1588 dwc2_halt_channel(hsotg, chan, qtd, DWC2_HC_XFER_XACT_ERR); in dwc2_hc_xacterr_intr()
1591 qtd->error_count++; in dwc2_hc_xacterr_intr()
1593 qtd->complete_split = 0; in dwc2_hc_xacterr_intr()
1594 dwc2_halt_channel(hsotg, chan, qtd, DWC2_HC_XFER_XACT_ERR); in dwc2_hc_xacterr_intr()
1601 chnum, qtd, DWC2_HC_XFER_XACT_ERR); in dwc2_hc_xacterr_intr()
1602 dwc2_halt_channel(hsotg, chan, qtd, halt_status); in dwc2_hc_xacterr_intr()
1617 struct dwc2_qtd *qtd) in dwc2_hc_frmovrun_intr() argument
1625 dwc2_hc_handle_tt_clear(hsotg, chan, qtd); in dwc2_hc_frmovrun_intr()
1627 switch (dwc2_hcd_get_pipe_type(&qtd->urb->pipe_info)) { in dwc2_hc_frmovrun_intr()
1632 dwc2_halt_channel(hsotg, chan, qtd, DWC2_HC_XFER_FRAME_OVERRUN); in dwc2_hc_frmovrun_intr()
1636 qtd, DWC2_HC_XFER_FRAME_OVERRUN); in dwc2_hc_frmovrun_intr()
1637 dwc2_halt_channel(hsotg, chan, qtd, halt_status); in dwc2_hc_frmovrun_intr()
1650 struct dwc2_qtd *qtd) in dwc2_hc_datatglerr_intr() argument
1656 qtd->error_count = 0; in dwc2_hc_datatglerr_intr()
1662 dwc2_hc_handle_tt_clear(hsotg, chan, qtd); in dwc2_hc_datatglerr_intr()
1675 struct dwc2_qtd *qtd) in dwc2_halt_status_ok() argument
1701 if (qtd) in dwc2_halt_status_ok()
1703 qtd->complete_split); in dwc2_halt_status_ok()
1721 dwc2_halt_channel(hsotg, chan, qtd, chan->halt_status); in dwc2_halt_status_ok()
1735 struct dwc2_qtd *qtd) in dwc2_hc_chhltd_intr_dma() argument
1770 dwc2_release_channel(hsotg, chan, qtd, in dwc2_hc_chhltd_intr_dma()
1786 dwc2_hc_ack_intr(hsotg, chan, chnum, qtd); in dwc2_hc_chhltd_intr_dma()
1787 dwc2_hc_xfercomp_intr(hsotg, chan, chnum, qtd); in dwc2_hc_chhltd_intr_dma()
1789 dwc2_hc_stall_intr(hsotg, chan, chnum, qtd); in dwc2_hc_chhltd_intr_dma()
1797 qtd->error_count = 0; in dwc2_hc_chhltd_intr_dma()
1809 dwc2_hc_xacterr_intr(hsotg, chan, chnum, qtd); in dwc2_hc_chhltd_intr_dma()
1812 dwc2_hc_xacterr_intr(hsotg, chan, chnum, qtd); in dwc2_hc_chhltd_intr_dma()
1815 dwc2_hc_ahberr_intr(hsotg, chan, chnum, qtd); in dwc2_hc_chhltd_intr_dma()
1817 dwc2_hc_babble_intr(hsotg, chan, chnum, qtd); in dwc2_hc_chhltd_intr_dma()
1819 dwc2_hc_frmovrun_intr(hsotg, chan, chnum, qtd); in dwc2_hc_chhltd_intr_dma()
1828 dwc2_hc_nyet_intr(hsotg, chan, chnum, qtd); in dwc2_hc_chhltd_intr_dma()
1838 dwc2_hc_nak_intr(hsotg, chan, chnum, qtd); in dwc2_hc_chhltd_intr_dma()
1848 dwc2_hc_ack_intr(hsotg, chan, chnum, qtd); in dwc2_hc_chhltd_intr_dma()
1861 dwc2_halt_channel(hsotg, chan, qtd, in dwc2_hc_chhltd_intr_dma()
1880 qtd->error_count++; in dwc2_hc_chhltd_intr_dma()
1881 dwc2_update_urb_state_abn(hsotg, chan, chnum, qtd->urb, in dwc2_hc_chhltd_intr_dma()
1882 qtd, DWC2_HC_XFER_XACT_ERR); in dwc2_hc_chhltd_intr_dma()
1883 dwc2_hcd_save_data_toggle(hsotg, chan, chnum, qtd); in dwc2_hc_chhltd_intr_dma()
1884 dwc2_halt_channel(hsotg, chan, qtd, DWC2_HC_XFER_XACT_ERR); in dwc2_hc_chhltd_intr_dma()
1901 struct dwc2_qtd *qtd) in dwc2_hc_chhltd_intr() argument
1908 dwc2_hc_chhltd_intr_dma(hsotg, chan, chnum, qtd); in dwc2_hc_chhltd_intr()
1910 if (!dwc2_halt_status_ok(hsotg, chan, chnum, qtd)) in dwc2_hc_chhltd_intr()
1912 dwc2_release_channel(hsotg, chan, qtd, chan->halt_status); in dwc2_hc_chhltd_intr()
1919 struct dwc2_qtd *qtd; in dwc2_hc_n_intr() local
1981 qtd = list_first_entry(&chan->qh->qtd_list, struct dwc2_qtd, in dwc2_hc_n_intr()
1990 dwc2_hc_xfercomp_intr(hsotg, chan, chnum, qtd); in dwc2_hc_n_intr()
1999 dwc2_hc_chhltd_intr(hsotg, chan, chnum, qtd); in dwc2_hc_n_intr()
2001 dwc2_hc_ahberr_intr(hsotg, chan, chnum, qtd); in dwc2_hc_n_intr()
2003 dwc2_hc_stall_intr(hsotg, chan, chnum, qtd); in dwc2_hc_n_intr()
2005 dwc2_hc_nak_intr(hsotg, chan, chnum, qtd); in dwc2_hc_n_intr()
2007 dwc2_hc_ack_intr(hsotg, chan, chnum, qtd); in dwc2_hc_n_intr()
2009 dwc2_hc_nyet_intr(hsotg, chan, chnum, qtd); in dwc2_hc_n_intr()
2011 dwc2_hc_xacterr_intr(hsotg, chan, chnum, qtd); in dwc2_hc_n_intr()
2013 dwc2_hc_babble_intr(hsotg, chan, chnum, qtd); in dwc2_hc_n_intr()
2015 dwc2_hc_frmovrun_intr(hsotg, chan, chnum, qtd); in dwc2_hc_n_intr()
2017 dwc2_hc_datatglerr_intr(hsotg, chan, chnum, qtd); in dwc2_hc_n_intr()