Lines Matching refs:qh
73 struct dwc2_qh *qh; in dwc2_dump_channel_info() local
104 dev_dbg(hsotg->dev, " qh: %p\n", chan->qh); in dwc2_dump_channel_info()
106 list_for_each_entry(qh, &hsotg->non_periodic_sched_inactive, in dwc2_dump_channel_info()
108 dev_dbg(hsotg->dev, " %p\n", qh); in dwc2_dump_channel_info()
110 list_for_each_entry(qh, &hsotg->non_periodic_sched_active, in dwc2_dump_channel_info()
112 dev_dbg(hsotg->dev, " %p\n", qh); in dwc2_dump_channel_info()
131 struct dwc2_qh *qh, *qh_tmp; in dwc2_kill_urbs_in_qh_list() local
134 list_for_each_entry_safe(qh, qh_tmp, qh_list, qh_list_entry) { in dwc2_kill_urbs_in_qh_list()
135 list_for_each_entry_safe(qtd, qtd_tmp, &qh->qtd_list, in dwc2_kill_urbs_in_qh_list()
138 dwc2_hcd_qtd_unlink_and_free(hsotg, qtd, qh); in dwc2_kill_urbs_in_qh_list()
147 struct dwc2_qh *qh, *qh_tmp; in dwc2_qh_list_free() local
159 list_for_each_entry_safe(qh, qh_tmp, qh_list, qh_list_entry) { in dwc2_qh_list_free()
160 dwc2_hcd_qh_unlink(hsotg, qh); in dwc2_qh_list_free()
163 list_for_each_entry_safe(qtd, qtd_tmp, &qh->qtd_list, in dwc2_qh_list_free()
165 dwc2_hcd_qtd_unlink_and_free(hsotg, qtd, qh); in dwc2_qh_list_free()
168 dwc2_hcd_qh_free(hsotg, qh); in dwc2_qh_list_free()
258 channel->qh = NULL; in dwc2_hcd_cleanup_channels()
363 struct dwc2_hcd_urb *urb, struct dwc2_qh *qh, in dwc2_hcd_urb_enqueue() argument
393 retval = dwc2_hcd_qtd_add(hsotg, qtd, qh); in dwc2_hcd_urb_enqueue()
405 if (qtd->qh->ep_type == USB_ENDPOINT_XFER_BULK && in dwc2_hcd_urb_enqueue()
425 struct dwc2_qh *qh; in dwc2_hcd_urb_dequeue() local
434 qh = urb_qtd->qh; in dwc2_hcd_urb_dequeue()
435 if (!qh) { in dwc2_hcd_urb_dequeue()
442 if (urb_qtd->in_process && qh->channel) { in dwc2_hcd_urb_dequeue()
443 dwc2_dump_channel_info(hsotg, qh->channel); in dwc2_hcd_urb_dequeue()
454 dwc2_hc_halt(hsotg, qh->channel, in dwc2_hcd_urb_dequeue()
465 dwc2_hcd_qtd_unlink_and_free(hsotg, urb_qtd, qh); in dwc2_hcd_urb_dequeue()
467 dwc2_hcd_qh_deactivate(hsotg, qh, 0); in dwc2_hcd_urb_dequeue()
468 qh->channel = NULL; in dwc2_hcd_urb_dequeue()
469 } else if (list_empty(&qh->qtd_list)) { in dwc2_hcd_urb_dequeue()
470 dwc2_hcd_qh_unlink(hsotg, qh); in dwc2_hcd_urb_dequeue()
473 dwc2_hcd_qtd_unlink_and_free(hsotg, urb_qtd, qh); in dwc2_hcd_urb_dequeue()
484 struct dwc2_qh *qh; in dwc2_hcd_endpoint_disable() local
490 qh = ep->hcpriv; in dwc2_hcd_endpoint_disable()
491 if (!qh) { in dwc2_hcd_endpoint_disable()
496 while (!list_empty(&qh->qtd_list) && retry--) { in dwc2_hcd_endpoint_disable()
507 qh = ep->hcpriv; in dwc2_hcd_endpoint_disable()
508 if (!qh) { in dwc2_hcd_endpoint_disable()
514 dwc2_hcd_qh_unlink(hsotg, qh); in dwc2_hcd_endpoint_disable()
517 list_for_each_entry_safe(qtd, qtd_tmp, &qh->qtd_list, qtd_list_entry) in dwc2_hcd_endpoint_disable()
518 dwc2_hcd_qtd_unlink_and_free(hsotg, qtd, qh); in dwc2_hcd_endpoint_disable()
522 dwc2_hcd_qh_free(hsotg, qh); in dwc2_hcd_endpoint_disable()
537 struct dwc2_qh *qh = ep->hcpriv; in dwc2_hcd_endpoint_reset() local
539 if (!qh) in dwc2_hcd_endpoint_reset()
542 qh->data_toggle = DWC2_HC_PID_DATA0; in dwc2_hcd_endpoint_reset()
704 static int dwc2_hc_setup_align_buf(struct dwc2_hsotg *hsotg, struct dwc2_qh *qh, in dwc2_hc_setup_align_buf() argument
712 if (!qh->dw_align_buf) { in dwc2_hc_setup_align_buf()
719 qh->dw_align_buf = kmalloc(buf_size, GFP_ATOMIC | GFP_DMA); in dwc2_hc_setup_align_buf()
720 if (!qh->dw_align_buf) in dwc2_hc_setup_align_buf()
722 qh->dw_align_buf_size = buf_size; in dwc2_hc_setup_align_buf()
737 memcpy(qh->dw_align_buf, bufptr, in dwc2_hc_setup_align_buf()
744 qh->dw_align_buf_dma = dma_map_single(hsotg->dev, in dwc2_hc_setup_align_buf()
745 qh->dw_align_buf, qh->dw_align_buf_size, in dwc2_hc_setup_align_buf()
747 if (dma_mapping_error(hsotg->dev, qh->dw_align_buf_dma)) { in dwc2_hc_setup_align_buf()
753 chan->align_buf = qh->dw_align_buf_dma; in dwc2_hc_setup_align_buf()
766 static int dwc2_assign_and_init_hc(struct dwc2_hsotg *hsotg, struct dwc2_qh *qh) in dwc2_assign_and_init_hc() argument
773 if (dbg_qh(qh)) in dwc2_assign_and_init_hc()
774 dev_vdbg(hsotg->dev, "%s(%p,%p)\n", __func__, hsotg, qh); in dwc2_assign_and_init_hc()
776 if (list_empty(&qh->qtd_list)) { in dwc2_assign_and_init_hc()
792 qtd = list_first_entry(&qh->qtd_list, struct dwc2_qtd, qtd_list_entry); in dwc2_assign_and_init_hc()
794 qh->channel = chan; in dwc2_assign_and_init_hc()
803 chan->speed = qh->dev_speed; in dwc2_assign_and_init_hc()
804 chan->max_packet = dwc2_max_packet(qh->maxp); in dwc2_assign_and_init_hc()
824 chan->do_ping = qh->ping_state; in dwc2_assign_and_init_hc()
826 chan->data_pid_start = qh->data_toggle; in dwc2_assign_and_init_hc()
848 if (qh->do_split) in dwc2_assign_and_init_hc()
859 if (dwc2_hc_setup_align_buf(hsotg, qh, chan, urb, bufptr)) { in dwc2_assign_and_init_hc()
869 qh->channel = NULL; in dwc2_assign_and_init_hc()
882 chan->multi_count = dwc2_hb_mult(qh->maxp); in dwc2_assign_and_init_hc()
885 chan->desc_list_addr = qh->desc_list_dma; in dwc2_assign_and_init_hc()
888 chan->qh = qh; in dwc2_assign_and_init_hc()
907 struct dwc2_qh *qh; in dwc2_hcd_select_transactions() local
924 qh = list_entry(qh_ptr, struct dwc2_qh, qh_list_entry); in dwc2_hcd_select_transactions()
925 if (dwc2_assign_and_init_hc(hsotg, qh)) in dwc2_hcd_select_transactions()
933 list_move(&qh->qh_list_entry, &hsotg->periodic_sched_assigned); in dwc2_hcd_select_transactions()
951 qh = list_entry(qh_ptr, struct dwc2_qh, qh_list_entry); in dwc2_hcd_select_transactions()
958 if (dwc2_assign_and_init_hc(hsotg, qh)) in dwc2_hcd_select_transactions()
966 list_move(&qh->qh_list_entry, in dwc2_hcd_select_transactions()
1012 dwc2_hcd_start_xfer_ddma(hsotg, chan->qh); in dwc2_queue_transaction()
1013 chan->qh->ping_state = 0; in dwc2_queue_transaction()
1017 chan->qh->ping_state = 0; in dwc2_queue_transaction()
1062 struct dwc2_qh *qh; in dwc2_process_periodic_channels() local
1097 qh = list_entry(qh_ptr, struct dwc2_qh, qh_list_entry); in dwc2_process_periodic_channels()
1098 if (!qh->channel) { in dwc2_process_periodic_channels()
1104 if (qh->tt_buffer_dirty) { in dwc2_process_periodic_channels()
1115 qh->channel->multi_count > 1) in dwc2_process_periodic_channels()
1120 status = dwc2_queue_transaction(hsotg, qh->channel, fspcavail); in dwc2_process_periodic_channels()
1134 qh->channel->requests == qh->channel->multi_count) { in dwc2_process_periodic_channels()
1140 list_move(&qh->qh_list_entry, in dwc2_process_periodic_channels()
1202 struct dwc2_qh *qh; in dwc2_process_non_periodic_channels() local
1245 qh = list_entry(hsotg->non_periodic_qh_ptr, struct dwc2_qh, in dwc2_process_non_periodic_channels()
1247 if (!qh->channel) in dwc2_process_non_periodic_channels()
1251 if (qh->tt_buffer_dirty) in dwc2_process_non_periodic_channels()
1256 status = dwc2_queue_transaction(hsotg, qh->channel, fspcavail); in dwc2_process_non_periodic_channels()
1979 dev_dbg(hsotg->dev, " qh: %p\n", chan->qh); in dwc2_hcd_dump_state()
1996 if (!(chan->xfer_started && chan->qh)) in dwc2_hcd_dump_state()
1999 list_for_each_entry(qtd, &chan->qh->qtd_list, qtd_list_entry) { in dwc2_hcd_dump_state()
2605 struct dwc2_qh *qh; in _dwc2_hcd_urb_enqueue() local
2686 qh = (struct dwc2_qh *) ep->hcpriv; in _dwc2_hcd_urb_enqueue()
2688 if (!qh) { in _dwc2_hcd_urb_enqueue()
2689 qh = dwc2_hcd_qh_create(hsotg, dwc2_urb, mem_flags); in _dwc2_hcd_urb_enqueue()
2690 if (!qh) { in _dwc2_hcd_urb_enqueue()
2694 ep->hcpriv = qh; in _dwc2_hcd_urb_enqueue()
2709 retval = dwc2_hcd_urb_enqueue(hsotg, dwc2_urb, qh, qtd); in _dwc2_hcd_urb_enqueue()
2735 dwc2_hcd_qh_unlink(hsotg, qh); in _dwc2_hcd_urb_enqueue()
2737 list_for_each_entry_safe(qtd2, qtd2_tmp, &qh->qtd_list, in _dwc2_hcd_urb_enqueue()
2739 dwc2_hcd_qtd_unlink_and_free(hsotg, qtd2, qh); in _dwc2_hcd_urb_enqueue()
2740 dwc2_hcd_qh_free(hsotg, qh); in _dwc2_hcd_urb_enqueue()
2870 struct dwc2_qh *qh; in _dwc2_hcd_clear_tt_buffer_complete() local
2873 qh = ep->hcpriv; in _dwc2_hcd_clear_tt_buffer_complete()
2874 if (!qh) in _dwc2_hcd_clear_tt_buffer_complete()
2878 qh->tt_buffer_dirty = 0; in _dwc2_hcd_clear_tt_buffer_complete()