Lines Matching refs:urb

872 static void qtd_copy_status(struct oxu_hcd *oxu, struct urb *urb,  in qtd_copy_status()  argument
877 urb->actual_length += length - QTD_LENGTH(token); in qtd_copy_status()
880 if (unlikely(urb->status != -EINPROGRESS)) in qtd_copy_status()
885 urb->status = -EREMOTEIO; in qtd_copy_status()
891 urb->status = -EOVERFLOW; in qtd_copy_status()
894 urb->status = -EPROTO; in qtd_copy_status()
896 urb->status = (QTD_PID(token) == 1) /* IN ? */ in qtd_copy_status()
902 urb->status = -EPIPE; in qtd_copy_status()
905 urb->dev->devpath, in qtd_copy_status()
906 usb_pipeendpoint(urb->pipe), in qtd_copy_status()
907 usb_pipein(urb->pipe) ? "in" : "out"); in qtd_copy_status()
908 urb->status = -EPROTO; in qtd_copy_status()
912 urb->status = -EPIPE; in qtd_copy_status()
914 urb->status = -EPROTO; in qtd_copy_status()
917 usb_pipedevice(urb->pipe), in qtd_copy_status()
918 usb_pipeendpoint(urb->pipe), in qtd_copy_status()
919 usb_pipein(urb->pipe) ? "in" : "out", in qtd_copy_status()
920 token, urb->status); in qtd_copy_status()
924 static void ehci_urb_done(struct oxu_hcd *oxu, struct urb *urb) in ehci_urb_done() argument
928 if (likely(urb->hcpriv != NULL)) { in ehci_urb_done()
929 struct ehci_qh *qh = (struct ehci_qh *) urb->hcpriv; in ehci_urb_done()
940 urb->hcpriv = NULL; in ehci_urb_done()
941 switch (urb->status) { in ehci_urb_done()
943 urb->status = 0; in ehci_urb_done()
947 if (!(urb->transfer_flags & URB_SHORT_NOT_OK)) in ehci_urb_done()
948 urb->status = 0; in ehci_urb_done()
957 __func__, urb->dev->devpath, urb, in ehci_urb_done()
958 usb_pipeendpoint(urb->pipe), in ehci_urb_done()
959 usb_pipein(urb->pipe) ? "in" : "out", in ehci_urb_done()
960 urb->status, in ehci_urb_done()
961 urb->actual_length, urb->transfer_buffer_length); in ehci_urb_done()
966 usb_hcd_giveback_urb(oxu_to_hcd(oxu), urb, urb->status); in ehci_urb_done()
1012 struct urb *urb; in qh_completions() local
1016 urb = qtd->urb; in qh_completions()
1020 if (likely(last->urb != urb)) { in qh_completions()
1021 if (last->urb->complete == NULL) { in qh_completions()
1022 murb = (struct oxu_murb *) last->urb; in qh_completions()
1023 last->urb = murb->main; in qh_completions()
1025 ehci_urb_done(oxu, last->urb); in qh_completions()
1030 ehci_urb_done(oxu, last->urb); in qh_completions()
1070 urb->status = -ESHUTDOWN; in qh_completions()
1076 if (likely(urb->status == -EINPROGRESS)) in qh_completions()
1104 qtd_copy_status(oxu, urb->complete ? in qh_completions()
1105 urb : ((struct oxu_murb *) urb)->main, in qh_completions()
1107 if ((usb_pipein(qtd->urb->pipe)) && in qh_completions()
1110 do_status = (urb->status == -EREMOTEIO) in qh_completions()
1111 && usb_pipecontrol(urb->pipe); in qh_completions()
1124 if (last->urb->complete == NULL) { in qh_completions()
1125 murb = (struct oxu_murb *) last->urb; in qh_completions()
1126 last->urb = murb->main; in qh_completions()
1128 ehci_urb_done(oxu, last->urb); in qh_completions()
1133 ehci_urb_done(oxu, last->urb); in qh_completions()
1178 struct urb *urb, struct list_head *qtd_list) in qtd_list_free() argument
1194 struct urb *urb, in qh_urb_transaction() argument
1213 qtd->urb = urb; in qh_urb_transaction()
1219 len = urb->transfer_buffer_length; in qh_urb_transaction()
1220 is_input = usb_pipein(urb->pipe); in qh_urb_transaction()
1221 if (!urb->transfer_buffer && urb->transfer_buffer_length && is_input) in qh_urb_transaction()
1222 urb->transfer_buffer = phys_to_virt(urb->transfer_dma); in qh_urb_transaction()
1224 if (usb_pipecontrol(urb->pipe)) { in qh_urb_transaction()
1232 memcpy(qtd->buffer, qtd->urb->setup_packet, in qh_urb_transaction()
1241 qtd->urb = urb; in qh_urb_transaction()
1259 transfer_buf = urb->transfer_buffer; in qh_urb_transaction()
1262 memcpy(qtd->buffer, qtd->urb->transfer_buffer, len); in qh_urb_transaction()
1268 maxpacket = max_packet(usb_maxpacket(urb->dev, urb->pipe, !is_input)); in qh_urb_transaction()
1302 qtd->urb = urb; in qh_urb_transaction()
1310 if (likely((urb->transfer_flags & URB_SHORT_NOT_OK) == 0 in qh_urb_transaction()
1311 || usb_pipecontrol(urb->pipe))) in qh_urb_transaction()
1318 if (likely(urb->transfer_buffer_length != 0)) { in qh_urb_transaction()
1321 if (usb_pipecontrol(urb->pipe)) { in qh_urb_transaction()
1325 } else if (usb_pipebulk(urb->pipe) in qh_urb_transaction()
1326 && (urb->transfer_flags & URB_ZERO_PACKET) in qh_urb_transaction()
1327 && !(urb->transfer_buffer_length % maxpacket)) { in qh_urb_transaction()
1335 qtd->urb = urb; in qh_urb_transaction()
1349 qtd_list_free(oxu, urb, head); in qh_urb_transaction()
1361 struct urb *urb, gfp_t flags) in qh_make() argument
1374 info1 |= usb_pipeendpoint(urb->pipe) << 8; in qh_make()
1375 info1 |= usb_pipedevice(urb->pipe) << 0; in qh_make()
1377 is_input = usb_pipein(urb->pipe); in qh_make()
1378 type = usb_pipetype(urb->pipe); in qh_make()
1379 maxp = usb_maxpacket(urb->dev, urb->pipe, !is_input); in qh_make()
1395 if (urb->dev->speed == USB_SPEED_HIGH) { in qh_make()
1399 qh->period = urb->interval >> 3; in qh_make()
1400 if (qh->period == 0 && urb->interval != 1) { in qh_make()
1406 urb->interval); in qh_make()
1410 struct usb_tt *tt = urb->dev->tt; in qh_make()
1414 qh->gap_uf = 1 + usb_calc_bus_time(urb->dev->speed, in qh_make()
1428 usb_calc_bus_time(urb->dev->speed, in qh_make()
1430 qh->period = urb->interval; in qh_make()
1435 qh->dev = urb->dev; in qh_make()
1438 switch (urb->dev->speed) { in qh_make()
1454 info2 |= urb->dev->ttport << 23; in qh_make()
1477 oxu_dbg(oxu, "bogus dev %p speed %d\n", urb->dev, urb->dev->speed); in qh_make()
1489 usb_settoggle(urb->dev, usb_pipeendpoint(urb->pipe), !is_input, 1); in qh_make()
1543 struct urb *urb, struct list_head *qtd_list, in qh_append_tds() argument
1551 qh = qh_make(oxu, urb, GFP_ATOMIC); in qh_append_tds()
1567 if (usb_pipedevice(urb->pipe) == 0) in qh_append_tds()
1611 urb->hcpriv = qh_get(qh); in qh_append_tds()
1617 static int submit_async(struct oxu_hcd *oxu, struct urb *urb, in submit_async() argument
1627 epnum = urb->ep->desc.bEndpointAddress; in submit_async()
1631 __func__, urb->dev->devpath, urb, in submit_async()
1633 urb->transfer_buffer_length, in submit_async()
1634 qtd, urb->ep->hcpriv); in submit_async()
1643 qh = qh_append_tds(oxu, urb, qtd_list, epnum, &urb->ep->hcpriv); in submit_async()
1657 qtd_list_free(oxu, urb, qtd_list); in submit_async()
2193 static int intr_submit(struct oxu_hcd *oxu, struct urb *urb, in intr_submit() argument
2203 epnum = urb->ep->desc.bEndpointAddress; in intr_submit()
2214 qh = qh_append_tds(oxu, urb, &empty, epnum, &urb->ep->hcpriv); in intr_submit()
2226 qh = qh_append_tds(oxu, urb, qtd_list, epnum, &urb->ep->hcpriv); in intr_submit()
2235 qtd_list_free(oxu, urb, qtd_list); in intr_submit()
2240 static inline int itd_submit(struct oxu_hcd *oxu, struct urb *urb, in itd_submit() argument
2247 static inline int sitd_submit(struct oxu_hcd *oxu, struct urb *urb, in sitd_submit() argument
2820 static int __oxu_urb_enqueue(struct usb_hcd *hcd, struct urb *urb, in __oxu_urb_enqueue() argument
2828 switch (usb_pipetype(urb->pipe)) { in __oxu_urb_enqueue()
2832 if (!qh_urb_transaction(oxu, urb, &qtd_list, mem_flags)) in __oxu_urb_enqueue()
2834 return submit_async(oxu, urb, &qtd_list, mem_flags); in __oxu_urb_enqueue()
2837 if (!qh_urb_transaction(oxu, urb, &qtd_list, mem_flags)) in __oxu_urb_enqueue()
2839 return intr_submit(oxu, urb, &qtd_list, mem_flags); in __oxu_urb_enqueue()
2842 if (urb->dev->speed == USB_SPEED_HIGH) in __oxu_urb_enqueue()
2843 return itd_submit(oxu, urb, mem_flags); in __oxu_urb_enqueue()
2845 return sitd_submit(oxu, urb, mem_flags); in __oxu_urb_enqueue()
2852 static int oxu_urb_enqueue(struct usb_hcd *hcd, struct urb *urb, in oxu_urb_enqueue() argument
2859 struct urb *murb; in oxu_urb_enqueue()
2863 if (!usb_pipebulk(urb->pipe)) in oxu_urb_enqueue()
2864 return __oxu_urb_enqueue(hcd, urb, mem_flags); in oxu_urb_enqueue()
2867 transfer_buffer = urb->transfer_buffer; in oxu_urb_enqueue()
2868 transfer_buffer_length = urb->transfer_buffer_length; in oxu_urb_enqueue()
2870 num = urb->transfer_buffer_length / 4096; in oxu_urb_enqueue()
2871 rem = urb->transfer_buffer_length % 4096; in oxu_urb_enqueue()
2877 return __oxu_urb_enqueue(hcd, urb, mem_flags); in oxu_urb_enqueue()
2885 murb = (struct urb *) oxu_murb_alloc(oxu); in oxu_urb_enqueue()
2891 memcpy(murb, urb, sizeof(struct urb)); in oxu_urb_enqueue()
2899 ((struct oxu_murb *) murb)->main = urb; in oxu_urb_enqueue()
2916 murb = (struct urb *) oxu_murb_alloc(oxu); in oxu_urb_enqueue()
2922 memcpy(murb, urb, sizeof(struct urb)); in oxu_urb_enqueue()
2930 ((struct oxu_murb *) murb)->main = urb; in oxu_urb_enqueue()
2945 static int oxu_urb_dequeue(struct usb_hcd *hcd, struct urb *urb, int status) in oxu_urb_dequeue() argument
2952 switch (usb_pipetype(urb->pipe)) { in oxu_urb_dequeue()
2956 qh = (struct ehci_qh *) urb->hcpriv; in oxu_urb_dequeue()
2963 qh = (struct ehci_qh *) urb->hcpriv; in oxu_urb_dequeue()