Lines Matching refs:pipe

57 void usbd_start_next(struct usbd_pipe *pipe);
148 usbd_dump_queue(struct usbd_pipe *pipe) in usbd_dump_queue() argument
152 printf("%s: pipe=%p\n", __func__, pipe); in usbd_dump_queue()
153 SIMPLEQ_FOREACH(xfer, &pipe->queue, next) { in usbd_dump_queue()
159 usbd_dump_pipe(struct usbd_pipe *pipe) in usbd_dump_pipe() argument
161 printf("%s: pipe=%p\n", __func__, pipe); in usbd_dump_pipe()
162 if (pipe == NULL) in usbd_dump_pipe()
164 usbd_dump_iface(pipe->iface); in usbd_dump_pipe()
165 usbd_dump_device(pipe->device); in usbd_dump_pipe()
166 usbd_dump_endpoint(pipe->endpoint); in usbd_dump_pipe()
168 pipe->running, pipe->aborting); in usbd_dump_pipe()
169 printf(" intrxfer=%p, repeat=%d, interval=%d\n", pipe->intrxfer, in usbd_dump_pipe()
170 pipe->repeat, pipe->interval); in usbd_dump_pipe()
176 struct usbd_pipe **pipe) in usbd_open_pipe() argument
178 return (usbd_open_pipe_ival(iface, address, flags, pipe, in usbd_open_pipe()
184 u_int8_t flags, struct usbd_pipe **pipe, int ival) in usbd_open_pipe_ival() argument
209 *pipe = p; in usbd_open_pipe_ival()
215 u_int8_t flags, struct usbd_pipe **pipe, void *priv, in usbd_open_pipe_intr() argument
239 *pipe = ipipe; in usbd_open_pipe_intr()
254 usbd_close_pipe(struct usbd_pipe *pipe) in usbd_close_pipe() argument
257 if (pipe == NULL) { in usbd_close_pipe()
263 if (!SIMPLEQ_EMPTY(&pipe->queue)) in usbd_close_pipe()
264 usbd_abort_pipe(pipe); in usbd_close_pipe()
267 if (pipe->iface != NULL) in usbd_close_pipe()
268 LIST_REMOVE(pipe, next); in usbd_close_pipe()
269 pipe->endpoint->refcnt--; in usbd_close_pipe()
270 pipe->methods->close(pipe); in usbd_close_pipe()
271 if (pipe->intrxfer != NULL) in usbd_close_pipe()
272 usbd_free_xfer(pipe->intrxfer); in usbd_close_pipe()
273 free(pipe, M_USB, pipe->pipe_size); in usbd_close_pipe()
280 struct usbd_pipe *pipe = xfer->pipe; in usbd_transfer() local
281 struct usbd_bus *bus = pipe->device->bus; in usbd_transfer()
286 if (usbd_is_dying(pipe->device)) in usbd_transfer()
290 xfer, xfer->flags, pipe, pipe->running)); in usbd_transfer()
293 usbd_dump_queue(pipe); in usbd_transfer()
298 if (pipe->aborting) in usbd_transfer()
319 err = pipe->methods->transfer(xfer); in usbd_transfer()
348 usbd_dopoll(pipe->device); in usbd_transfer()
363 usbd_abort_pipe(pipe); in usbd_transfer()
438 usbd_setup_xfer(struct usbd_xfer *xfer, struct usbd_pipe *pipe, in usbd_setup_xfer() argument
442 xfer->pipe = pipe; in usbd_setup_xfer()
460 xfer->pipe = dev->default_pipe; in usbd_setup_default_xfer()
475 usbd_setup_isoc_xfer(struct usbd_xfer *xfer, struct usbd_pipe *pipe, in usbd_setup_isoc_xfer() argument
481 xfer->pipe = pipe; in usbd_setup_isoc_xfer()
550 usbd_abort_pipe(struct usbd_pipe *pipe) in usbd_abort_pipe() argument
556 if (pipe == NULL) { in usbd_abort_pipe()
562 DPRINTFN(2,("%s: pipe=%p\n", __func__, pipe)); in usbd_abort_pipe()
565 usbd_dump_queue(pipe); in usbd_abort_pipe()
567 pipe->repeat = 0; in usbd_abort_pipe()
568 pipe->aborting = 1; in usbd_abort_pipe()
569 while ((xfer = SIMPLEQ_FIRST(&pipe->queue)) != NULL) { in usbd_abort_pipe()
571 pipe, xfer, pipe->methods)); in usbd_abort_pipe()
573 pipe->methods->abort(xfer); in usbd_abort_pipe()
576 pipe->aborting = 0; in usbd_abort_pipe()
581 usbd_clear_endpoint_stall(struct usbd_pipe *pipe) in usbd_clear_endpoint_stall() argument
583 struct usbd_device *dev = pipe->device; in usbd_clear_endpoint_stall()
593 usbd_clear_endpoint_toggle(pipe); in usbd_clear_endpoint_stall()
598 USETW(req.wIndex, pipe->endpoint->edesc->bEndpointAddress); in usbd_clear_endpoint_stall()
606 usbd_clear_endpoint_stall_async(struct usbd_pipe *pipe) in usbd_clear_endpoint_stall_async() argument
608 struct usbd_device *dev = pipe->device; in usbd_clear_endpoint_stall_async()
613 usbd_clear_endpoint_toggle(pipe); in usbd_clear_endpoint_stall_async()
618 USETW(req.wIndex, pipe->endpoint->edesc->bEndpointAddress); in usbd_clear_endpoint_stall_async()
630 usbd_clear_endpoint_toggle(struct usbd_pipe *pipe) in usbd_clear_endpoint_toggle() argument
632 if (pipe->methods->cleartoggle != NULL) in usbd_clear_endpoint_toggle()
633 pipe->methods->cleartoggle(pipe); in usbd_clear_endpoint_toggle()
729 struct usbd_pipe *pipe = xfer->pipe; in usb_transfer_complete() local
730 struct usbd_bus *bus = pipe->device->bus; in usb_transfer_complete()
740 "actlen=%d\n", pipe, xfer, xfer->status, xfer->actlen)); in usb_transfer_complete()
750 pipe->running = 0; in usb_transfer_complete()
767 if (!pipe->repeat) { in usb_transfer_complete()
773 if (!pipe->repeat) { in usb_transfer_complete()
775 KASSERT(xfer == SIMPLEQ_FIRST(&pipe->queue)); in usb_transfer_complete()
776 SIMPLEQ_REMOVE_HEAD(&pipe->queue, next); in usb_transfer_complete()
782 pipe->repeat, SIMPLEQ_FIRST(&pipe->queue))); in usb_transfer_complete()
786 [UE_GET_XFERTYPE(pipe->endpoint->edesc->bmAttributes)]; in usb_transfer_complete()
805 if (pipe->repeat) { in usb_transfer_complete()
808 pipe->methods->done(xfer); in usb_transfer_complete()
810 pipe->methods->done(xfer); in usb_transfer_complete()
818 if (!pipe->repeat) { in usb_transfer_complete()
822 pipe->iface != NULL) /* not control pipe */ in usb_transfer_complete()
823 pipe->running = 0; in usb_transfer_complete()
825 usbd_start_next(pipe); in usb_transfer_complete()
832 struct usbd_pipe *pipe = xfer->pipe; in usb_insert_transfer() local
837 pipe, pipe->running, xfer->timeout)); in usb_insert_transfer()
846 SIMPLEQ_INSERT_TAIL(&pipe->queue, xfer, next); in usb_insert_transfer()
847 if (pipe->running) in usb_insert_transfer()
850 pipe->running = 1; in usb_insert_transfer()
859 usbd_start_next(struct usbd_pipe *pipe) in usbd_start_next() argument
867 if (pipe == NULL) { in usbd_start_next()
871 if (pipe->methods == NULL || pipe->methods->start == NULL) { in usbd_start_next()
872 printf("%s: pipe=%p no start method\n", __func__, pipe); in usbd_start_next()
878 xfer = SIMPLEQ_FIRST(&pipe->queue); in usbd_start_next()
879 DPRINTFN(5, ("%s: pipe=%p, xfer=%p\n", __func__, pipe, xfer)); in usbd_start_next()
881 pipe->running = 0; in usbd_start_next()
883 err = pipe->methods->start(xfer); in usbd_start_next()
886 pipe->running = 0; in usbd_start_next()