Lines Matching refs:urb

168 		itd->urb);  in dbg_itd()
433 td->urb); in qh_lines()
2160 struct urb *urb, u32 token) in fusbh200_clear_tt_buffer() argument
2169 if (urb->dev->tt && !usb_pipeint(urb->pipe) && !qh->clearing_tt) { in fusbh200_clear_tt_buffer()
2170 struct usb_device *tt = urb->dev->tt->hub; in fusbh200_clear_tt_buffer()
2174 urb->dev->ttport, urb->dev->devnum, in fusbh200_clear_tt_buffer()
2175 usb_pipeendpoint(urb->pipe), token); in fusbh200_clear_tt_buffer()
2177 if (urb->dev->tt->hub != in fusbh200_clear_tt_buffer()
2179 if (usb_hub_clear_tt_buffer(urb) == 0) in fusbh200_clear_tt_buffer()
2187 struct urb *urb, in qtd_copy_status() argument
2196 urb->actual_length += length - QTD_LENGTH (token); in qtd_copy_status()
2199 if (unlikely(urb->unlinked)) in qtd_copy_status()
2229 urb->dev->devpath, in qtd_copy_status()
2230 usb_pipeendpoint(urb->pipe), in qtd_copy_status()
2231 usb_pipein(urb->pipe) ? "in" : "out"); in qtd_copy_status()
2239 usb_pipedevice (urb->pipe), in qtd_copy_status()
2240 usb_pipeendpoint (urb->pipe), in qtd_copy_status()
2241 usb_pipein (urb->pipe) ? "in" : "out", in qtd_copy_status()
2249 fusbh200_urb_done(struct fusbh200_hcd *fusbh200, struct urb *urb, int status) in fusbh200_urb_done() argument
2253 if (likely (urb->hcpriv != NULL)) { in fusbh200_urb_done()
2254 struct fusbh200_qh *qh = (struct fusbh200_qh *) urb->hcpriv; in fusbh200_urb_done()
2264 if (unlikely(urb->unlinked)) { in fusbh200_urb_done()
2276 __func__, urb->dev->devpath, urb, in fusbh200_urb_done()
2277 usb_pipeendpoint (urb->pipe), in fusbh200_urb_done()
2278 usb_pipein (urb->pipe) ? "in" : "out", in fusbh200_urb_done()
2280 urb->actual_length, urb->transfer_buffer_length); in fusbh200_urb_done()
2284 usb_hcd_unlink_urb_from_ep(fusbh200_to_hcd(fusbh200), urb); in fusbh200_urb_done()
2286 usb_hcd_giveback_urb(fusbh200_to_hcd(fusbh200), urb, status); in fusbh200_urb_done()
2337 struct urb *urb; in qh_completions() local
2341 urb = qtd->urb; in qh_completions()
2345 if (likely (last->urb != urb)) { in qh_completions()
2346 fusbh200_urb_done(fusbh200, last->urb, last_status); in qh_completions()
2370 urb, in qh_completions()
2371 usb_endpoint_num(&urb->ep->desc), in qh_completions()
2372 usb_endpoint_dir_in(&urb->ep->desc) ? "in" : "out", in qh_completions()
2373 urb->transfer_buffer_length, in qh_completions()
2388 !urb->unlinked) { in qh_completions()
2441 else if (last_status == -EINPROGRESS && !urb->unlinked) in qh_completions()
2454 fusbh200_clear_tt_buffer(fusbh200, qh, urb, token); in qh_completions()
2466 last_status = qtd_copy_status(fusbh200, urb, in qh_completions()
2488 fusbh200_clear_tt_buffer(fusbh200, qh, urb, in qh_completions()
2512 fusbh200_urb_done(fusbh200, last->urb, last_status); in qh_completions()
2580 struct urb *urb, in qtd_list_free() argument
2600 struct urb *urb, in qh_urb_transaction() argument
2619 qtd->urb = urb; in qh_urb_transaction()
2625 len = urb->transfer_buffer_length; in qh_urb_transaction()
2626 is_input = usb_pipein (urb->pipe); in qh_urb_transaction()
2627 if (usb_pipecontrol (urb->pipe)) { in qh_urb_transaction()
2629 qtd_fill(fusbh200, qtd, urb->setup_dma, in qh_urb_transaction()
2639 qtd->urb = urb; in qh_urb_transaction()
2651 i = urb->num_mapped_sgs; in qh_urb_transaction()
2653 sg = urb->sg; in qh_urb_transaction()
2662 buf = urb->transfer_dma; in qh_urb_transaction()
2670 maxpacket = max_packet(usb_maxpacket(urb->dev, urb->pipe, !is_input)); in qh_urb_transaction()
2710 qtd->urb = urb; in qh_urb_transaction()
2720 if (likely ((urb->transfer_flags & URB_SHORT_NOT_OK) == 0 in qh_urb_transaction()
2721 || usb_pipecontrol (urb->pipe))) in qh_urb_transaction()
2729 if (likely (urb->transfer_buffer_length != 0)) { in qh_urb_transaction()
2732 if (usb_pipecontrol (urb->pipe)) { in qh_urb_transaction()
2736 } else if (usb_pipeout(urb->pipe) in qh_urb_transaction()
2737 && (urb->transfer_flags & URB_ZERO_PACKET) in qh_urb_transaction()
2738 && !(urb->transfer_buffer_length % maxpacket)) { in qh_urb_transaction()
2746 qtd->urb = urb; in qh_urb_transaction()
2756 if (likely (!(urb->transfer_flags & URB_NO_INTERRUPT))) in qh_urb_transaction()
2761 qtd_list_free (fusbh200, urb, head); in qh_urb_transaction()
2785 struct urb *urb, in qh_make() argument
2792 struct usb_tt *tt = urb->dev->tt; in qh_make()
2801 info1 |= usb_pipeendpoint (urb->pipe) << 8; in qh_make()
2802 info1 |= usb_pipedevice (urb->pipe) << 0; in qh_make()
2804 is_input = usb_pipein (urb->pipe); in qh_make()
2805 type = usb_pipetype (urb->pipe); in qh_make()
2806 maxp = usb_maxpacket (urb->dev, urb->pipe, !is_input); in qh_make()
2830 if (urb->dev->speed == USB_SPEED_HIGH) { in qh_make()
2834 qh->period = urb->interval >> 3; in qh_make()
2835 if (qh->period == 0 && urb->interval != 1) { in qh_make()
2840 urb->interval = 1; in qh_make()
2843 urb->interval = qh->period << 3; in qh_make()
2849 qh->gap_uf = 1 + usb_calc_bus_time (urb->dev->speed, in qh_make()
2863 usb_calc_bus_time (urb->dev->speed, in qh_make()
2865 qh->period = urb->interval; in qh_make()
2868 urb->interval = qh->period; in qh_make()
2874 qh->dev = urb->dev; in qh_make()
2877 switch (urb->dev->speed) { in qh_make()
2898 info2 |= (urb->dev->ttport-1) << 23; in qh_make()
2900 info2 |= urb->dev->ttport << 23; in qh_make()
2935 fusbh200_dbg(fusbh200, "bogus dev %p speed %d\n", urb->dev, in qh_make()
2936 urb->dev->speed); in qh_make()
2950 usb_settoggle (urb->dev, usb_pipeendpoint (urb->pipe), !is_input, 1); in qh_make()
3024 struct urb *urb, in qh_append_tds() argument
3036 qh = qh_make (fusbh200, urb, GFP_ATOMIC); in qh_append_tds()
3052 if (usb_pipedevice (urb->pipe) == 0) in qh_append_tds()
3095 urb->hcpriv = qh; in qh_append_tds()
3106 struct urb *urb, in submit_async() argument
3115 epnum = urb->ep->desc.bEndpointAddress; in submit_async()
3123 __func__, urb->dev->devpath, urb, in submit_async()
3125 urb->transfer_buffer_length, in submit_async()
3126 qtd, urb->ep->hcpriv); in submit_async()
3135 rc = usb_hcd_link_urb_to_ep(fusbh200_to_hcd(fusbh200), urb); in submit_async()
3139 qh = qh_append_tds(fusbh200, urb, qtd_list, epnum, &urb->ep->hcpriv); in submit_async()
3141 usb_hcd_unlink_urb_from_ep(fusbh200_to_hcd(fusbh200), urb); in submit_async()
3154 qtd_list_free (fusbh200, urb, qtd_list); in submit_async()
3931 struct urb *urb, in intr_submit() argument
3942 epnum = urb->ep->desc.bEndpointAddress; in intr_submit()
3950 status = usb_hcd_link_urb_to_ep(fusbh200_to_hcd(fusbh200), urb); in intr_submit()
3956 qh = qh_append_tds(fusbh200, urb, &empty, epnum, &urb->ep->hcpriv); in intr_submit()
3967 qh = qh_append_tds(fusbh200, urb, qtd_list, epnum, &urb->ep->hcpriv); in intr_submit()
3975 usb_hcd_unlink_urb_from_ep(fusbh200_to_hcd(fusbh200), urb); in intr_submit()
3979 qtd_list_free (fusbh200, urb, qtd_list); in intr_submit()
4091 iso_stream_find (struct fusbh200_hcd *fusbh200, struct urb *urb) in iso_stream_find() argument
4098 epnum = usb_pipeendpoint (urb->pipe); in iso_stream_find()
4099 if (usb_pipein(urb->pipe)) in iso_stream_find()
4100 ep = urb->dev->ep_in[epnum]; in iso_stream_find()
4102 ep = urb->dev->ep_out[epnum]; in iso_stream_find()
4112 iso_stream_init(fusbh200, stream, urb->dev, urb->pipe, in iso_stream_find()
4113 urb->interval); in iso_stream_find()
4119 urb->dev->devpath, epnum, in iso_stream_find()
4120 usb_pipein(urb->pipe) ? "in" : "out"); in iso_stream_find()
4151 struct urb *urb in itd_sched_init() argument
4155 dma_addr_t dma = urb->transfer_dma; in itd_sched_init()
4158 iso_sched->span = urb->number_of_packets * stream->interval; in itd_sched_init()
4163 for (i = 0; i < urb->number_of_packets; i++) { in itd_sched_init()
4169 length = urb->iso_frame_desc [i].length; in itd_sched_init()
4170 buf = dma + urb->iso_frame_desc [i].offset; in itd_sched_init()
4174 if (unlikely (((i + 1) == urb->number_of_packets)) in itd_sched_init()
4175 && !(urb->transfer_flags & URB_NO_INTERRUPT)) in itd_sched_init()
4205 struct urb *urb, in itd_urb_transaction() argument
4216 sched = iso_sched_alloc (urb->number_of_packets, mem_flags); in itd_urb_transaction()
4220 itd_sched_init(fusbh200, sched, stream, urb); in itd_urb_transaction()
4222 if (urb->interval < 8) in itd_urb_transaction()
4225 num_itds = urb->number_of_packets; in itd_urb_transaction()
4262 urb->hcpriv = sched; in itd_urb_transaction()
4263 urb->error_count = 0; in itd_urb_transaction()
4307 struct urb *urb, in iso_stream_schedule() argument
4314 struct fusbh200_iso_sched *sched = urb->hcpriv; in iso_stream_schedule()
4316 period = urb->interval; in iso_stream_schedule()
4320 fusbh200_dbg (fusbh200, "iso request %p too long\n", urb); in iso_stream_schedule()
4357 urb, start - now - period, period, in iso_stream_schedule()
4394 urb, now, now + mod); in iso_stream_schedule()
4404 urb, start - now, span - period, in iso_stream_schedule()
4413 urb->start_frame = stream->next_uframe; in iso_stream_schedule()
4415 urb->start_frame >>= 3; in iso_stream_schedule()
4424 urb->hcpriv = NULL; in iso_stream_schedule()
4509 struct urb *urb, in itd_link_urb() argument
4516 struct fusbh200_iso_sched *iso_sched = urb->hcpriv; in itd_link_urb()
4526 urb->dev->devpath, stream->bEndpointAddress & 0x0f, in itd_link_urb()
4528 urb->interval, in itd_link_urb()
4533 for (packet = 0, itd = NULL; packet < urb->number_of_packets; ) { in itd_link_urb()
4544 itd->urb = urb; in itd_link_urb()
4559 || packet == urb->number_of_packets) { in itd_link_urb()
4568 urb->hcpriv = NULL; in itd_link_urb()
4588 struct urb *urb = itd->urb; in itd_complete() local
4602 desc = &urb->iso_frame_desc [urb_index]; in itd_complete()
4609 urb->error_count++; in itd_complete()
4611 desc->status = usb_pipein (urb->pipe) in itd_complete()
4621 desc->actual_length = fusbh200_itdlen(urb, desc, t); in itd_complete()
4622 urb->actual_length += desc->actual_length; in itd_complete()
4626 desc->actual_length = fusbh200_itdlen(urb, desc, t); in itd_complete()
4627 urb->actual_length += desc->actual_length; in itd_complete()
4635 if (likely ((urb_index + 1) != urb->number_of_packets)) in itd_complete()
4644 dev = urb->dev; in itd_complete()
4645 fusbh200_urb_done(fusbh200, urb, 0); in itd_complete()
4647 urb = NULL; in itd_complete()
4662 itd->urb = NULL; in itd_complete()
4679 static int itd_submit (struct fusbh200_hcd *fusbh200, struct urb *urb, in itd_submit() argument
4687 stream = iso_stream_find (fusbh200, urb); in itd_submit()
4692 if (unlikely (urb->interval != stream->interval && in itd_submit()
4695 stream->interval, urb->interval); in itd_submit()
4702 __func__, urb->dev->devpath, urb, in itd_submit()
4703 usb_pipeendpoint (urb->pipe), in itd_submit()
4704 usb_pipein (urb->pipe) ? "in" : "out", in itd_submit()
4705 urb->transfer_buffer_length, in itd_submit()
4706 urb->number_of_packets, urb->interval, in itd_submit()
4711 status = itd_urb_transaction (stream, fusbh200, urb, mem_flags); in itd_submit()
4723 status = usb_hcd_link_urb_to_ep(fusbh200_to_hcd(fusbh200), urb); in itd_submit()
4726 status = iso_stream_schedule(fusbh200, urb, stream); in itd_submit()
4728 itd_link_urb (fusbh200, urb, fusbh200->periodic_size << 3, stream); in itd_submit()
4730 usb_hcd_unlink_urb_from_ep(fusbh200_to_hcd(fusbh200), urb); in itd_submit()
5412 struct urb *urb, in fusbh200_urb_enqueue() argument
5420 switch (usb_pipetype (urb->pipe)) { in fusbh200_urb_enqueue()
5425 if (urb->transfer_buffer_length > (16 * 1024)) in fusbh200_urb_enqueue()
5430 if (!qh_urb_transaction (fusbh200, urb, &qtd_list, mem_flags)) in fusbh200_urb_enqueue()
5432 return submit_async(fusbh200, urb, &qtd_list, mem_flags); in fusbh200_urb_enqueue()
5435 if (!qh_urb_transaction (fusbh200, urb, &qtd_list, mem_flags)) in fusbh200_urb_enqueue()
5437 return intr_submit(fusbh200, urb, &qtd_list, mem_flags); in fusbh200_urb_enqueue()
5440 return itd_submit (fusbh200, urb, mem_flags); in fusbh200_urb_enqueue()
5448 static int fusbh200_urb_dequeue(struct usb_hcd *hcd, struct urb *urb, int status) in fusbh200_urb_dequeue() argument
5456 rc = usb_hcd_check_unlink_urb(hcd, urb, status); in fusbh200_urb_dequeue()
5460 switch (usb_pipetype (urb->pipe)) { in fusbh200_urb_dequeue()
5464 qh = (struct fusbh200_qh *) urb->hcpriv; in fusbh200_urb_dequeue()
5484 qh = (struct fusbh200_qh *) urb->hcpriv; in fusbh200_urb_dequeue()