Lines Matching defs:qh

152 	if (td->qh->fixup_pending)
155 if (td->qh->ep_allocated)
159 sc = td->qh->sc;
162 &sc->sc_port[td->qh->port_index].state,
164 td->qh->dev_addr,
165 td->qh->ep_num,
166 octusb_convert_speed(td->qh->dev_speed),
167 td->qh->max_packet_size,
168 octusb_convert_ep_type(td->qh->ep_type),
169 (td->qh->ep_num & UE_DIR_IN) ? CVMX_USB_DIRECTION_IN :
171 td->qh->ep_interval,
172 td->qh->ep_mult,
173 td->qh->hs_hub_addr,
174 td->qh->hs_hub_port);
180 &sc->sc_port[td->qh->port_index].state,
181 ep_handle, td->qh->ep_toggle_next);
183 td->qh->fixup_handle = -1;
184 td->qh->fixup_complete = 0;
185 td->qh->fixup_len = 0;
186 td->qh->fixup_off = 0;
187 td->qh->fixup_pending = 0;
188 td->qh->fixup_actlen = 0;
190 td->qh->ep_handle = ep_handle;
191 td->qh->ep_allocated = 1;
201 if (td->qh->ep_allocated == 0)
205 sc = td->qh->sc;
207 if (td->qh->fixup_handle >= 0) {
209 cvmx_usb_cancel(&sc->sc_port[td->qh->port_index].state,
210 td->qh->ep_handle, td->qh->fixup_handle);
212 cvmx_usb_close_pipe(&sc->sc_port[td->qh->port_index].state, td->qh->ep_handle);
214 td->qh->ep_allocated = 0;
231 td->qh->fixup_complete = 1;
232 td->qh->fixup_pending = 0;
233 td->qh->fixup_actlen = bytes_transferred;
234 td->qh->fixup_handle = -1;
265 if (td->qh->fixup_complete != 0) {
267 td->qh->fixup_complete = 0;
270 usb_pc_cpu_invalidate(td->qh->fixup_pc);
278 usbd_copy_out(td->pc, td->offset, td->qh->fixup_buf, 8);
285 td->qh->fixup_len = UGETW(td->qh->fixup_buf + 6);
286 td->qh->fixup_off = 0;
288 if (td->qh->fixup_len > (OCTUSB_MAX_FIXUP - 8)) {
293 if (td->qh->fixup_buf[0] & UE_DIR_IN) {
298 sc = td->qh->sc;
301 usb_pc_cpu_flush(td->qh->fixup_pc);
304 &sc->sc_port[td->qh->port_index].state,
305 td->qh->ep_handle, td->qh->fixup_phys,
306 td->qh->fixup_phys + 8, td->qh->fixup_len,
313 td->qh->fixup_handle = status;
314 td->qh->fixup_pending = 1;
315 td->qh->fixup_complete = 0;
335 rem = td->qh->fixup_len - td->qh->fixup_off;
342 usbd_copy_out(td->pc, td->offset, td->qh->fixup_buf +
343 td->qh->fixup_off + 8, td->remainder);
346 td->qh->fixup_off += td->remainder;
366 rem = td->qh->fixup_actlen - td->qh->fixup_off;
371 usbd_copy_in(td->pc, td->offset, td->qh->fixup_buf +
372 td->qh->fixup_off + 8, rem);
376 td->qh->fixup_off += rem;
394 if (td->qh->fixup_complete != 0) {
396 td->qh->fixup_complete = 0;
401 if (!(td->qh->fixup_buf[0] & UE_DIR_IN)) {
406 sc = td->qh->sc;
409 usb_pc_cpu_flush(td->qh->fixup_pc);
413 &sc->sc_port[td->qh->port_index].state,
414 td->qh->ep_handle, td->qh->fixup_phys,
415 td->qh->fixup_phys + 8, td->qh->fixup_len,
423 td->qh->fixup_handle = status;
424 td->qh->fixup_pending = 1;
425 td->qh->fixup_complete = 0;
447 if ((td->qh->fixup_complete != 0) &&
448 ((td->qh->ep_type & UE_XFERTYPE) == UE_ISOCHRONOUS)) {
449 td->qh->fixup_complete = 0;
461 rem = OCTUSB_MAX_FIXUP % td->qh->max_frame_size;
473 if ((rem == 0) || (rem % td->qh->max_frame_size))
477 usbd_copy_out(td->pc, td->offset, td->qh->fixup_buf, rem);
480 usb_pc_cpu_flush(td->qh->fixup_pc);
488 sc = td->qh->sc;
490 switch (td->qh->ep_type & UE_XFERTYPE) {
492 td->qh->iso_pkt.offset = 0;
493 td->qh->iso_pkt.length = rem;
494 td->qh->iso_pkt.status = 0;
496 status = cvmx_usb_submit_isochronous(&sc->sc_port[td->qh->port_index].state,
497 td->qh->ep_handle, 1, CVMX_USB_ISOCHRONOUS_FLAGS_ALLOW_SHORT |
498 CVMX_USB_ISOCHRONOUS_FLAGS_ASAP, 1, &td->qh->iso_pkt,
499 td->qh->fixup_phys, rem, &octusb_complete_cb, td);
503 status = cvmx_usb_submit_bulk(&sc->sc_port[td->qh->port_index].state,
504 td->qh->ep_handle, td->qh->fixup_phys, rem, &octusb_complete_cb, td);
508 status = cvmx_usb_submit_interrupt(&sc->sc_port[td->qh->port_index].state,
509 td->qh->ep_handle, td->qh->fixup_phys, rem, &octusb_complete_cb, td);
521 td->qh->fixup_handle = status;
522 td->qh->fixup_len = rem;
523 td->qh->fixup_pending = 1;
524 td->qh->fixup_complete = 0;
547 if (td->qh->fixup_complete != 0) {
550 usb_pc_cpu_invalidate(td->qh->fixup_pc);
552 rem = td->qh->fixup_actlen;
555 if (rem != td->qh->fixup_len) {
556 if (rem < td->qh->fixup_len) {
567 usbd_copy_in(td->pc, td->offset, td->qh->fixup_buf, rem);
573 td->qh->fixup_complete = 0;
575 if ((td->qh->ep_type & UE_XFERTYPE) == UE_ISOCHRONOUS)
589 rem = OCTUSB_MAX_FIXUP % td->qh->max_frame_size;
604 usb_pc_cpu_invalidate(td->qh->fixup_pc);
607 sc = td->qh->sc;
609 switch (td->qh->ep_type & UE_XFERTYPE) {
611 td->qh->iso_pkt.offset = 0;
612 td->qh->iso_pkt.length = rem;
613 td->qh->iso_pkt.status = 0;
615 status = cvmx_usb_submit_isochronous(&sc->sc_port[td->qh->port_index].state,
616 td->qh->ep_handle, 1, CVMX_USB_ISOCHRONOUS_FLAGS_ALLOW_SHORT |
617 CVMX_USB_ISOCHRONOUS_FLAGS_ASAP, 1, &td->qh->iso_pkt,
618 td->qh->fixup_phys, rem, &octusb_complete_cb, td);
622 status = cvmx_usb_submit_bulk(&sc->sc_port[td->qh->port_index].state,
623 td->qh->ep_handle, td->qh->fixup_phys, rem, &octusb_complete_cb, td);
627 status = cvmx_usb_submit_interrupt(&sc->sc_port[td->qh->port_index].state,
628 td->qh->ep_handle, td->qh->fixup_phys, rem, &octusb_complete_cb, td);
640 td->qh->fixup_handle = status;
641 td->qh->fixup_len = rem;
642 td->qh->fixup_pending = 1;
643 td->qh->fixup_complete = 0;
759 struct octusb_qh *qh;
796 qh = xfer->qh_start[0];
797 sc = qh->sc;
801 &sc->sc_port[qh->port_index].state,
802 qh->ep_handle) ? 1 : 0;
1120 td->qh->ep_allocated = 0;
1121 td->qh->ep_toggle_next = xfer->endpoint->toggle_next ? 1 : 0;
1730 struct octusb_qh *qh;
1738 qh = NULL;
1766 qh = page_info.buffer;
1770 qh->sc = OCTUSB_BUS2SC(xfer->xroot->bus);
1771 qh->max_frame_size = xfer->max_frame_size;
1772 qh->max_packet_size = xfer->max_packet_size;
1773 qh->ep_num = xfer->endpointno;
1774 qh->ep_type = xfer->endpoint->edesc->bmAttributes;
1775 qh->dev_addr = xfer->address;
1776 qh->dev_speed = usbd_get_speed(xfer->xroot->udev);
1777 qh->port_index = xfer->xroot->udev->port_index;
1782 qh->ep_interval = xfer->interval * 8;
1784 qh->ep_interval = xfer->interval * 1;
1787 qh->ep_interval = 1 << xfer->fps_shift;
1790 qh->ep_interval = 0;
1794 qh->ep_mult = xfer->max_packet_count & 3;
1795 qh->hs_hub_addr = xfer->xroot->udev->hs_hub_addr;
1796 qh->hs_hub_port = xfer->xroot->udev->hs_port_no;
1798 xfer->qh_start[0] = qh;
1811 qh->fixup_phys = page_info.physaddr;
1812 qh->fixup_pc = pc;
1813 qh->fixup_buf = page_info.buffer;
1835 td->qh = qh;