Home | History | Annotate | Download | only in dist

Lines Matching defs:qh

84 	struct dwc2_qh *qh;
115 dev_dbg(hsotg->dev, " qh: %p\n", chan->qh);
117 list_for_each_entry(qh, &hsotg->non_periodic_sched_inactive,
119 dev_dbg(hsotg->dev, " %p\n", qh);
121 list_for_each_entry(qh, &hsotg->non_periodic_sched_waiting,
123 dev_dbg(hsotg->dev, " %p\n", qh);
125 list_for_each_entry(qh, &hsotg->non_periodic_sched_active,
127 dev_dbg(hsotg->dev, " %p\n", qh);
146 struct dwc2_qh *qh, *qh_tmp;
149 list_for_each_entry_safe(qh, qh_tmp, qh_list, qh_list_entry) {
150 list_for_each_entry_safe(qtd, qtd_tmp, &qh->qtd_list,
153 dwc2_hcd_qtd_unlink_and_free(hsotg, qtd, qh);
162 struct dwc2_qh *qh, *qh_tmp;
174 list_for_each_entry_safe(qh, qh_tmp, qh_list, qh_list_entry) {
175 dwc2_hcd_qh_unlink(hsotg, qh);
177 /* Free each QTD in the QH's QTD list */
178 list_for_each_entry_safe(qtd, qtd_tmp, &qh->qtd_list,
180 dwc2_hcd_qtd_unlink_and_free(hsotg, qtd, qh);
183 dwc2_hcd_qh_free(hsotg, qh);
274 channel->qh = NULL;
406 * and the QH lists (via ..._hcd_endpoint_disable).
419 struct dwc2_hcd_urb *urb, struct dwc2_qh *qh,
454 retval = dwc2_hcd_qtd_add(hsotg, qtd, qh);
466 if (qtd->qh->ep_type == USB_ENDPOINT_XFER_BULK &&
487 struct dwc2_qh *qh;
496 qh = urb_qtd->qh;
497 if (!qh) {
498 dev_dbg(hsotg->dev, "## Urb QTD QH is NULL ##\n");
504 if (urb_qtd->in_process && qh->channel) {
506 dwc2_dump_channel_info(hsotg, qh->channel);
517 dwc2_hc_halt(hsotg, qh->channel,
522 * Free the QTD and clean up the associated QH. Leave the QH in the
528 dwc2_hcd_qtd_unlink_and_free(hsotg, urb_qtd, qh);
530 dwc2_hcd_qh_deactivate(hsotg, qh, 0);
531 qh->channel = NULL;
532 } else if (list_empty(&qh->qtd_list)) {
533 dwc2_hcd_qh_unlink(hsotg, qh);
536 dwc2_hcd_qtd_unlink_and_free(hsotg, urb_qtd, qh);
718 static int dwc2_hc_setup_align_buf(struct dwc2_hsotg *hsotg, struct dwc2_qh *qh,
724 if (!qh->dw_align_buf) {
733 qh->dw_align_buf = NULL;
734 qh->dw_align_buf_dma = 0;
736 buf_size, 0, USBMALLOC_COHERENT, &qh->dw_align_buf_usbdma);
738 usb_dma_t *ud = &qh->dw_align_buf_usbdma;
740 qh->dw_align_buf = KERNADDR(ud, 0);
741 qh->dw_align_buf_dma = DMAADDR(ud, 0);
743 if (!qh->dw_align_buf)
745 qh->dw_align_buf_size = buf_size;
754 memcpy(qh->dw_align_buf, bufptr,
762 usb_syncmem(&qh->dw_align_buf_usbdma, 0, qh->dw_align_buf_size,
765 chan->align_buf = qh->dw_align_buf_dma;
775 * @qh: Transactions from the first QTD for this QH are selected and assigned
778 static int dwc2_assign_and_init_hc(struct dwc2_hsotg *hsotg, struct dwc2_qh *qh)
785 if (dbg_qh(qh))
786 dev_vdbg(hsotg->dev, "%s(%p,%p)\n", __func__, hsotg, qh);
788 if (list_empty(&qh->qtd_list)) {
789 dev_dbg(hsotg->dev, "No QTDs in QH list\n");
804 qtd = list_first_entry(&qh->qtd_list, struct dwc2_qtd, qtd_list_entry);
806 qh->channel = chan;
815 chan->speed = qh->dev_speed;
816 chan->max_packet = dwc2_max_packet(qh->maxp);
836 chan->do_ping = qh->ping_state;
838 chan->data_pid_start = qh->data_toggle;
849 if (qh->do_split)
860 if (dwc2_hc_setup_align_buf(hsotg, qh, chan, urb, bufptr)) {
870 qh->channel = NULL;
883 chan->multi_count = dwc2_hb_mult(qh->maxp);
886 chan->desc_list_usbdma = qh->desc_list_usbdma;
887 chan->desc_list_addr = qh->desc_list_dma;
888 chan->desc_list_sz = qh->desc_list_sz;
892 chan->qh = qh;
911 struct dwc2_qh *qh;
928 qh = list_entry(qh_ptr, struct dwc2_qh, qh_list_entry);
929 if (dwc2_assign_and_init_hc(hsotg, qh))
933 * Move the QH from the periodic ready schedule to the
937 list_move(&qh->qh_list_entry, &hsotg->periodic_sched_assigned);
955 qh = list_entry(qh_ptr, struct dwc2_qh, qh_list_entry);
963 if (qh->nak_frame != 0xffff &&
964 dwc2_full_frame_num(qh->nak_frame) ==
969 qh->nak_frame = 0xffff;
978 if (dwc2_assign_and_init_hc(hsotg, qh))
982 * Move the QH from the non-periodic inactive schedule to the
986 list_move(&qh->qh_list_entry,
1032 dwc2_hcd_start_xfer_ddma(hsotg, chan->qh);
1033 chan->qh->ping_state = 0;
1037 chan->qh->ping_state = 0;
1082 struct dwc2_qh *qh;
1117 qh = list_entry(qh_ptr, struct dwc2_qh, qh_list_entry);
1118 if (!qh->channel) {
1124 if (qh->tt_buffer_dirty) {
1135 qh->channel->multi_count > 1)
1140 status = dwc2_queue_transaction(hsotg, qh->channel, fspcavail);
1154 qh->channel->requests == qh->channel->multi_count) {
1157 * Move the QH from the periodic assigned schedule to
1160 list_move(&qh->qh_list_entry,
1222 struct dwc2_qh *qh;
1265 qh = list_entry(hsotg->non_periodic_qh_ptr, struct dwc2_qh,
1267 if (!qh->channel)
1271 if (qh->tt_buffer_dirty)
1276 status = dwc2_queue_transaction(hsotg, qh->channel, fspcavail);
1285 /* Advance to next QH, skipping start-of-list entry */
2003 dev_dbg(hsotg->dev, " qh: %p\n", chan->qh);
2018 if (!(chan->xfer_started && chan->qh))
2021 list_for_each_entry(qtd, &chan->qh->qtd_list, qtd_list_entry) {
2227 /* Free memory for QH/QTD lists */