Lines Matching refs:urb

339 get_urb_to_r8a66597_dev(struct r8a66597 *r8a66597, struct urb *urb)  in get_urb_to_r8a66597_dev()  argument
341 if (usb_pipedevice(urb->pipe) == 0) in get_urb_to_r8a66597_dev()
344 return dev_get_drvdata(&urb->dev->dev); in get_urb_to_r8a66597_dev()
348 struct urb *urb, u8 addr) in make_r8a66597_device() argument
351 int usb_address = urb->setup_packet[2]; /* urb->pipe is address 0 */ in make_r8a66597_device()
357 dev_set_drvdata(&urb->dev->dev, dev); in make_r8a66597_device()
358 dev->udev = urb->dev; in make_r8a66597_device()
367 get_port_number(r8a66597, urb->dev->devpath, in make_r8a66597_device()
369 if (!is_child_device(urb->dev->devpath)) in make_r8a66597_device()
373 get_r8a66597_usb_speed(urb->dev->speed), in make_r8a66597_device()
374 get_parent_r8a66597_address(r8a66597, urb->dev), in make_r8a66597_device()
381 static u8 alloc_usb_address(struct r8a66597 *r8a66597, struct urb *urb) in alloc_usb_address() argument
386 if (is_hub_limit(urb->dev->devpath)) { in alloc_usb_address()
387 dev_err(&urb->dev->dev, "External hub limit reached.\n"); in alloc_usb_address()
391 dev = get_urb_to_r8a66597_dev(r8a66597, urb); in alloc_usb_address()
399 dev_dbg(&urb->dev->dev, "alloc_address: r8a66597_addr=%d\n", addr); in alloc_usb_address()
402 if (make_r8a66597_device(r8a66597, urb, addr) < 0) in alloc_usb_address()
408 dev_err(&urb->dev->dev, in alloc_usb_address()
546 static u16 r8a66597_get_pipenum(struct urb *urb, struct usb_host_endpoint *hep) in r8a66597_get_pipenum() argument
550 if (usb_pipeendpoint(urb->pipe) == 0) in r8a66597_get_pipenum()
556 static u16 get_urb_to_r8a66597_addr(struct r8a66597 *r8a66597, struct urb *urb) in get_urb_to_r8a66597_addr() argument
558 struct r8a66597_device *dev = get_urb_to_r8a66597_dev(r8a66597, urb); in get_urb_to_r8a66597_addr()
560 return (usb_pipedevice(urb->pipe) == 0) ? 0 : dev->address; in get_urb_to_r8a66597_addr()
575 struct urb *urb, int set) in pipe_toggle_set() argument
577 struct r8a66597_device *dev = get_urb_to_r8a66597_dev(r8a66597, urb); in pipe_toggle_set()
578 unsigned char endpoint = usb_pipeendpoint(urb->pipe); in pipe_toggle_set()
579 unsigned short *toggle = get_toggle_pointer(dev, urb->pipe); in pipe_toggle_set()
593 struct urb *urb) in pipe_toggle_save() argument
596 pipe_toggle_set(r8a66597, pipe, urb, 1); in pipe_toggle_save()
598 pipe_toggle_set(r8a66597, pipe, urb, 0); in pipe_toggle_save()
604 struct urb *urb) in pipe_toggle_restore() argument
606 struct r8a66597_device *dev = get_urb_to_r8a66597_dev(r8a66597, urb); in pipe_toggle_restore()
607 unsigned char endpoint = usb_pipeendpoint(urb->pipe); in pipe_toggle_restore()
608 unsigned short *toggle = get_toggle_pointer(dev, urb->pipe); in pipe_toggle_restore()
646 struct urb *urb = td->urb; in pipe_setting() local
653 if (!usb_gettoggle(urb->dev, usb_pipeendpoint(urb->pipe), in pipe_setting()
654 usb_pipeout(urb->pipe)) && in pipe_setting()
655 !usb_pipecontrol(urb->pipe)) { in pipe_setting()
657 pipe_toggle_set(r8a66597, td->pipe, urb, 0); in pipe_setting()
659 usb_settoggle(urb->dev, usb_pipeendpoint(urb->pipe), in pipe_setting()
660 usb_pipeout(urb->pipe), 1); in pipe_setting()
662 pipe_toggle_restore(r8a66597, td->pipe, urb); in pipe_setting()
771 struct urb *urb) in enable_r8a66597_pipe_dma() argument
788 "DMA FIFO\n", usb_pipedevice(urb->pipe), in enable_r8a66597_pipe_dma()
810 static void enable_r8a66597_pipe(struct r8a66597 *r8a66597, struct urb *urb, in enable_r8a66597_pipe() argument
814 struct r8a66597_device *dev = get_urb_to_r8a66597_dev(r8a66597, urb); in enable_r8a66597_pipe()
824 enable_r8a66597_pipe_dma(r8a66597, dev, pipe, urb); in enable_r8a66597_pipe()
827 static void r8a66597_urb_done(struct r8a66597 *r8a66597, struct urb *urb, in r8a66597_urb_done() argument
832 if (usb_pipein(urb->pipe) && usb_pipetype(urb->pipe) != PIPE_CONTROL) { in r8a66597_urb_done()
835 for (ptr = urb->transfer_buffer; in r8a66597_urb_done()
836 ptr < urb->transfer_buffer + urb->transfer_buffer_length; in r8a66597_urb_done()
841 usb_hcd_unlink_urb_from_ep(r8a66597_to_hcd(r8a66597), urb); in r8a66597_urb_done()
843 usb_hcd_giveback_urb(r8a66597_to_hcd(r8a66597), urb, status); in r8a66597_urb_done()
851 struct urb *urb; in force_dequeue() local
861 urb = td->urb; in force_dequeue()
865 if (urb) in force_dequeue()
866 r8a66597_urb_done(r8a66597, urb, -ENODEV); in force_dequeue()
902 static u16 get_interval(struct urb *urb, __u8 interval) in get_interval() argument
907 if (urb->dev->speed == USB_SPEED_HIGH) { in get_interval()
928 static unsigned long get_timer_interval(struct urb *urb, __u8 interval) in get_timer_interval() argument
933 if (usb_pipeisoc(urb->pipe)) in get_timer_interval()
936 if (get_r8a66597_usb_speed(urb->dev->speed) == HSMODE) { in get_timer_interval()
948 static void init_pipe_info(struct r8a66597 *r8a66597, struct urb *urb, in init_pipe_info() argument
955 info.address = get_urb_to_r8a66597_addr(r8a66597, urb); in init_pipe_info()
965 info.interval = get_interval(urb, ep->bInterval); in init_pipe_info()
966 info.timer_interval = get_timer_interval(urb, ep->bInterval); in init_pipe_info()
973 enable_r8a66597_pipe(r8a66597, urb, hep, &info); in init_pipe_info()
976 static void init_pipe_config(struct r8a66597 *r8a66597, struct urb *urb) in init_pipe_config() argument
980 dev = get_urb_to_r8a66597_dev(r8a66597, urb); in init_pipe_config()
984 static void pipe_irq_enable(struct r8a66597 *r8a66597, struct urb *urb, in pipe_irq_enable() argument
987 if (pipenum == 0 && usb_pipeout(urb->pipe)) in pipe_irq_enable()
992 if (!usb_pipeisoc(urb->pipe)) in pipe_irq_enable()
1083 __le16 *p = (__le16 *)td->urb->setup_packet; in prepare_setup_packet()
1101 struct urb *urb = td->urb; in prepare_packet_read() local
1103 if (usb_pipecontrol(urb->pipe)) { in prepare_packet_read()
1107 if (urb->actual_length == 0) { in prepare_packet_read()
1113 pipe_irq_enable(r8a66597, urb, td->pipenum); in prepare_packet_read()
1115 if (urb->actual_length == 0) { in prepare_packet_read()
1126 (urb->transfer_buffer_length, in prepare_packet_read()
1134 pipe_irq_enable(r8a66597, urb, td->pipenum); in prepare_packet_read()
1144 struct urb *urb = td->urb; in prepare_packet_write() local
1146 if (usb_pipecontrol(urb->pipe)) { in prepare_packet_write()
1151 if (urb->actual_length == 0) { in prepare_packet_write()
1156 if (urb->actual_length == 0) in prepare_packet_write()
1166 pipe_irq_enable(r8a66597, urb, td->pipenum); in prepare_packet_write()
1176 struct urb *urb = td->urb; in prepare_status_packet() local
1181 if (urb->setup_packet[0] & USB_ENDPOINT_DIR_MASK) { in prepare_status_packet()
1215 if (is_set_address(td->urb->setup_packet)) { in start_transfer()
1217 td->urb->setup_packet[2] = alloc_usb_address(r8a66597, in start_transfer()
1218 td->urb); in start_transfer()
1219 if (td->urb->setup_packet[2] == 0) in start_transfer()
1241 static int check_transfer_finish(struct r8a66597_td *td, struct urb *urb) in check_transfer_finish() argument
1243 if (usb_pipeisoc(urb->pipe)) { in check_transfer_finish()
1244 if (urb->number_of_packets == td->iso_cnt) in check_transfer_finish()
1249 if ((urb->transfer_buffer_length <= urb->actual_length) || in check_transfer_finish()
1264 !usb_pipecontrol(td->urb->pipe) && usb_pipein(td->urb->pipe)) { in set_td_timer()
1266 switch (usb_pipetype(td->urb->pipe)) { in set_td_timer()
1283 u16 pipenum, struct urb *urb, int status) in finish_request() argument
1292 if (td->set_address && (status != 0 || urb->unlinked)) in finish_request()
1293 r8a66597->address_map &= ~(1 << urb->setup_packet[2]); in finish_request()
1295 pipe_toggle_save(r8a66597, td->pipe, urb); in finish_request()
1303 if (likely(urb)) { in finish_request()
1304 if (usb_pipeisoc(urb->pipe)) in finish_request()
1305 urb->start_frame = r8a66597_get_frame(hcd); in finish_request()
1307 r8a66597_urb_done(r8a66597, urb, status); in finish_request()
1326 struct urb *urb; in packet_read() local
1332 urb = td->urb; in packet_read()
1340 finish_request(r8a66597, td, pipenum, td->urb, -EPIPE); in packet_read()
1346 if (usb_pipeisoc(urb->pipe)) { in packet_read()
1347 buf = (u16 *)(urb->transfer_buffer + in packet_read()
1348 urb->iso_frame_desc[td->iso_cnt].offset); in packet_read()
1349 urb_len = urb->iso_frame_desc[td->iso_cnt].length; in packet_read()
1351 buf = (void *)urb->transfer_buffer + urb->actual_length; in packet_read()
1352 urb_len = urb->transfer_buffer_length - urb->actual_length; in packet_read()
1364 urb->actual_length += size; in packet_read()
1370 if (usb_pipeisoc(urb->pipe)) { in packet_read()
1371 urb->iso_frame_desc[td->iso_cnt].actual_length = size; in packet_read()
1372 urb->iso_frame_desc[td->iso_cnt].status = status; in packet_read()
1378 if (finish || check_transfer_finish(td, urb)) { in packet_read()
1385 if (urb->transfer_buffer) { in packet_read()
1394 finish_request(r8a66597, td, pipenum, urb, status); in packet_read()
1403 struct urb *urb; in packet_write() local
1407 urb = td->urb; in packet_write()
1415 finish_request(r8a66597, td, pipenum, urb, -EPIPE); in packet_write()
1421 if (usb_pipeisoc(urb->pipe)) { in packet_write()
1422 buf = (u16 *)(urb->transfer_buffer + in packet_write()
1423 urb->iso_frame_desc[td->iso_cnt].offset); in packet_write()
1425 (int)urb->iso_frame_desc[td->iso_cnt].length); in packet_write()
1427 buf = (u16 *)(urb->transfer_buffer + urb->actual_length); in packet_write()
1429 urb->transfer_buffer_length - urb->actual_length); in packet_write()
1435 if (urb->transfer_buffer) { in packet_write()
1437 if (!usb_pipebulk(urb->pipe) || td->maxpacket != size) in packet_write()
1442 urb->actual_length += size; in packet_write()
1443 if (usb_pipeisoc(urb->pipe)) { in packet_write()
1444 urb->iso_frame_desc[td->iso_cnt].actual_length = size; in packet_write()
1445 urb->iso_frame_desc[td->iso_cnt].status = 0; in packet_write()
1450 if (check_transfer_finish(td, urb)) { in packet_write()
1453 if (!usb_pipeisoc(urb->pipe)) in packet_write()
1456 pipe_irq_enable(r8a66597, urb, pipenum); in packet_write()
1463 struct urb *urb; in check_next_phase() local
1468 urb = td->urb; in check_next_phase()
1473 if (check_transfer_finish(td, urb)) in check_next_phase()
1477 if (urb->transfer_buffer_length == urb->actual_length) in check_next_phase()
1479 else if (usb_pipeout(urb->pipe)) in check_next_phase()
1489 if (finish || status != 0 || urb->unlinked) in check_next_phase()
1490 finish_request(r8a66597, td, 0, urb, status); in check_next_phase()
1575 finish_request(r8a66597, td, pipenum, td->urb, in irq_pipe_empty()
1610 finish_request(r8a66597, td, pipenum, td->urb, status); in irq_pipe_nrdy()
1780 if (td->urb->actual_length) { in r8a66597_td_timer()
1824 static int check_pipe_config(struct r8a66597 *r8a66597, struct urb *urb) in check_pipe_config() argument
1826 struct r8a66597_device *dev = get_urb_to_r8a66597_dev(r8a66597, urb); in check_pipe_config()
1829 (urb->dev->state == USB_STATE_CONFIGURED)) in check_pipe_config()
1850 static void set_address_zero(struct r8a66597 *r8a66597, struct urb *urb) in set_address_zero() argument
1852 unsigned int usb_address = usb_pipedevice(urb->pipe); in set_address_zero()
1856 get_port_number(r8a66597, urb->dev->devpath, in set_address_zero()
1859 get_r8a66597_usb_speed(urb->dev->speed), in set_address_zero()
1860 get_parent_r8a66597_address(r8a66597, urb->dev), in set_address_zero()
1866 struct urb *urb, in r8a66597_make_td() argument
1876 pipenum = r8a66597_get_pipenum(urb, hep); in r8a66597_make_td()
1879 td->urb = urb; in r8a66597_make_td()
1880 td->address = get_urb_to_r8a66597_addr(r8a66597, urb); in r8a66597_make_td()
1881 td->maxpacket = usb_maxpacket(urb->dev, urb->pipe, in r8a66597_make_td()
1882 !usb_pipein(urb->pipe)); in r8a66597_make_td()
1883 if (usb_pipecontrol(urb->pipe)) in r8a66597_make_td()
1885 else if (usb_pipein(urb->pipe)) in r8a66597_make_td()
1895 struct urb *urb, in r8a66597_urb_enqueue() argument
1898 struct usb_host_endpoint *hep = urb->ep; in r8a66597_urb_enqueue()
1905 if (!get_urb_to_r8a66597_dev(r8a66597, urb)) { in r8a66597_urb_enqueue()
1910 ret = usb_hcd_link_urb_to_ep(hcd, urb); in r8a66597_urb_enqueue()
1922 if (usb_pipeendpoint(urb->pipe)) in r8a66597_urb_enqueue()
1923 init_pipe_info(r8a66597, urb, hep, &hep->desc); in r8a66597_urb_enqueue()
1926 if (unlikely(check_pipe_config(r8a66597, urb))) in r8a66597_urb_enqueue()
1927 init_pipe_config(r8a66597, urb); in r8a66597_urb_enqueue()
1929 set_address_zero(r8a66597, urb); in r8a66597_urb_enqueue()
1930 td = r8a66597_make_td(r8a66597, urb, hep); in r8a66597_urb_enqueue()
1938 urb->hcpriv = td; in r8a66597_urb_enqueue()
1958 usb_hcd_unlink_urb_from_ep(hcd, urb); in r8a66597_urb_enqueue()
1964 static int r8a66597_urb_dequeue(struct usb_hcd *hcd, struct urb *urb, in r8a66597_urb_dequeue() argument
1973 rc = usb_hcd_check_unlink_urb(hcd, urb, status); in r8a66597_urb_dequeue()
1977 if (urb->hcpriv) { in r8a66597_urb_dequeue()
1978 td = urb->hcpriv; in r8a66597_urb_dequeue()
1982 finish_request(r8a66597, td, td->pipenum, urb, status); in r8a66597_urb_dequeue()
1995 struct urb *urb = NULL; in r8a66597_endpoint_disable() local
2015 urb = td->urb; in r8a66597_endpoint_disable()
2016 finish_request(r8a66597, td, pipenum, urb, -ESHUTDOWN); in r8a66597_endpoint_disable()