Lines Matching refs:urb

158 			itd->urb);  in dbg_itd()
437 td->urb); in qh_lines()
2134 struct fotg210_qh *qh, struct urb *urb, u32 token) in fotg210_clear_tt_buffer() argument
2143 if (urb->dev->tt && !usb_pipeint(urb->pipe) && !qh->clearing_tt) { in fotg210_clear_tt_buffer()
2144 struct usb_device *tt = urb->dev->tt->hub; in fotg210_clear_tt_buffer()
2148 urb->dev->ttport, urb->dev->devnum, in fotg210_clear_tt_buffer()
2149 usb_pipeendpoint(urb->pipe), token); in fotg210_clear_tt_buffer()
2151 if (urb->dev->tt->hub != in fotg210_clear_tt_buffer()
2153 if (usb_hub_clear_tt_buffer(urb) == 0) in fotg210_clear_tt_buffer()
2159 static int qtd_copy_status(struct fotg210_hcd *fotg210, struct urb *urb, in qtd_copy_status() argument
2166 urb->actual_length += length - QTD_LENGTH(token); in qtd_copy_status()
2169 if (unlikely(urb->unlinked)) in qtd_copy_status()
2199 urb->dev->devpath, in qtd_copy_status()
2200 usb_pipeendpoint(urb->pipe), in qtd_copy_status()
2201 usb_pipein(urb->pipe) ? "in" : "out"); in qtd_copy_status()
2209 usb_pipedevice(urb->pipe), in qtd_copy_status()
2210 usb_pipeendpoint(urb->pipe), in qtd_copy_status()
2211 usb_pipein(urb->pipe) ? "in" : "out", in qtd_copy_status()
2218 static void fotg210_urb_done(struct fotg210_hcd *fotg210, struct urb *urb, in fotg210_urb_done() argument
2223 if (likely(urb->hcpriv != NULL)) { in fotg210_urb_done()
2224 struct fotg210_qh *qh = (struct fotg210_qh *) urb->hcpriv; in fotg210_urb_done()
2234 if (unlikely(urb->unlinked)) { in fotg210_urb_done()
2246 __func__, urb->dev->devpath, urb, in fotg210_urb_done()
2247 usb_pipeendpoint(urb->pipe), in fotg210_urb_done()
2248 usb_pipein(urb->pipe) ? "in" : "out", in fotg210_urb_done()
2250 urb->actual_length, urb->transfer_buffer_length); in fotg210_urb_done()
2254 usb_hcd_unlink_urb_from_ep(fotg210_to_hcd(fotg210), urb); in fotg210_urb_done()
2256 usb_hcd_giveback_urb(fotg210_to_hcd(fotg210), urb, status); in fotg210_urb_done()
2306 struct urb *urb; in qh_completions() local
2310 urb = qtd->urb; in qh_completions()
2314 if (likely(last->urb != urb)) { in qh_completions()
2315 fotg210_urb_done(fotg210, last->urb, in qh_completions()
2340 urb, usb_endpoint_num(&urb->ep->desc), in qh_completions()
2341 usb_endpoint_dir_in(&urb->ep->desc) in qh_completions()
2343 urb->transfer_buffer_length, qtd, qh); in qh_completions()
2356 !urb->unlinked) { in qh_completions()
2411 else if (last_status == -EINPROGRESS && !urb->unlinked) in qh_completions()
2424 fotg210_clear_tt_buffer(fotg210, qh, urb, in qh_completions()
2437 last_status = qtd_copy_status(fotg210, urb, in qh_completions()
2460 urb, token); in qh_completions()
2483 fotg210_urb_done(fotg210, last->urb, last_status); in qh_completions()
2546 static void qtd_list_free(struct fotg210_hcd *fotg210, struct urb *urb, in qtd_list_free() argument
2563 struct urb *urb, struct list_head *head, gfp_t flags) in qh_urb_transaction() argument
2580 qtd->urb = urb; in qh_urb_transaction()
2586 len = urb->transfer_buffer_length; in qh_urb_transaction()
2587 is_input = usb_pipein(urb->pipe); in qh_urb_transaction()
2588 if (usb_pipecontrol(urb->pipe)) { in qh_urb_transaction()
2590 qtd_fill(fotg210, qtd, urb->setup_dma, in qh_urb_transaction()
2600 qtd->urb = urb; in qh_urb_transaction()
2612 i = urb->num_mapped_sgs; in qh_urb_transaction()
2614 sg = urb->sg; in qh_urb_transaction()
2623 buf = urb->transfer_dma; in qh_urb_transaction()
2631 maxpacket = max_packet(usb_maxpacket(urb->dev, urb->pipe, !is_input)); in qh_urb_transaction()
2671 qtd->urb = urb; in qh_urb_transaction()
2681 if (likely((urb->transfer_flags & URB_SHORT_NOT_OK) == 0 || in qh_urb_transaction()
2682 usb_pipecontrol(urb->pipe))) in qh_urb_transaction()
2690 if (likely(urb->transfer_buffer_length != 0)) { in qh_urb_transaction()
2693 if (usb_pipecontrol(urb->pipe)) { in qh_urb_transaction()
2697 } else if (usb_pipeout(urb->pipe) in qh_urb_transaction()
2698 && (urb->transfer_flags & URB_ZERO_PACKET) in qh_urb_transaction()
2699 && !(urb->transfer_buffer_length % maxpacket)) { in qh_urb_transaction()
2707 qtd->urb = urb; in qh_urb_transaction()
2717 if (likely(!(urb->transfer_flags & URB_NO_INTERRUPT))) in qh_urb_transaction()
2722 qtd_list_free(fotg210, urb, head); in qh_urb_transaction()
2741 static struct fotg210_qh *qh_make(struct fotg210_hcd *fotg210, struct urb *urb, in qh_make() argument
2748 struct usb_tt *tt = urb->dev->tt; in qh_make()
2757 info1 |= usb_pipeendpoint(urb->pipe) << 8; in qh_make()
2758 info1 |= usb_pipedevice(urb->pipe) << 0; in qh_make()
2760 is_input = usb_pipein(urb->pipe); in qh_make()
2761 type = usb_pipetype(urb->pipe); in qh_make()
2762 maxp = usb_maxpacket(urb->dev, urb->pipe, !is_input); in qh_make()
2787 if (urb->dev->speed == USB_SPEED_HIGH) { in qh_make()
2791 qh->period = urb->interval >> 3; in qh_make()
2792 if (qh->period == 0 && urb->interval != 1) { in qh_make()
2797 urb->interval = 1; in qh_make()
2800 urb->interval = qh->period << 3; in qh_make()
2806 qh->gap_uf = 1 + usb_calc_bus_time(urb->dev->speed, in qh_make()
2820 usb_calc_bus_time(urb->dev->speed, in qh_make()
2822 qh->period = urb->interval; in qh_make()
2825 urb->interval = qh->period; in qh_make()
2831 qh->dev = urb->dev; in qh_make()
2834 switch (urb->dev->speed) { in qh_make()
2855 info2 |= (urb->dev->ttport-1) << 23; in qh_make()
2857 info2 |= urb->dev->ttport << 23; in qh_make()
2892 fotg210_dbg(fotg210, "bogus dev %p speed %d\n", urb->dev, in qh_make()
2893 urb->dev->speed); in qh_make()
2907 usb_settoggle(urb->dev, usb_pipeendpoint(urb->pipe), !is_input, 1); in qh_make()
2975 struct urb *urb, struct list_head *qtd_list, in qh_append_tds() argument
2984 qh = qh_make(fotg210, urb, GFP_ATOMIC); in qh_append_tds()
2999 if (usb_pipedevice(urb->pipe) == 0) in qh_append_tds()
3042 urb->hcpriv = qh; in qh_append_tds()
3048 static int submit_async(struct fotg210_hcd *fotg210, struct urb *urb, in submit_async() argument
3056 epnum = urb->ep->desc.bEndpointAddress; in submit_async()
3065 __func__, urb->dev->devpath, urb, in submit_async()
3068 urb->transfer_buffer_length, in submit_async()
3069 qtd, urb->ep->hcpriv); in submit_async()
3078 rc = usb_hcd_link_urb_to_ep(fotg210_to_hcd(fotg210), urb); in submit_async()
3082 qh = qh_append_tds(fotg210, urb, qtd_list, epnum, &urb->ep->hcpriv); in submit_async()
3084 usb_hcd_unlink_urb_from_ep(fotg210_to_hcd(fotg210), urb); in submit_async()
3097 qtd_list_free(fotg210, urb, qtd_list); in submit_async()
3852 static int intr_submit(struct fotg210_hcd *fotg210, struct urb *urb, in intr_submit() argument
3862 epnum = urb->ep->desc.bEndpointAddress; in intr_submit()
3870 status = usb_hcd_link_urb_to_ep(fotg210_to_hcd(fotg210), urb); in intr_submit()
3876 qh = qh_append_tds(fotg210, urb, &empty, epnum, &urb->ep->hcpriv); in intr_submit()
3888 qh = qh_append_tds(fotg210, urb, qtd_list, epnum, &urb->ep->hcpriv); in intr_submit()
3896 usb_hcd_unlink_urb_from_ep(fotg210_to_hcd(fotg210), urb); in intr_submit()
3900 qtd_list_free(fotg210, urb, qtd_list); in intr_submit()
4003 struct urb *urb) in iso_stream_find() argument
4010 epnum = usb_pipeendpoint(urb->pipe); in iso_stream_find()
4011 if (usb_pipein(urb->pipe)) in iso_stream_find()
4012 ep = urb->dev->ep_in[epnum]; in iso_stream_find()
4014 ep = urb->dev->ep_out[epnum]; in iso_stream_find()
4024 iso_stream_init(fotg210, stream, urb->dev, urb->pipe, in iso_stream_find()
4025 urb->interval); in iso_stream_find()
4031 urb->dev->devpath, epnum, in iso_stream_find()
4032 usb_pipein(urb->pipe) ? "in" : "out"); in iso_stream_find()
4058 struct fotg210_iso_stream *stream, struct urb *urb) in itd_sched_init() argument
4061 dma_addr_t dma = urb->transfer_dma; in itd_sched_init()
4064 iso_sched->span = urb->number_of_packets * stream->interval; in itd_sched_init()
4069 for (i = 0; i < urb->number_of_packets; i++) { in itd_sched_init()
4075 length = urb->iso_frame_desc[i].length; in itd_sched_init()
4076 buf = dma + urb->iso_frame_desc[i].offset; in itd_sched_init()
4080 if (unlikely(((i + 1) == urb->number_of_packets)) in itd_sched_init()
4081 && !(urb->transfer_flags & URB_NO_INTERRUPT)) in itd_sched_init()
4105 struct fotg210_hcd *fotg210, struct urb *urb, gfp_t mem_flags) in itd_urb_transaction() argument
4114 sched = iso_sched_alloc(urb->number_of_packets, mem_flags); in itd_urb_transaction()
4118 itd_sched_init(fotg210, sched, stream, urb); in itd_urb_transaction()
4120 if (urb->interval < 8) in itd_urb_transaction()
4123 num_itds = urb->number_of_packets; in itd_urb_transaction()
4160 urb->hcpriv = sched; in itd_urb_transaction()
4161 urb->error_count = 0; in itd_urb_transaction()
4193 static int iso_stream_schedule(struct fotg210_hcd *fotg210, struct urb *urb, in iso_stream_schedule() argument
4199 struct fotg210_iso_sched *sched = urb->hcpriv; in iso_stream_schedule()
4201 period = urb->interval; in iso_stream_schedule()
4205 fotg210_dbg(fotg210, "iso request %p too long\n", urb); in iso_stream_schedule()
4242 urb, start - now - period, period, in iso_stream_schedule()
4280 urb, now, now + mod); in iso_stream_schedule()
4290 urb, start - now, span - period, in iso_stream_schedule()
4299 urb->start_frame = stream->next_uframe; in iso_stream_schedule()
4301 urb->start_frame >>= 3; in iso_stream_schedule()
4310 urb->hcpriv = NULL; in iso_stream_schedule()
4383 static void itd_link_urb(struct fotg210_hcd *fotg210, struct urb *urb, in itd_link_urb() argument
4388 struct fotg210_iso_sched *iso_sched = urb->hcpriv; in itd_link_urb()
4398 urb->dev->devpath, stream->bEndpointAddress & 0x0f, in itd_link_urb()
4400 urb->interval, in itd_link_urb()
4405 for (packet = 0, itd = NULL; packet < urb->number_of_packets;) { in itd_link_urb()
4415 itd->urb = urb; in itd_link_urb()
4430 || packet == urb->number_of_packets) { in itd_link_urb()
4440 urb->hcpriv = NULL; in itd_link_urb()
4461 struct urb *urb = itd->urb; in itd_complete() local
4475 desc = &urb->iso_frame_desc[urb_index]; in itd_complete()
4482 urb->error_count++; in itd_complete()
4484 desc->status = usb_pipein(urb->pipe) in itd_complete()
4495 fotg210_itdlen(urb, desc, t); in itd_complete()
4496 urb->actual_length += desc->actual_length; in itd_complete()
4500 desc->actual_length = fotg210_itdlen(urb, desc, t); in itd_complete()
4501 urb->actual_length += desc->actual_length; in itd_complete()
4509 if (likely((urb_index + 1) != urb->number_of_packets)) in itd_complete()
4518 dev = urb->dev; in itd_complete()
4519 fotg210_urb_done(fotg210, urb, 0); in itd_complete()
4521 urb = NULL; in itd_complete()
4536 itd->urb = NULL; in itd_complete()
4551 static int itd_submit(struct fotg210_hcd *fotg210, struct urb *urb, in itd_submit() argument
4559 stream = iso_stream_find(fotg210, urb); in itd_submit()
4564 if (unlikely(urb->interval != stream->interval && in itd_submit()
4568 stream->interval, urb->interval); in itd_submit()
4575 __func__, urb->dev->devpath, urb, in itd_submit()
4576 usb_pipeendpoint(urb->pipe), in itd_submit()
4577 usb_pipein(urb->pipe) ? "in" : "out", in itd_submit()
4578 urb->transfer_buffer_length, in itd_submit()
4579 urb->number_of_packets, urb->interval, in itd_submit()
4584 status = itd_urb_transaction(stream, fotg210, urb, mem_flags); in itd_submit()
4596 status = usb_hcd_link_urb_to_ep(fotg210_to_hcd(fotg210), urb); in itd_submit()
4599 status = iso_stream_schedule(fotg210, urb, stream); in itd_submit()
4601 itd_link_urb(fotg210, urb, fotg210->periodic_size << 3, stream); in itd_submit()
4603 usb_hcd_unlink_urb_from_ep(fotg210_to_hcd(fotg210), urb); in itd_submit()
5302 static int fotg210_urb_enqueue(struct usb_hcd *hcd, struct urb *urb, in fotg210_urb_enqueue() argument
5310 switch (usb_pipetype(urb->pipe)) { in fotg210_urb_enqueue()
5315 if (urb->transfer_buffer_length > (16 * 1024)) in fotg210_urb_enqueue()
5320 if (!qh_urb_transaction(fotg210, urb, &qtd_list, mem_flags)) in fotg210_urb_enqueue()
5322 return submit_async(fotg210, urb, &qtd_list, mem_flags); in fotg210_urb_enqueue()
5325 if (!qh_urb_transaction(fotg210, urb, &qtd_list, mem_flags)) in fotg210_urb_enqueue()
5327 return intr_submit(fotg210, urb, &qtd_list, mem_flags); in fotg210_urb_enqueue()
5330 return itd_submit(fotg210, urb, mem_flags); in fotg210_urb_enqueue()
5338 static int fotg210_urb_dequeue(struct usb_hcd *hcd, struct urb *urb, int status) in fotg210_urb_dequeue() argument
5346 rc = usb_hcd_check_unlink_urb(hcd, urb, status); in fotg210_urb_dequeue()
5350 switch (usb_pipetype(urb->pipe)) { in fotg210_urb_dequeue()
5354 qh = (struct fotg210_qh *) urb->hcpriv; in fotg210_urb_dequeue()
5374 qh = (struct fotg210_qh *) urb->hcpriv; in fotg210_urb_dequeue()