Lines Matching refs:qh

152 	if (td->qh->fixup_pending)
155 if (td->qh->ep_allocated)
159 sc = td->qh->sc;
162 &sc->sc_port[td->qh->root_port_index].state,
164 td->qh->dev_addr,
165 td->qh->ep_num & UE_ADDR,
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->dev_speed == USB_SPEED_HIGH) ? td->qh->ep_mult : 0,
173 td->qh->hs_hub_addr,
174 td->qh->hs_hub_port);
182 &sc->sc_port[td->qh->root_port_index].state,
183 ep_handle, td->qh->ep_toggle_next);
185 td->qh->fixup_handle = -1;
186 td->qh->fixup_complete = 0;
187 td->qh->fixup_len = 0;
188 td->qh->fixup_off = 0;
189 td->qh->fixup_pending = 0;
190 td->qh->fixup_actlen = 0;
192 td->qh->ep_handle = ep_handle;
193 td->qh->ep_allocated = 1;
203 if (td->qh->ep_allocated == 0)
207 sc = td->qh->sc;
209 if (td->qh->fixup_handle >= 0) {
211 cvmx_usb_cancel(&sc->sc_port[td->qh->root_port_index].state,
212 td->qh->ep_handle, td->qh->fixup_handle);
214 cvmx_usb_close_pipe(&sc->sc_port[td->qh->root_port_index].state, td->qh->ep_handle);
216 td->qh->ep_allocated = 0;
233 td->qh->fixup_complete = 1;
234 td->qh->fixup_pending = 0;
235 td->qh->fixup_actlen = bytes_transferred;
236 td->qh->fixup_handle = -1;
267 if (td->qh->fixup_complete != 0) {
269 td->qh->fixup_complete = 0;
272 usb_pc_cpu_invalidate(td->qh->fixup_pc);
280 usbd_copy_out(td->pc, td->offset, td->qh->fixup_buf, 8);
287 td->qh->fixup_len = UGETW(td->qh->fixup_buf + 6);
288 td->qh->fixup_off = 0;
290 if (td->qh->fixup_len > (OCTUSB_MAX_FIXUP - 8)) {
295 if (td->qh->fixup_buf[0] & UE_DIR_IN) {
300 sc = td->qh->sc;
303 usb_pc_cpu_flush(td->qh->fixup_pc);
306 &sc->sc_port[td->qh->root_port_index].state,
307 td->qh->ep_handle, td->qh->fixup_phys,
308 td->qh->fixup_phys + 8, td->qh->fixup_len,
315 td->qh->fixup_handle = status;
316 td->qh->fixup_pending = 1;
317 td->qh->fixup_complete = 0;
337 rem = td->qh->fixup_len - td->qh->fixup_off;
344 usbd_copy_out(td->pc, td->offset, td->qh->fixup_buf +
345 td->qh->fixup_off + 8, td->remainder);
348 td->qh->fixup_off += td->remainder;
368 rem = td->qh->fixup_actlen - td->qh->fixup_off;
373 usbd_copy_in(td->pc, td->offset, td->qh->fixup_buf +
374 td->qh->fixup_off + 8, rem);
378 td->qh->fixup_off += rem;
396 if (td->qh->fixup_complete != 0) {
398 td->qh->fixup_complete = 0;
403 if (!(td->qh->fixup_buf[0] & UE_DIR_IN)) {
408 sc = td->qh->sc;
411 usb_pc_cpu_flush(td->qh->fixup_pc);
415 &sc->sc_port[td->qh->root_port_index].state,
416 td->qh->ep_handle, td->qh->fixup_phys,
417 td->qh->fixup_phys + 8, td->qh->fixup_len,
425 td->qh->fixup_handle = status;
426 td->qh->fixup_pending = 1;
427 td->qh->fixup_complete = 0;
449 if ((td->qh->fixup_complete != 0) &&
450 ((td->qh->ep_type & UE_XFERTYPE) == UE_ISOCHRONOUS)) {
451 td->qh->fixup_complete = 0;
463 rem = OCTUSB_MAX_FIXUP % td->qh->max_frame_size;
475 if ((rem == 0) || (rem % td->qh->max_frame_size))
479 usbd_copy_out(td->pc, td->offset, td->qh->fixup_buf, rem);
482 usb_pc_cpu_flush(td->qh->fixup_pc);
490 sc = td->qh->sc;
492 switch (td->qh->ep_type & UE_XFERTYPE) {
494 td->qh->iso_pkt.offset = 0;
495 td->qh->iso_pkt.length = rem;
496 td->qh->iso_pkt.status = 0;
498 status = cvmx_usb_submit_isochronous(&sc->sc_port[td->qh->root_port_index].state,
499 td->qh->ep_handle, 1, CVMX_USB_ISOCHRONOUS_FLAGS_ALLOW_SHORT |
500 CVMX_USB_ISOCHRONOUS_FLAGS_ASAP, 1, &td->qh->iso_pkt,
501 td->qh->fixup_phys, rem, &octusb_complete_cb, td);
505 status = cvmx_usb_submit_bulk(&sc->sc_port[td->qh->root_port_index].state,
506 td->qh->ep_handle, td->qh->fixup_phys, rem, &octusb_complete_cb, td);
510 status = cvmx_usb_submit_interrupt(&sc->sc_port[td->qh->root_port_index].state,
511 td->qh->ep_handle, td->qh->fixup_phys, rem, &octusb_complete_cb, td);
523 td->qh->fixup_handle = status;
524 td->qh->fixup_len = rem;
525 td->qh->fixup_pending = 1;
526 td->qh->fixup_complete = 0;
549 if (td->qh->fixup_complete != 0) {
552 usb_pc_cpu_invalidate(td->qh->fixup_pc);
554 rem = td->qh->fixup_actlen;
557 if (rem != td->qh->fixup_len) {
558 if (rem < td->qh->fixup_len) {
569 usbd_copy_in(td->pc, td->offset, td->qh->fixup_buf, rem);
575 td->qh->fixup_complete = 0;
577 if ((td->qh->ep_type & UE_XFERTYPE) == UE_ISOCHRONOUS)
591 rem = OCTUSB_MAX_FIXUP % td->qh->max_frame_size;
606 usb_pc_cpu_invalidate(td->qh->fixup_pc);
609 sc = td->qh->sc;
611 switch (td->qh->ep_type & UE_XFERTYPE) {
613 td->qh->iso_pkt.offset = 0;
614 td->qh->iso_pkt.length = rem;
615 td->qh->iso_pkt.status = 0;
617 status = cvmx_usb_submit_isochronous(&sc->sc_port[td->qh->root_port_index].state,
618 td->qh->ep_handle, 1, CVMX_USB_ISOCHRONOUS_FLAGS_ALLOW_SHORT |
619 CVMX_USB_ISOCHRONOUS_FLAGS_ASAP, 1, &td->qh->iso_pkt,
620 td->qh->fixup_phys, rem, &octusb_complete_cb, td);
624 status = cvmx_usb_submit_bulk(&sc->sc_port[td->qh->root_port_index].state,
625 td->qh->ep_handle, td->qh->fixup_phys, rem, &octusb_complete_cb, td);
629 status = cvmx_usb_submit_interrupt(&sc->sc_port[td->qh->root_port_index].state,
630 td->qh->ep_handle, td->qh->fixup_phys, rem, &octusb_complete_cb, td);
642 td->qh->fixup_handle = status;
643 td->qh->fixup_len = rem;
644 td->qh->fixup_pending = 1;
645 td->qh->fixup_complete = 0;
761 struct octusb_qh *qh;
798 qh = xfer->qh_start[0];
799 sc = qh->sc;
803 &sc->sc_port[qh->root_port_index].state,
804 qh->ep_handle) ? 1 : 0;
1122 td->qh->ep_allocated = 0;
1123 td->qh->ep_toggle_next = xfer->endpoint->toggle_next ? 1 : 0;
1732 struct octusb_qh *qh;
1741 qh = NULL;
1769 qh = page_info.buffer;
1773 qh->sc = OCTUSB_BUS2SC(xfer->xroot->bus);
1774 qh->max_frame_size = xfer->max_frame_size;
1775 qh->max_packet_size = xfer->max_packet_size;
1776 qh->ep_num = xfer->endpointno;
1777 qh->ep_type = xfer->endpoint->edesc->bmAttributes;
1778 qh->dev_addr = xfer->address;
1779 qh->dev_speed = usbd_get_speed(xfer->xroot->udev);
1780 qh->root_port_index = xfer->xroot->udev->port_index;
1784 qh->root_port_index = hub->port_index;
1791 qh->ep_interval = xfer->interval * 8;
1793 qh->ep_interval = xfer->interval * 1;
1796 qh->ep_interval = 1 << xfer->fps_shift;
1799 qh->ep_interval = 0;
1803 qh->ep_mult = xfer->max_packet_count & 3;
1804 qh->hs_hub_addr = xfer->xroot->udev->hs_hub_addr;
1805 qh->hs_hub_port = xfer->xroot->udev->hs_port_no;
1807 xfer->qh_start[0] = qh;
1820 qh->fixup_phys = page_info.physaddr;
1821 qh->fixup_pc = pc;
1822 qh->fixup_buf = page_info.buffer;
1844 td->qh = qh;