Lines Matching refs:urb

53 static void qset_fill_qh(struct whc *whc, struct whc_qset *qset, struct urb *urb)  in qset_fill_qh()  argument
55 struct usb_device *usb_dev = urb->dev; in qset_fill_qh()
61 is_out = usb_pipeout(urb->pipe); in qset_fill_qh()
63 qset->max_packet = le16_to_cpu(urb->ep->desc.wMaxPacketSize); in qset_fill_qh()
79 if (usb_pipecontrol(urb->pipe)) in qset_fill_qh()
91 QH_INFO1_EP(usb_pipeendpoint(urb->pipe)) in qset_fill_qh()
93 | usb_pipe_to_qh_type(urb->pipe) in qset_fill_qh()
158 struct whc_qset *get_qset(struct whc *whc, struct urb *urb, in get_qset() argument
163 qset = urb->ep->hcpriv; in get_qset()
169 qset->ep = urb->ep; in get_qset()
170 urb->ep->hcpriv = qset; in get_qset()
171 qset_fill_qh(whc, qset, urb); in get_qset()
199 || (qset->pause_after_urb && std->urb != qset->pause_after_urb)) in qset_add_qtds()
208 if (usb_pipecontrol(std->urb->pipe)) in qset_add_qtds()
209 memcpy(qtd->setup, std->urb->setup_packet, 8); in qset_add_qtds()
213 if (whc_std_last(std) && usb_pipeout(std->urb->pipe)) in qset_add_qtds()
227 } else if (usb_pipein(std->urb->pipe)) in qset_add_qtds()
228 qset->pause_after_urb = std->urb; in qset_add_qtds()
303 bool is_out = usb_pipeout(std->urb->pipe); in qset_free_std()
332 struct urb *urb) in qset_remove_qtds() argument
337 if (std->urb != urb) in qset_remove_qtds()
348 static void qset_free_stds(struct whc_qset *qset, struct urb *urb) in qset_free_stds() argument
353 if (std->urb == urb) in qset_free_stds()
413 qset_remove_urb(whc, qset, wurb->urb, wurb->status); in urb_dequeue_work()
418 struct urb *urb, gfp_t mem_flags) in qset_new_std() argument
426 std->urb = urb; in qset_new_std()
435 static int qset_add_urb_sg(struct whc *whc, struct whc_qset *qset, struct urb *urb, in qset_add_urb_sg() argument
448 remaining = urb->transfer_buffer_length; in qset_add_urb_sg()
450 for_each_sg(urb->sg, sg, urb->num_mapped_sgs, i) { in qset_add_urb_sg()
484 std = qset_new_std(whc, qset, urb, mem_flags); in qset_add_urb_sg()
555 struct urb *urb, gfp_t mem_flags) in qset_add_urb_sg_linearize() argument
557 bool is_out = usb_pipeout(urb->pipe); in qset_add_urb_sg_linearize()
569 remaining = urb->transfer_buffer_length; in qset_add_urb_sg_linearize()
571 for_each_sg(urb->sg, sg, urb->num_mapped_sgs, i) { in qset_add_urb_sg_linearize()
585 std = qset_new_std(whc, qset, urb, mem_flags); in qset_add_urb_sg_linearize()
639 int qset_add_urb(struct whc *whc, struct whc_qset *qset, struct urb *urb, in qset_add_urb() argument
643 int remaining = urb->transfer_buffer_length; in qset_add_urb()
644 u64 transfer_dma = urb->transfer_dma; in qset_add_urb()
651 urb->hcpriv = wurb; in qset_add_urb()
653 wurb->urb = urb; in qset_add_urb()
656 if (urb->num_sgs) { in qset_add_urb()
657 ret = qset_add_urb_sg(whc, qset, urb, mem_flags); in qset_add_urb()
659 qset_free_stds(qset, urb); in qset_add_urb()
660 ret = qset_add_urb_sg_linearize(whc, qset, urb, mem_flags); in qset_add_urb()
679 std = qset_new_std(whc, qset, urb, mem_flags); in qset_add_urb()
698 qset_free_stds(qset, urb); in qset_add_urb()
708 struct urb *urb, int status) in qset_remove_urb() argument
711 struct whc_urb *wurb = urb->hcpriv; in qset_remove_urb()
713 usb_hcd_unlink_urb_from_ep(&wusbhc->usb_hcd, urb); in qset_remove_urb()
716 wusbhc_giveback_urb(wusbhc, urb, status); in qset_remove_urb()
727 static int get_urb_status_from_qtd(struct urb *urb, u32 status) in get_urb_status_from_qtd() argument
731 return usb_pipein(urb->pipe) ? -ENOSR : -ECOMM; in get_urb_status_from_qtd()
738 if (usb_pipein(urb->pipe) in get_urb_status_from_qtd()
739 && (urb->transfer_flags & URB_SHORT_NOT_OK) in get_urb_status_from_qtd()
740 && urb->actual_length < urb->transfer_buffer_length) in get_urb_status_from_qtd()
757 struct urb *urb = std->urb; in process_inactive_qtd() local
763 urb->actual_length += std->len - QTD_STS_TO_LEN(status); in process_inactive_qtd()
765 if (usb_pipein(urb->pipe) && (status & QTD_STS_LAST_PKT)) in process_inactive_qtd()
778 qset_remove_qtds(whc, qset, urb); in process_inactive_qtd()
779 qset_remove_urb(whc, qset, urb, get_urb_status_from_qtd(urb, status)); in process_inactive_qtd()
809 struct urb *urb = std->urb; in process_halted_qtd() local
812 urb_status = get_urb_status_from_qtd(urb, le32_to_cpu(qtd->status)); in process_halted_qtd()
814 qset_remove_qtds(whc, qset, urb); in process_halted_qtd()
815 qset_remove_urb(whc, qset, urb, urb_status); in process_halted_qtd()