Home
last modified time | relevance | path

Searched refs:qtd (Results 1 - 24 of 24) sorted by relevance

/kernel/linux/linux-5.10/drivers/usb/dwc2/
H A Dhcd_intr.c99 struct dwc2_qtd *qtd) in dwc2_hc_handle_tt_clear()
110 if (!qtd->urb) in dwc2_hc_handle_tt_clear()
113 usb_urb = qtd->urb->priv; in dwc2_hc_handle_tt_clear()
126 if (qtd->urb->status != -EPIPE && qtd->urb->status != -EREMOTEIO) { in dwc2_hc_handle_tt_clear()
438 struct dwc2_qtd *qtd, in dwc2_get_actual_xfer_length()
454 length = qtd->ssplit_out_xfer_count; in dwc2_get_actual_xfer_length()
485 * @qtd: Queue transfer descriptor
493 struct dwc2_qtd *qtd) in dwc2_update_urb_state()
498 int xfer_length = dwc2_get_actual_xfer_length(hsotg, chan, chnum, qtd, in dwc2_update_urb_state()
97 dwc2_hc_handle_tt_clear(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, struct dwc2_qtd *qtd) dwc2_hc_handle_tt_clear() argument
436 dwc2_get_actual_xfer_length(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, int chnum, struct dwc2_qtd *qtd, enum dwc2_halt_status halt_status, int *short_read) dwc2_get_actual_xfer_length() argument
490 dwc2_update_urb_state(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, int chnum, struct dwc2_hcd_urb *urb, struct dwc2_qtd *qtd) dwc2_update_urb_state() argument
540 dwc2_hcd_save_data_toggle(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, int chnum, struct dwc2_qtd *qtd) dwc2_hcd_save_data_toggle() argument
584 dwc2_update_isoc_urb_state( struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, int chnum, struct dwc2_qtd *qtd, enum dwc2_halt_status halt_status) dwc2_update_isoc_urb_state() argument
662 struct dwc2_qtd *qtd; dwc2_deactivate_qh() local
704 dwc2_release_channel(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, struct dwc2_qtd *qtd, enum dwc2_halt_status halt_status) dwc2_release_channel() argument
803 dwc2_halt_channel(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, struct dwc2_qtd *qtd, enum dwc2_halt_status halt_status) dwc2_halt_channel() argument
863 dwc2_complete_non_periodic_xfer(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, int chnum, struct dwc2_qtd *qtd, enum dwc2_halt_status halt_status) dwc2_complete_non_periodic_xfer() argument
913 dwc2_complete_periodic_xfer(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, int chnum, struct dwc2_qtd *qtd, enum dwc2_halt_status halt_status) dwc2_complete_periodic_xfer() argument
930 dwc2_xfercomp_isoc_split_in(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, int chnum, struct dwc2_qtd *qtd) dwc2_xfercomp_isoc_split_in() argument
988 dwc2_hc_xfercomp_intr(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, int chnum, struct dwc2_qtd *qtd) dwc2_hc_xfercomp_intr() argument
1121 dwc2_hc_stall_intr(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, int chnum, struct dwc2_qtd *qtd) dwc2_hc_stall_intr() argument
1171 dwc2_update_urb_state_abn(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, int chnum, struct dwc2_hcd_urb *urb, struct dwc2_qtd *qtd, enum dwc2_halt_status halt_status) dwc2_update_urb_state_abn() argument
1208 dwc2_hc_nak_intr(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, int chnum, struct dwc2_qtd *qtd) dwc2_hc_nak_intr() argument
1313 dwc2_hc_ack_intr(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, int chnum, struct dwc2_qtd *qtd) dwc2_hc_ack_intr() argument
1392 dwc2_hc_nyet_intr(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, int chnum, struct dwc2_qtd *qtd) dwc2_hc_nyet_intr() argument
1516 dwc2_hc_babble_intr(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, int chnum, struct dwc2_qtd *qtd) dwc2_hc_babble_intr() argument
1550 dwc2_hc_ahberr_intr(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, int chnum, struct dwc2_qtd *qtd) dwc2_hc_ahberr_intr() argument
1654 dwc2_hc_xacterr_intr(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, int chnum, struct dwc2_qtd *qtd) dwc2_hc_xacterr_intr() argument
1712 dwc2_hc_frmovrun_intr(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, int chnum, struct dwc2_qtd *qtd) dwc2_hc_frmovrun_intr() argument
1745 dwc2_hc_datatglerr_intr(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, int chnum, struct dwc2_qtd *qtd) dwc2_hc_datatglerr_intr() argument
1770 dwc2_halt_status_ok(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, int chnum, struct dwc2_qtd *qtd) dwc2_halt_status_ok() argument
1830 dwc2_hc_chhltd_intr_dma(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, int chnum, struct dwc2_qtd *qtd) dwc2_hc_chhltd_intr_dma() argument
2008 dwc2_hc_chhltd_intr(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, int chnum, struct dwc2_qtd *qtd) dwc2_hc_chhltd_intr() argument
2031 dwc2_check_qtd_still_ok(struct dwc2_qtd *qtd, struct dwc2_qh *qh) dwc2_check_qtd_still_ok() argument
2046 struct dwc2_qtd *qtd; dwc2_hc_n_intr() local
[all...]
H A Dhcd_ddma.c542 struct dwc2_qtd *qtd, in dwc2_fill_host_isoc_dma_desc()
550 frame_desc = &qtd->urb->iso_descs[qtd->isoc_frame_index_last]; in dwc2_fill_host_isoc_dma_desc()
557 dma_desc->buf = (u32)(qtd->urb->dma + frame_desc->offset); in dwc2_fill_host_isoc_dma_desc()
565 qtd->isoc_frame_index_last++; in dwc2_fill_host_isoc_dma_desc()
569 if (qtd->isoc_frame_index_last == qtd->urb->packet_count) in dwc2_fill_host_isoc_dma_desc()
583 struct dwc2_qtd *qtd; in dwc2_init_isoc_dma_desc() local
622 list_for_each_entry(qtd, &qh->qtd_list, qtd_list_entry) { in dwc2_init_isoc_dma_desc()
623 if (qtd in dwc2_init_isoc_dma_desc()
541 dwc2_fill_host_isoc_dma_desc(struct dwc2_hsotg *hsotg, struct dwc2_qtd *qtd, struct dwc2_qh *qh, u32 max_xfer_size, u16 idx) dwc2_fill_host_isoc_dma_desc() argument
689 dwc2_fill_host_dma_desc(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, struct dwc2_qtd *qtd, struct dwc2_qh *qh, int n_desc) dwc2_fill_host_dma_desc() argument
744 struct dwc2_qtd *qtd; dwc2_init_non_isoc_dma_desc() local
892 dwc2_cmpl_host_isoc_dma_desc(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, struct dwc2_qtd *qtd, struct dwc2_qh *qh, u16 idx) dwc2_cmpl_host_isoc_dma_desc() argument
966 struct dwc2_qtd *qtd, *qtd_tmp; dwc2_complete_isoc_xfer_ddma() local
1067 dwc2_update_non_isoc_urb_state_ddma(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, struct dwc2_qtd *qtd, struct dwc2_dma_desc *dma_desc, enum dwc2_halt_status halt_status, u32 n_bytes, int *xfer_done) dwc2_update_non_isoc_urb_state_ddma() argument
1149 dwc2_process_non_isoc_desc(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, int chnum, struct dwc2_qtd *qtd, int desc_num, enum dwc2_halt_status halt_status, int *xfer_done) dwc2_process_non_isoc_desc() argument
1228 struct dwc2_qtd *qtd = NULL; dwc2_complete_non_isoc_xfer_ddma() local
1313 struct dwc2_qtd *qtd, *qtd_tmp; dwc2_hcd_complete_xfer_ddma() local
[all...]
H A Dhcd.h189 struct dwc2_qtd *qtd; member
574 void dwc2_hcd_qtd_init(struct dwc2_qtd *qtd, struct dwc2_hcd_urb *urb);
575 int dwc2_hcd_qtd_add(struct dwc2_hsotg *hsotg, struct dwc2_qtd *qtd,
580 struct dwc2_qtd *qtd, in dwc2_hcd_qtd_unlink_and_free()
583 list_del(&qtd->qtd_list_entry); in dwc2_hcd_qtd_unlink_and_free()
584 kfree(qtd); in dwc2_hcd_qtd_unlink_and_free()
760 struct dwc2_qtd *qtd);
813 void dwc2_host_complete(struct dwc2_hsotg *hsotg, struct dwc2_qtd *qtd,
579 dwc2_hcd_qtd_unlink_and_free(struct dwc2_hsotg *hsotg, struct dwc2_qtd *qtd, struct dwc2_qh *qh) dwc2_hcd_qtd_unlink_and_free() argument
H A Dhcd.c1609 struct dwc2_qtd *qtd, *qtd_tmp; in dwc2_kill_urbs_in_qh_list() local
1612 list_for_each_entry_safe(qtd, qtd_tmp, &qh->qtd_list, in dwc2_kill_urbs_in_qh_list()
1614 dwc2_host_complete(hsotg, qtd, -ECONNRESET); in dwc2_kill_urbs_in_qh_list()
1615 dwc2_hcd_qtd_unlink_and_free(hsotg, qtd, qh); in dwc2_kill_urbs_in_qh_list()
1623 struct dwc2_qtd *qtd, *qtd_tmp; in dwc2_qh_list_free() local
1640 list_for_each_entry_safe(qtd, qtd_tmp, &qh->qtd_list, in dwc2_qh_list_free()
1642 dwc2_hcd_qtd_unlink_and_free(hsotg, qtd, qh); in dwc2_qh_list_free()
1881 struct dwc2_qtd *qtd) in dwc2_hcd_urb_enqueue()
1906 if (!qtd) in dwc2_hcd_urb_enqueue()
1909 dwc2_hcd_qtd_init(qtd, ur in dwc2_hcd_urb_enqueue()
1879 dwc2_hcd_urb_enqueue(struct dwc2_hsotg *hsotg, struct dwc2_hcd_urb *urb, struct dwc2_qh *qh, struct dwc2_qtd *qtd) dwc2_hcd_urb_enqueue() argument
2000 struct dwc2_qtd *qtd, *qtd_tmp; dwc2_hcd_endpoint_disable() local
2340 dwc2_hc_init_split(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, struct dwc2_qtd *qtd, struct dwc2_hcd_urb *urb) dwc2_hc_init_split() argument
2354 dwc2_hc_init_xfer(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, struct dwc2_qtd *qtd) dwc2_hc_init_xfer() argument
2583 struct dwc2_qtd *qtd; dwc2_assign_and_init_hc() local
3840 struct dwc2_qtd *qtd; dwc2_hcd_dump_state() local
4095 dwc2_host_complete(struct dwc2_hsotg *hsotg, struct dwc2_qtd *qtd, int status) dwc2_host_complete() argument
4567 struct dwc2_qtd *qtd; _dwc2_hcd_urb_enqueue() local
[all...]
H A Dhcd_queue.c2038 * @qtd: The QTD to initialize
2041 void dwc2_hcd_qtd_init(struct dwc2_qtd *qtd, struct dwc2_hcd_urb *urb) in dwc2_hcd_qtd_init() argument
2043 qtd->urb = urb; in dwc2_hcd_qtd_init()
2051 qtd->data_toggle = DWC2_HC_PID_DATA1; in dwc2_hcd_qtd_init()
2052 qtd->control_phase = DWC2_CONTROL_SETUP; in dwc2_hcd_qtd_init()
2056 qtd->complete_split = 0; in dwc2_hcd_qtd_init()
2057 qtd->isoc_split_pos = DWC2_HCSPLT_XACTPOS_ALL; in dwc2_hcd_qtd_init()
2058 qtd->isoc_split_offset = 0; in dwc2_hcd_qtd_init()
2059 qtd->in_process = 0; in dwc2_hcd_qtd_init()
2061 /* Store the qtd pt in dwc2_hcd_qtd_init()
2078 dwc2_hcd_qtd_add(struct dwc2_hsotg *hsotg, struct dwc2_qtd *qtd, struct dwc2_qh *qh) dwc2_hcd_qtd_add() argument
[all...]
/kernel/linux/linux-6.6/drivers/usb/dwc2/
H A Dhcd_intr.c69 struct dwc2_qtd *qtd) in dwc2_hc_handle_tt_clear()
80 if (!qtd->urb) in dwc2_hc_handle_tt_clear()
83 usb_urb = qtd->urb->priv; in dwc2_hc_handle_tt_clear()
96 if (qtd->urb->status != -EPIPE && qtd->urb->status != -EREMOTEIO) { in dwc2_hc_handle_tt_clear()
408 struct dwc2_qtd *qtd, in dwc2_get_actual_xfer_length()
424 length = qtd->ssplit_out_xfer_count; in dwc2_get_actual_xfer_length()
455 * @qtd: Queue transfer descriptor
463 struct dwc2_qtd *qtd) in dwc2_update_urb_state()
468 int xfer_length = dwc2_get_actual_xfer_length(hsotg, chan, chnum, qtd, in dwc2_update_urb_state()
67 dwc2_hc_handle_tt_clear(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, struct dwc2_qtd *qtd) dwc2_hc_handle_tt_clear() argument
406 dwc2_get_actual_xfer_length(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, int chnum, struct dwc2_qtd *qtd, enum dwc2_halt_status halt_status, int *short_read) dwc2_get_actual_xfer_length() argument
460 dwc2_update_urb_state(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, int chnum, struct dwc2_hcd_urb *urb, struct dwc2_qtd *qtd) dwc2_update_urb_state() argument
510 dwc2_hcd_save_data_toggle(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, int chnum, struct dwc2_qtd *qtd) dwc2_hcd_save_data_toggle() argument
554 dwc2_update_isoc_urb_state( struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, int chnum, struct dwc2_qtd *qtd, enum dwc2_halt_status halt_status) dwc2_update_isoc_urb_state() argument
632 struct dwc2_qtd *qtd; dwc2_deactivate_qh() local
674 dwc2_release_channel(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, struct dwc2_qtd *qtd, enum dwc2_halt_status halt_status) dwc2_release_channel() argument
773 dwc2_halt_channel(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, struct dwc2_qtd *qtd, enum dwc2_halt_status halt_status) dwc2_halt_channel() argument
833 dwc2_complete_non_periodic_xfer(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, int chnum, struct dwc2_qtd *qtd, enum dwc2_halt_status halt_status) dwc2_complete_non_periodic_xfer() argument
883 dwc2_complete_periodic_xfer(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, int chnum, struct dwc2_qtd *qtd, enum dwc2_halt_status halt_status) dwc2_complete_periodic_xfer() argument
900 dwc2_xfercomp_isoc_split_in(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, int chnum, struct dwc2_qtd *qtd) dwc2_xfercomp_isoc_split_in() argument
958 dwc2_hc_xfercomp_intr(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, int chnum, struct dwc2_qtd *qtd) dwc2_hc_xfercomp_intr() argument
1091 dwc2_hc_stall_intr(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, int chnum, struct dwc2_qtd *qtd) dwc2_hc_stall_intr() argument
1141 dwc2_update_urb_state_abn(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, int chnum, struct dwc2_hcd_urb *urb, struct dwc2_qtd *qtd, enum dwc2_halt_status halt_status) dwc2_update_urb_state_abn() argument
1178 dwc2_hc_nak_intr(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, int chnum, struct dwc2_qtd *qtd) dwc2_hc_nak_intr() argument
1283 dwc2_hc_ack_intr(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, int chnum, struct dwc2_qtd *qtd) dwc2_hc_ack_intr() argument
1362 dwc2_hc_nyet_intr(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, int chnum, struct dwc2_qtd *qtd) dwc2_hc_nyet_intr() argument
1486 dwc2_hc_babble_intr(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, int chnum, struct dwc2_qtd *qtd) dwc2_hc_babble_intr() argument
1520 dwc2_hc_ahberr_intr(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, int chnum, struct dwc2_qtd *qtd) dwc2_hc_ahberr_intr() argument
1624 dwc2_hc_xacterr_intr(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, int chnum, struct dwc2_qtd *qtd) dwc2_hc_xacterr_intr() argument
1682 dwc2_hc_frmovrun_intr(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, int chnum, struct dwc2_qtd *qtd) dwc2_hc_frmovrun_intr() argument
1715 dwc2_hc_datatglerr_intr(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, int chnum, struct dwc2_qtd *qtd) dwc2_hc_datatglerr_intr() argument
1740 dwc2_halt_status_ok(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, int chnum, struct dwc2_qtd *qtd) dwc2_halt_status_ok() argument
1800 dwc2_hc_chhltd_intr_dma(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, int chnum, struct dwc2_qtd *qtd) dwc2_hc_chhltd_intr_dma() argument
1978 dwc2_hc_chhltd_intr(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, int chnum, struct dwc2_qtd *qtd) dwc2_hc_chhltd_intr() argument
2001 dwc2_check_qtd_still_ok(struct dwc2_qtd *qtd, struct dwc2_qh *qh) dwc2_check_qtd_still_ok() argument
2016 struct dwc2_qtd *qtd; dwc2_hc_n_intr() local
[all...]
H A Dhcd_ddma.c512 struct dwc2_qtd *qtd, in dwc2_fill_host_isoc_dma_desc()
520 frame_desc = &qtd->urb->iso_descs[qtd->isoc_frame_index_last]; in dwc2_fill_host_isoc_dma_desc()
527 dma_desc->buf = (u32)(qtd->urb->dma + frame_desc->offset); in dwc2_fill_host_isoc_dma_desc()
535 qtd->isoc_frame_index_last++; in dwc2_fill_host_isoc_dma_desc()
539 if (qtd->isoc_frame_index_last == qtd->urb->packet_count) in dwc2_fill_host_isoc_dma_desc()
553 struct dwc2_qtd *qtd; in dwc2_init_isoc_dma_desc() local
592 list_for_each_entry(qtd, &qh->qtd_list, qtd_list_entry) { in dwc2_init_isoc_dma_desc()
593 if (qtd in dwc2_init_isoc_dma_desc()
511 dwc2_fill_host_isoc_dma_desc(struct dwc2_hsotg *hsotg, struct dwc2_qtd *qtd, struct dwc2_qh *qh, u32 max_xfer_size, u16 idx) dwc2_fill_host_isoc_dma_desc() argument
659 dwc2_fill_host_dma_desc(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, struct dwc2_qtd *qtd, struct dwc2_qh *qh, int n_desc) dwc2_fill_host_dma_desc() argument
714 struct dwc2_qtd *qtd; dwc2_init_non_isoc_dma_desc() local
862 dwc2_cmpl_host_isoc_dma_desc(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, struct dwc2_qtd *qtd, struct dwc2_qh *qh, u16 idx) dwc2_cmpl_host_isoc_dma_desc() argument
936 struct dwc2_qtd *qtd, *qtd_tmp; dwc2_complete_isoc_xfer_ddma() local
1037 dwc2_update_non_isoc_urb_state_ddma(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, struct dwc2_qtd *qtd, struct dwc2_dma_desc *dma_desc, enum dwc2_halt_status halt_status, u32 n_bytes, int *xfer_done) dwc2_update_non_isoc_urb_state_ddma() argument
1119 dwc2_process_non_isoc_desc(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, int chnum, struct dwc2_qtd *qtd, int desc_num, enum dwc2_halt_status halt_status, int *xfer_done) dwc2_process_non_isoc_desc() argument
1198 struct dwc2_qtd *qtd = NULL; dwc2_complete_non_isoc_xfer_ddma() local
1283 struct dwc2_qtd *qtd, *qtd_tmp; dwc2_hcd_complete_xfer_ddma() local
[all...]
H A Dhcd.h160 struct dwc2_qtd *qtd; member
545 void dwc2_hcd_qtd_init(struct dwc2_qtd *qtd, struct dwc2_hcd_urb *urb);
546 int dwc2_hcd_qtd_add(struct dwc2_hsotg *hsotg, struct dwc2_qtd *qtd,
551 struct dwc2_qtd *qtd, in dwc2_hcd_qtd_unlink_and_free()
554 list_del(&qtd->qtd_list_entry); in dwc2_hcd_qtd_unlink_and_free()
555 kfree(qtd); in dwc2_hcd_qtd_unlink_and_free()
731 struct dwc2_qtd *qtd);
784 void dwc2_host_complete(struct dwc2_hsotg *hsotg, struct dwc2_qtd *qtd,
550 dwc2_hcd_qtd_unlink_and_free(struct dwc2_hsotg *hsotg, struct dwc2_qtd *qtd, struct dwc2_qh *qh) dwc2_hcd_qtd_unlink_and_free() argument
H A Dhcd.c1574 struct dwc2_qtd *qtd, *qtd_tmp; in dwc2_kill_urbs_in_qh_list() local
1577 list_for_each_entry_safe(qtd, qtd_tmp, &qh->qtd_list, in dwc2_kill_urbs_in_qh_list()
1579 dwc2_host_complete(hsotg, qtd, -ECONNRESET); in dwc2_kill_urbs_in_qh_list()
1580 dwc2_hcd_qtd_unlink_and_free(hsotg, qtd, qh); in dwc2_kill_urbs_in_qh_list()
1588 struct dwc2_qtd *qtd, *qtd_tmp; in dwc2_qh_list_free() local
1605 list_for_each_entry_safe(qtd, qtd_tmp, &qh->qtd_list, in dwc2_qh_list_free()
1607 dwc2_hcd_qtd_unlink_and_free(hsotg, qtd, qh); in dwc2_qh_list_free()
1846 struct dwc2_qtd *qtd) in dwc2_hcd_urb_enqueue()
1871 if (!qtd) in dwc2_hcd_urb_enqueue()
1874 dwc2_hcd_qtd_init(qtd, ur in dwc2_hcd_urb_enqueue()
1844 dwc2_hcd_urb_enqueue(struct dwc2_hsotg *hsotg, struct dwc2_hcd_urb *urb, struct dwc2_qh *qh, struct dwc2_qtd *qtd) dwc2_hcd_urb_enqueue() argument
1965 struct dwc2_qtd *qtd, *qtd_tmp; dwc2_hcd_endpoint_disable() local
2305 dwc2_hc_init_split(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, struct dwc2_qtd *qtd, struct dwc2_hcd_urb *urb) dwc2_hc_init_split() argument
2319 dwc2_hc_init_xfer(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan, struct dwc2_qtd *qtd) dwc2_hc_init_xfer() argument
2548 struct dwc2_qtd *qtd; dwc2_assign_and_init_hc() local
3858 struct dwc2_qtd *qtd; dwc2_hcd_dump_state() local
4113 dwc2_host_complete(struct dwc2_hsotg *hsotg, struct dwc2_qtd *qtd, int status) dwc2_host_complete() argument
4623 struct dwc2_qtd *qtd; _dwc2_hcd_urb_enqueue() local
[all...]
H A Dhcd_queue.c2008 * @qtd: The QTD to initialize
2011 void dwc2_hcd_qtd_init(struct dwc2_qtd *qtd, struct dwc2_hcd_urb *urb) in dwc2_hcd_qtd_init() argument
2013 qtd->urb = urb; in dwc2_hcd_qtd_init()
2021 qtd->data_toggle = DWC2_HC_PID_DATA1; in dwc2_hcd_qtd_init()
2022 qtd->control_phase = DWC2_CONTROL_SETUP; in dwc2_hcd_qtd_init()
2026 qtd->complete_split = 0; in dwc2_hcd_qtd_init()
2027 qtd->isoc_split_pos = DWC2_HCSPLT_XACTPOS_ALL; in dwc2_hcd_qtd_init()
2028 qtd->isoc_split_offset = 0; in dwc2_hcd_qtd_init()
2029 qtd->in_process = 0; in dwc2_hcd_qtd_init()
2031 /* Store the qtd pt in dwc2_hcd_qtd_init()
2048 dwc2_hcd_qtd_add(struct dwc2_hsotg *hsotg, struct dwc2_qtd *qtd, struct dwc2_qh *qh) dwc2_hcd_qtd_add() argument
[all...]
/kernel/linux/linux-5.10/drivers/usb/isp1760/
H A Disp1760-hcd.c40 struct isp1760_qtd *qtd);
135 interrupt handler may touch this qtd! */
137 /* QTD_RETIRE: transfer error/abort qtd */
337 static void alloc_mem(struct usb_hcd *hcd, struct isp1760_qtd *qtd) in alloc_mem() argument
342 WARN_ON(qtd->payload_addr); in alloc_mem()
344 if (!qtd->length) in alloc_mem()
348 if (priv->memory_pool[i].size >= qtd->length && in alloc_mem()
351 qtd->payload_addr = priv->memory_pool[i].start; in alloc_mem()
357 static void free_mem(struct usb_hcd *hcd, struct isp1760_qtd *qtd) in free_mem() argument
362 if (!qtd in free_mem()
513 last_qtd_of_urb(struct isp1760_qtd *qtd, struct isp1760_qh *qh) last_qtd_of_urb() argument
533 create_ptd_atl(struct isp1760_qh *qh, struct isp1760_qtd *qtd, struct ptd *ptd) create_ptd_atl() argument
608 transform_add_int(struct isp1760_qh *qh, struct isp1760_qtd *qtd, struct ptd *ptd) transform_add_int() argument
660 create_ptd_int(struct isp1760_qh *qh, struct isp1760_qtd *qtd, struct ptd *ptd) create_ptd_int() argument
696 struct isp1760_qtd *qtd; qtd_alloc() local
711 qtd_free(struct isp1760_qtd *qtd) qtd_free() argument
717 start_bus_transfer(struct usb_hcd *hcd, u32 ptd_offset, int slot, struct isp1760_slotinfo *slots, struct isp1760_qtd *qtd, struct isp1760_qh *qh, struct ptd *ptd) start_bus_transfer() argument
760 is_short_bulk(struct isp1760_qtd *qtd) is_short_bulk() argument
770 struct isp1760_qtd *qtd, *qtd_next; collect_qtds() local
837 struct isp1760_qtd *qtd; enqueue_qtds() local
1073 struct isp1760_qtd *qtd; handle_done_ptds() local
1362 qtd_fill(struct isp1760_qtd *qtd, void *databuffer, size_t len) qtd_fill() argument
1375 struct isp1760_qtd *qtd, *qtd_next; qtd_list_free() local
1391 struct isp1760_qtd *qtd; packetize_urb() local
1607 dequeue_urb_from_qtd(struct usb_hcd *hcd, struct isp1760_qh *qh, struct isp1760_qtd *qtd) dequeue_urb_from_qtd() argument
1644 struct isp1760_qtd *qtd; isp1760_urb_dequeue() local
[all...]
H A Disp1760-hcd.h32 struct isp1760_qtd *qtd; member
/kernel/linux/linux-6.6/drivers/usb/isp1760/
H A Disp1760-hcd.c42 struct isp1760_qtd *qtd);
159 interrupt handler may touch this qtd! */
161 /* QTD_RETIRE: transfer error/abort qtd */
603 static void alloc_mem(struct usb_hcd *hcd, struct isp1760_qtd *qtd) in alloc_mem() argument
609 WARN_ON(qtd->payload_addr); in alloc_mem()
611 if (!qtd->length) in alloc_mem()
615 if (priv->memory_pool[i].size >= qtd->length && in alloc_mem()
618 qtd->payload_addr = priv->memory_pool[i].start; in alloc_mem()
624 static void free_mem(struct usb_hcd *hcd, struct isp1760_qtd *qtd) in free_mem() argument
630 if (!qtd in free_mem()
797 last_qtd_of_urb(struct isp1760_qtd *qtd, struct isp1760_qh *qh) last_qtd_of_urb() argument
817 create_ptd_atl(struct isp1760_qh *qh, struct isp1760_qtd *qtd, struct ptd *ptd) create_ptd_atl() argument
891 transform_add_int(struct isp1760_qh *qh, struct isp1760_qtd *qtd, struct ptd *ptd) transform_add_int() argument
943 create_ptd_int(struct isp1760_qh *qh, struct isp1760_qtd *qtd, struct ptd *ptd) create_ptd_int() argument
979 struct isp1760_qtd *qtd; qtd_alloc() local
994 qtd_free(struct isp1760_qtd *qtd) qtd_free() argument
1000 start_bus_transfer(struct usb_hcd *hcd, u32 ptd_offset, int slot, struct isp1760_slotinfo *slots, struct isp1760_qtd *qtd, struct isp1760_qh *qh, struct ptd *ptd) start_bus_transfer() argument
1047 is_short_bulk(struct isp1760_qtd *qtd) is_short_bulk() argument
1056 struct isp1760_qtd *qtd, *qtd_next; collect_qtds() local
1126 struct isp1760_qtd *qtd; enqueue_qtds() local
1361 struct isp1760_qtd *qtd; handle_done_ptds() local
1747 qtd_fill(struct isp1760_qtd *qtd, void *databuffer, size_t len) qtd_fill() argument
1758 struct isp1760_qtd *qtd, *qtd_next; qtd_list_free() local
1775 struct isp1760_qtd *qtd; packetize_urb() local
2000 dequeue_urb_from_qtd(struct usb_hcd *hcd, struct isp1760_qh *qh, struct isp1760_qtd *qtd) dequeue_urb_from_qtd() argument
2037 struct isp1760_qtd *qtd; isp1760_urb_dequeue() local
[all...]
H A Disp1760-hcd.h17 struct isp1760_qtd *qtd; member
/kernel/linux/linux-5.10/drivers/usb/host/
H A Dehci-q.c13 * Control, bulk, and interrupt traffic all use "qh" lists. They list "qtd"
34 /* fill a qtd, returning how much of the buffer we were able to queue up */
37 qtd_fill(struct ehci_hcd *ehci, struct ehci_qtd *qtd, dma_addr_t buf, in qtd_fill() argument
44 qtd->hw_buf[0] = cpu_to_hc32(ehci, (u32)addr); in qtd_fill()
45 qtd->hw_buf_hi[0] = cpu_to_hc32(ehci, (u32)(addr >> 32)); in qtd_fill()
53 /* per-qtd limit: from 16K to 20K (best alignment) */ in qtd_fill()
56 qtd->hw_buf[i] = cpu_to_hc32(ehci, (u32)addr); in qtd_fill()
57 qtd->hw_buf_hi[i] = cpu_to_hc32(ehci, in qtd_fill()
70 qtd->hw_token = cpu_to_hc32(ehci, (count << 16) | token); in qtd_fill()
71 qtd in qtd_fill()
79 qh_update(struct ehci_hcd *ehci, struct ehci_qh *qh, struct ehci_qtd *qtd) qh_update() argument
115 struct ehci_qtd *qtd; qh_refresh() local
323 struct ehci_qtd *qtd; qh_completions() local
563 struct ehci_qtd *qtd; qtd_list_free() local
581 struct ehci_qtd *qtd, *qtd_prev; qh_urb_transaction() local
1038 struct ehci_qtd *qtd; qh_append_tds() local
1117 struct ehci_qtd *qtd; submit_async() local
1177 struct ehci_qtd *qtd, *qtd_prev; submit_single_step_set_feature() local
[all...]
H A Dehci-mem.c25 static inline void ehci_qtd_init(struct ehci_hcd *ehci, struct ehci_qtd *qtd, in ehci_qtd_init() argument
28 memset (qtd, 0, sizeof *qtd); in ehci_qtd_init()
29 qtd->qtd_dma = dma; in ehci_qtd_init()
30 qtd->hw_token = cpu_to_hc32(ehci, QTD_STS_HALT); in ehci_qtd_init()
31 qtd->hw_next = EHCI_LIST_END(ehci); in ehci_qtd_init()
32 qtd->hw_alt_next = EHCI_LIST_END(ehci); in ehci_qtd_init()
33 INIT_LIST_HEAD (&qtd->qtd_list); in ehci_qtd_init()
38 struct ehci_qtd *qtd; in ehci_qtd_alloc() local
41 qtd in ehci_qtd_alloc()
48 ehci_qtd_free(struct ehci_hcd *ehci, struct ehci_qtd *qtd) ehci_qtd_free() argument
[all...]
H A Doxu210hp-hcd.c82 #define EHCI_TUNE_CERR 3 /* 0-3 qtd retries; 0 == don't stop */
247 #define QTD_STS_BABBLE (1 << 4) /* device was babbling (qtd halted) */
256 dma_addr_t qtd_dma; /* qtd address */
257 struct list_head qtd_list; /* sw qtd list */
258 struct urb *urb; /* qtd's urb */
282 /* for periodic/async schedules and qtd lists, mark end of list */
318 __le32 hw_current; /* qtd list - see EHCI 3.6.4 */
320 /* qtd overlay (hardware parts of a struct ehci_qtd) */
330 struct list_head qtd_list; /* sw qtd list */
907 static int oxu_buf_alloc(struct oxu_hcd *oxu, struct ehci_qtd *qtd, in argument
959 oxu_buf_free(struct oxu_hcd *oxu, struct ehci_qtd *qtd) oxu_buf_free() argument
975 ehci_qtd_init(struct ehci_qtd *qtd, dma_addr_t dma) ehci_qtd_init() argument
985 oxu_qtd_free(struct oxu_hcd *oxu, struct ehci_qtd *qtd) oxu_qtd_free() argument
1003 struct ehci_qtd *qtd = NULL; ehci_qtd_alloc() local
1206 qtd_fill(struct ehci_qtd *qtd, dma_addr_t buf, size_t len, int token, int maxpacket) qtd_fill() argument
1244 qh_update(struct oxu_hcd *oxu, struct ehci_qh *qh, struct ehci_qtd *qtd) qh_update() argument
1280 struct ehci_qtd *qtd; qh_refresh() local
1409 struct ehci_qtd *qtd, *tmp; qh_completions() local
1602 struct ehci_qtd *qtd, *temp; qtd_list_free() local
1617 struct ehci_qtd *qtd, *qtd_prev; qh_urb_transaction() local
1974 struct ehci_qtd *qtd; qh_append_tds() local
2044 struct ehci_qtd *qtd; submit_async() local
[all...]
H A Dfotg210-hcd.c50 #define FOTG210_TUNE_CERR 3 /* 0-3 qtd retries; 0 == don't stop */
116 dbg_qtd(const char *label, struct fotg210_hcd *fotg210, struct fotg210_qtd *qtd) in dbg_qtd() argument
118 fotg210_dbg(fotg210, "%s td %p n%08x %08x t%08x p0=%08x\n", label, qtd, in dbg_qtd()
119 hc32_to_cpup(fotg210, &qtd->hw_next), in dbg_qtd()
120 hc32_to_cpup(fotg210, &qtd->hw_alt_next), in dbg_qtd()
121 hc32_to_cpup(fotg210, &qtd->hw_token), in dbg_qtd()
122 hc32_to_cpup(fotg210, &qtd->hw_buf[0])); in dbg_qtd()
123 if (qtd->hw_buf[1]) in dbg_qtd()
125 hc32_to_cpup(fotg210, &qtd->hw_buf[1]), in dbg_qtd()
126 hc32_to_cpup(fotg210, &qtd in dbg_qtd()
488 struct fotg210_qtd *qtd; output_buf_tds_dir() local
1804 fotg210_qtd_init(struct fotg210_hcd *fotg210, struct fotg210_qtd *qtd, dma_addr_t dma) fotg210_qtd_init() argument
1818 struct fotg210_qtd *qtd; fotg210_qtd_alloc() local
1828 fotg210_qtd_free(struct fotg210_hcd *fotg210, struct fotg210_qtd *qtd) fotg210_qtd_free() argument
1990 qtd_fill(struct fotg210_hcd *fotg210, struct fotg210_qtd *qtd, dma_addr_t buf, size_t len, int token, int maxpacket) qtd_fill() argument
2029 qh_update(struct fotg210_hcd *fotg210, struct fotg210_qh *qh, struct fotg210_qtd *qtd) qh_update() argument
2065 struct fotg210_qtd *qtd; qh_refresh() local
2243 struct fotg210_qtd *qtd, *tmp; qh_completions() local
2515 struct fotg210_qtd *qtd, *temp; qtd_list_free() local
2528 struct fotg210_qtd *qtd, *qtd_prev; qh_urb_transaction() local
2953 struct fotg210_qtd *qtd; qh_append_tds() local
3025 struct fotg210_qtd *qtd; submit_async() local
[all...]
H A Dehci-dbg.c80 dbg_qtd(const char *label, struct ehci_hcd *ehci, struct ehci_qtd *qtd) in dbg_qtd() argument
82 ehci_dbg(ehci, "%s td %p n%08x %08x t%08x p0=%08x\n", label, qtd, in dbg_qtd()
83 hc32_to_cpup(ehci, &qtd->hw_next), in dbg_qtd()
84 hc32_to_cpup(ehci, &qtd->hw_alt_next), in dbg_qtd()
85 hc32_to_cpup(ehci, &qtd->hw_token), in dbg_qtd()
86 hc32_to_cpup(ehci, &qtd->hw_buf[0])); in dbg_qtd()
87 if (qtd->hw_buf[1]) in dbg_qtd()
89 hc32_to_cpup(ehci, &qtd->hw_buf[1]), in dbg_qtd()
90 hc32_to_cpup(ehci, &qtd->hw_buf[2]), in dbg_qtd()
91 hc32_to_cpup(ehci, &qtd in dbg_qtd()
597 struct ehci_qtd *qtd; output_buf_tds_dir() local
[all...]
/kernel/linux/linux-6.6/drivers/usb/host/
H A Dehci-q.c13 * Control, bulk, and interrupt traffic all use "qh" lists. They list "qtd"
34 /* fill a qtd, returning how much of the buffer we were able to queue up */
37 qtd_fill(struct ehci_hcd *ehci, struct ehci_qtd *qtd, dma_addr_t buf, in qtd_fill() argument
45 qtd->hw_buf[0] = cpu_to_hc32(ehci, (u32)addr); in qtd_fill()
46 qtd->hw_buf_hi[0] = cpu_to_hc32(ehci, (u32)(addr >> 32)); in qtd_fill()
54 /* per-qtd limit: from 16K to 20K (best alignment) */ in qtd_fill()
57 qtd->hw_buf[i] = cpu_to_hc32(ehci, (u32)addr); in qtd_fill()
58 qtd->hw_buf_hi[i] = cpu_to_hc32(ehci, in qtd_fill()
71 qtd->hw_token = cpu_to_hc32(ehci, (count << 16) | token); in qtd_fill()
72 qtd in qtd_fill()
80 qh_update(struct ehci_hcd *ehci, struct ehci_qh *qh, struct ehci_qtd *qtd) qh_update() argument
116 struct ehci_qtd *qtd; qh_refresh() local
324 struct ehci_qtd *qtd; qh_completions() local
564 struct ehci_qtd *qtd; qtd_list_free() local
582 struct ehci_qtd *qtd, *qtd_prev; qh_urb_transaction() local
1039 struct ehci_qtd *qtd; qh_append_tds() local
1118 struct ehci_qtd *qtd; submit_async() local
1178 struct ehci_qtd *qtd, *qtd_prev; ehci_submit_single_step_set_feature() local
[all...]
H A Dehci-mem.c25 static inline void ehci_qtd_init(struct ehci_hcd *ehci, struct ehci_qtd *qtd, in ehci_qtd_init() argument
28 memset (qtd, 0, sizeof *qtd); in ehci_qtd_init()
29 qtd->qtd_dma = dma; in ehci_qtd_init()
30 qtd->hw_token = cpu_to_hc32(ehci, QTD_STS_HALT); in ehci_qtd_init()
31 qtd->hw_next = EHCI_LIST_END(ehci); in ehci_qtd_init()
32 qtd->hw_alt_next = EHCI_LIST_END(ehci); in ehci_qtd_init()
33 INIT_LIST_HEAD (&qtd->qtd_list); in ehci_qtd_init()
38 struct ehci_qtd *qtd; in ehci_qtd_alloc() local
41 qtd in ehci_qtd_alloc()
48 ehci_qtd_free(struct ehci_hcd *ehci, struct ehci_qtd *qtd) ehci_qtd_free() argument
[all...]
H A Doxu210hp-hcd.c82 #define EHCI_TUNE_CERR 3 /* 0-3 qtd retries; 0 == don't stop */
247 #define QTD_STS_BABBLE (1 << 4) /* device was babbling (qtd halted) */
256 dma_addr_t qtd_dma; /* qtd address */
257 struct list_head qtd_list; /* sw qtd list */
258 struct urb *urb; /* qtd's urb */
282 /* for periodic/async schedules and qtd lists, mark end of list */
318 __le32 hw_current; /* qtd list - see EHCI 3.6.4 */
320 /* qtd overlay (hardware parts of a struct ehci_qtd) */
330 struct list_head qtd_list; /* sw qtd list */
907 static int oxu_buf_alloc(struct oxu_hcd *oxu, struct ehci_qtd *qtd, in argument
959 oxu_buf_free(struct oxu_hcd *oxu, struct ehci_qtd *qtd) oxu_buf_free() argument
975 ehci_qtd_init(struct ehci_qtd *qtd, dma_addr_t dma) ehci_qtd_init() argument
985 oxu_qtd_free(struct oxu_hcd *oxu, struct ehci_qtd *qtd) oxu_qtd_free() argument
1003 struct ehci_qtd *qtd = NULL; ehci_qtd_alloc() local
1206 qtd_fill(struct ehci_qtd *qtd, dma_addr_t buf, size_t len, int token, int maxpacket) qtd_fill() argument
1244 qh_update(struct oxu_hcd *oxu, struct ehci_qh *qh, struct ehci_qtd *qtd) qh_update() argument
1280 struct ehci_qtd *qtd; qh_refresh() local
1410 struct ehci_qtd *qtd, *tmp; qh_completions() local
1603 struct ehci_qtd *qtd, *temp; qtd_list_free() local
1618 struct ehci_qtd *qtd, *qtd_prev; qh_urb_transaction() local
1975 struct ehci_qtd *qtd; qh_append_tds() local
2045 struct ehci_qtd *qtd; submit_async() local
[all...]
H A Dehci-dbg.c80 dbg_qtd(const char *label, struct ehci_hcd *ehci, struct ehci_qtd *qtd) in dbg_qtd() argument
82 ehci_dbg(ehci, "%s td %p n%08x %08x t%08x p0=%08x\n", label, qtd, in dbg_qtd()
83 hc32_to_cpup(ehci, &qtd->hw_next), in dbg_qtd()
84 hc32_to_cpup(ehci, &qtd->hw_alt_next), in dbg_qtd()
85 hc32_to_cpup(ehci, &qtd->hw_token), in dbg_qtd()
86 hc32_to_cpup(ehci, &qtd->hw_buf[0])); in dbg_qtd()
87 if (qtd->hw_buf[1]) in dbg_qtd()
89 hc32_to_cpup(ehci, &qtd->hw_buf[1]), in dbg_qtd()
90 hc32_to_cpup(ehci, &qtd->hw_buf[2]), in dbg_qtd()
91 hc32_to_cpup(ehci, &qtd in dbg_qtd()
597 struct ehci_qtd *qtd; output_buf_tds_dir() local
[all...]
/kernel/linux/linux-6.6/drivers/usb/fotg210/
H A Dfotg210-hcd.c49 #define FOTG210_TUNE_CERR 3 /* 0-3 qtd retries; 0 == don't stop */
115 dbg_qtd(const char *label, struct fotg210_hcd *fotg210, struct fotg210_qtd *qtd) in dbg_qtd() argument
117 fotg210_dbg(fotg210, "%s td %p n%08x %08x t%08x p0=%08x\n", label, qtd, in dbg_qtd()
118 hc32_to_cpup(fotg210, &qtd->hw_next), in dbg_qtd()
119 hc32_to_cpup(fotg210, &qtd->hw_alt_next), in dbg_qtd()
120 hc32_to_cpup(fotg210, &qtd->hw_token), in dbg_qtd()
121 hc32_to_cpup(fotg210, &qtd->hw_buf[0])); in dbg_qtd()
122 if (qtd->hw_buf[1]) in dbg_qtd()
124 hc32_to_cpup(fotg210, &qtd->hw_buf[1]), in dbg_qtd()
125 hc32_to_cpup(fotg210, &qtd in dbg_qtd()
487 struct fotg210_qtd *qtd; output_buf_tds_dir() local
1804 fotg210_qtd_init(struct fotg210_hcd *fotg210, struct fotg210_qtd *qtd, dma_addr_t dma) fotg210_qtd_init() argument
1818 struct fotg210_qtd *qtd; fotg210_qtd_alloc() local
1828 fotg210_qtd_free(struct fotg210_hcd *fotg210, struct fotg210_qtd *qtd) fotg210_qtd_free() argument
1991 qtd_fill(struct fotg210_hcd *fotg210, struct fotg210_qtd *qtd, dma_addr_t buf, size_t len, int token, int maxpacket) qtd_fill() argument
2030 qh_update(struct fotg210_hcd *fotg210, struct fotg210_qh *qh, struct fotg210_qtd *qtd) qh_update() argument
2066 struct fotg210_qtd *qtd; qh_refresh() local
2244 struct fotg210_qtd *qtd, *tmp; qh_completions() local
2516 struct fotg210_qtd *qtd, *temp; qtd_list_free() local
2529 struct fotg210_qtd *qtd, *qtd_prev; qh_urb_transaction() local
2954 struct fotg210_qtd *qtd; qh_append_tds() local
3026 struct fotg210_qtd *qtd; submit_async() local
[all...]

Completed in 43 milliseconds