Lines Matching refs:qh

149 	if (td->qh->fixup_pending)
152 if (td->qh->ep_allocated)
156 sc = td->qh->sc;
159 &sc->sc_port[td->qh->root_port_index].state,
161 td->qh->dev_addr,
162 td->qh->ep_num & UE_ADDR,
163 octusb_convert_speed(td->qh->dev_speed),
164 td->qh->max_packet_size,
165 octusb_convert_ep_type(td->qh->ep_type),
166 (td->qh->ep_num & UE_DIR_IN) ? CVMX_USB_DIRECTION_IN :
168 td->qh->ep_interval,
169 (td->qh->dev_speed == USB_SPEED_HIGH) ? td->qh->ep_mult : 0,
170 td->qh->hs_hub_addr,
171 td->qh->hs_hub_port);
179 &sc->sc_port[td->qh->root_port_index].state,
180 ep_handle, td->qh->ep_toggle_next);
182 td->qh->fixup_handle = -1;
183 td->qh->fixup_complete = 0;
184 td->qh->fixup_len = 0;
185 td->qh->fixup_off = 0;
186 td->qh->fixup_pending = 0;
187 td->qh->fixup_actlen = 0;
189 td->qh->ep_handle = ep_handle;
190 td->qh->ep_allocated = 1;
200 if (td->qh->ep_allocated == 0)
204 sc = td->qh->sc;
206 if (td->qh->fixup_handle >= 0) {
208 cvmx_usb_cancel(&sc->sc_port[td->qh->root_port_index].state,
209 td->qh->ep_handle, td->qh->fixup_handle);
211 cvmx_usb_close_pipe(&sc->sc_port[td->qh->root_port_index].state, td->qh->ep_handle);
213 td->qh->ep_allocated = 0;
230 td->qh->fixup_complete = 1;
231 td->qh->fixup_pending = 0;
232 td->qh->fixup_actlen = bytes_transferred;
233 td->qh->fixup_handle = -1;
264 if (td->qh->fixup_complete != 0) {
266 td->qh->fixup_complete = 0;
269 usb_pc_cpu_invalidate(td->qh->fixup_pc);
277 usbd_copy_out(td->pc, td->offset, td->qh->fixup_buf, 8);
284 td->qh->fixup_len = UGETW(td->qh->fixup_buf + 6);
285 td->qh->fixup_off = 0;
287 if (td->qh->fixup_len > (OCTUSB_MAX_FIXUP - 8)) {
292 if (td->qh->fixup_buf[0] & UE_DIR_IN) {
297 sc = td->qh->sc;
300 usb_pc_cpu_flush(td->qh->fixup_pc);
303 &sc->sc_port[td->qh->root_port_index].state,
304 td->qh->ep_handle, td->qh->fixup_phys,
305 td->qh->fixup_phys + 8, td->qh->fixup_len,
312 td->qh->fixup_handle = status;
313 td->qh->fixup_pending = 1;
314 td->qh->fixup_complete = 0;
334 rem = td->qh->fixup_len - td->qh->fixup_off;
341 usbd_copy_out(td->pc, td->offset, td->qh->fixup_buf +
342 td->qh->fixup_off + 8, td->remainder);
345 td->qh->fixup_off += td->remainder;
365 rem = td->qh->fixup_actlen - td->qh->fixup_off;
370 usbd_copy_in(td->pc, td->offset, td->qh->fixup_buf +
371 td->qh->fixup_off + 8, rem);
375 td->qh->fixup_off += rem;
393 if (td->qh->fixup_complete != 0) {
395 td->qh->fixup_complete = 0;
400 if (!(td->qh->fixup_buf[0] & UE_DIR_IN)) {
405 sc = td->qh->sc;
408 usb_pc_cpu_flush(td->qh->fixup_pc);
412 &sc->sc_port[td->qh->root_port_index].state,
413 td->qh->ep_handle, td->qh->fixup_phys,
414 td->qh->fixup_phys + 8, td->qh->fixup_len,
422 td->qh->fixup_handle = status;
423 td->qh->fixup_pending = 1;
424 td->qh->fixup_complete = 0;
446 if ((td->qh->fixup_complete != 0) &&
447 ((td->qh->ep_type & UE_XFERTYPE) == UE_ISOCHRONOUS)) {
448 td->qh->fixup_complete = 0;
460 rem = OCTUSB_MAX_FIXUP % td->qh->max_frame_size;
472 if ((rem == 0) || (rem % td->qh->max_frame_size))
476 usbd_copy_out(td->pc, td->offset, td->qh->fixup_buf, rem);
479 usb_pc_cpu_flush(td->qh->fixup_pc);
487 sc = td->qh->sc;
489 switch (td->qh->ep_type & UE_XFERTYPE) {
491 td->qh->iso_pkt.offset = 0;
492 td->qh->iso_pkt.length = rem;
493 td->qh->iso_pkt.status = 0;
495 status = cvmx_usb_submit_isochronous(&sc->sc_port[td->qh->root_port_index].state,
496 td->qh->ep_handle, 1, CVMX_USB_ISOCHRONOUS_FLAGS_ALLOW_SHORT |
497 CVMX_USB_ISOCHRONOUS_FLAGS_ASAP, 1, &td->qh->iso_pkt,
498 td->qh->fixup_phys, rem, &octusb_complete_cb, td);
502 status = cvmx_usb_submit_bulk(&sc->sc_port[td->qh->root_port_index].state,
503 td->qh->ep_handle, td->qh->fixup_phys, rem, &octusb_complete_cb, td);
507 status = cvmx_usb_submit_interrupt(&sc->sc_port[td->qh->root_port_index].state,
508 td->qh->ep_handle, td->qh->fixup_phys, rem, &octusb_complete_cb, td);
520 td->qh->fixup_handle = status;
521 td->qh->fixup_len = rem;
522 td->qh->fixup_pending = 1;
523 td->qh->fixup_complete = 0;
546 if (td->qh->fixup_complete != 0) {
549 usb_pc_cpu_invalidate(td->qh->fixup_pc);
551 rem = td->qh->fixup_actlen;
554 if (rem != td->qh->fixup_len) {
555 if (rem < td->qh->fixup_len) {
566 usbd_copy_in(td->pc, td->offset, td->qh->fixup_buf, rem);
572 td->qh->fixup_complete = 0;
574 if ((td->qh->ep_type & UE_XFERTYPE) == UE_ISOCHRONOUS)
588 rem = OCTUSB_MAX_FIXUP % td->qh->max_frame_size;
603 usb_pc_cpu_invalidate(td->qh->fixup_pc);
606 sc = td->qh->sc;
608 switch (td->qh->ep_type & UE_XFERTYPE) {
610 td->qh->iso_pkt.offset = 0;
611 td->qh->iso_pkt.length = rem;
612 td->qh->iso_pkt.status = 0;
614 status = cvmx_usb_submit_isochronous(&sc->sc_port[td->qh->root_port_index].state,
615 td->qh->ep_handle, 1, CVMX_USB_ISOCHRONOUS_FLAGS_ALLOW_SHORT |
616 CVMX_USB_ISOCHRONOUS_FLAGS_ASAP, 1, &td->qh->iso_pkt,
617 td->qh->fixup_phys, rem, &octusb_complete_cb, td);
621 status = cvmx_usb_submit_bulk(&sc->sc_port[td->qh->root_port_index].state,
622 td->qh->ep_handle, td->qh->fixup_phys, rem, &octusb_complete_cb, td);
626 status = cvmx_usb_submit_interrupt(&sc->sc_port[td->qh->root_port_index].state,
627 td->qh->ep_handle, td->qh->fixup_phys, rem, &octusb_complete_cb, td);
639 td->qh->fixup_handle = status;
640 td->qh->fixup_len = rem;
641 td->qh->fixup_pending = 1;
642 td->qh->fixup_complete = 0;
758 struct octusb_qh *qh;
795 qh = xfer->qh_start[0];
796 sc = qh->sc;
800 &sc->sc_port[qh->root_port_index].state,
801 qh->ep_handle) ? 1 : 0;
1119 td->qh->ep_allocated = 0;
1120 td->qh->ep_toggle_next = xfer->endpoint->toggle_next ? 1 : 0;
1729 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->root_port_index = xfer->xroot->udev->port_index;
1781 qh->root_port_index = hub->port_index;
1788 qh->ep_interval = xfer->interval * 8;
1790 qh->ep_interval = xfer->interval * 1;
1793 qh->ep_interval = 1 << xfer->fps_shift;
1796 qh->ep_interval = 0;
1800 qh->ep_mult = xfer->max_packet_count & 3;
1801 qh->hs_hub_addr = xfer->xroot->udev->hs_hub_addr;
1802 qh->hs_hub_port = xfer->xroot->udev->hs_port_no;
1804 xfer->qh_start[0] = qh;
1817 qh->fixup_phys = page_info.physaddr;
1818 qh->fixup_pc = pc;
1819 qh->fixup_buf = page_info.buffer;
1841 td->qh = qh;