• Home
  • Raw
  • Download

Lines Matching refs:urb

326 get_urb_to_r8a66597_dev(struct r8a66597 *r8a66597, struct urb *urb)  in get_urb_to_r8a66597_dev()  argument
328 if (usb_pipedevice(urb->pipe) == 0) in get_urb_to_r8a66597_dev()
331 return dev_get_drvdata(&urb->dev->dev); in get_urb_to_r8a66597_dev()
335 struct urb *urb, u8 addr) in make_r8a66597_device() argument
338 int usb_address = urb->setup_packet[2]; /* urb->pipe is address 0 */ in make_r8a66597_device()
344 dev_set_drvdata(&urb->dev->dev, dev); in make_r8a66597_device()
345 dev->udev = urb->dev; in make_r8a66597_device()
354 get_port_number(r8a66597, urb->dev->devpath, in make_r8a66597_device()
356 if (!is_child_device(urb->dev->devpath)) in make_r8a66597_device()
360 get_r8a66597_usb_speed(urb->dev->speed), in make_r8a66597_device()
361 get_parent_r8a66597_address(r8a66597, urb->dev), in make_r8a66597_device()
368 static u8 alloc_usb_address(struct r8a66597 *r8a66597, struct urb *urb) in alloc_usb_address() argument
373 if (is_hub_limit(urb->dev->devpath)) { in alloc_usb_address()
374 dev_err(&urb->dev->dev, "External hub limit reached.\n"); in alloc_usb_address()
378 dev = get_urb_to_r8a66597_dev(r8a66597, urb); in alloc_usb_address()
386 dev_dbg(&urb->dev->dev, "alloc_address: r8a66597_addr=%d\n", addr); in alloc_usb_address()
389 if (make_r8a66597_device(r8a66597, urb, addr) < 0) in alloc_usb_address()
395 dev_err(&urb->dev->dev, in alloc_usb_address()
531 static u16 r8a66597_get_pipenum(struct urb *urb, struct usb_host_endpoint *hep) in r8a66597_get_pipenum() argument
535 if (usb_pipeendpoint(urb->pipe) == 0) in r8a66597_get_pipenum()
541 static u16 get_urb_to_r8a66597_addr(struct r8a66597 *r8a66597, struct urb *urb) in get_urb_to_r8a66597_addr() argument
543 struct r8a66597_device *dev = get_urb_to_r8a66597_dev(r8a66597, urb); in get_urb_to_r8a66597_addr()
545 return (usb_pipedevice(urb->pipe) == 0) ? 0 : dev->address; in get_urb_to_r8a66597_addr()
560 struct urb *urb, int set) in pipe_toggle_set() argument
562 struct r8a66597_device *dev = get_urb_to_r8a66597_dev(r8a66597, urb); in pipe_toggle_set()
563 unsigned char endpoint = usb_pipeendpoint(urb->pipe); in pipe_toggle_set()
564 unsigned short *toggle = get_toggle_pointer(dev, urb->pipe); in pipe_toggle_set()
578 struct urb *urb) in pipe_toggle_save() argument
581 pipe_toggle_set(r8a66597, pipe, urb, 1); in pipe_toggle_save()
583 pipe_toggle_set(r8a66597, pipe, urb, 0); in pipe_toggle_save()
589 struct urb *urb) in pipe_toggle_restore() argument
591 struct r8a66597_device *dev = get_urb_to_r8a66597_dev(r8a66597, urb); in pipe_toggle_restore()
592 unsigned char endpoint = usb_pipeendpoint(urb->pipe); in pipe_toggle_restore()
593 unsigned short *toggle = get_toggle_pointer(dev, urb->pipe); in pipe_toggle_restore()
631 struct urb *urb = td->urb; in pipe_setting() local
638 if (!usb_gettoggle(urb->dev, usb_pipeendpoint(urb->pipe), in pipe_setting()
639 usb_pipeout(urb->pipe)) && in pipe_setting()
640 !usb_pipecontrol(urb->pipe)) { in pipe_setting()
642 pipe_toggle_set(r8a66597, td->pipe, urb, 0); in pipe_setting()
644 usb_settoggle(urb->dev, usb_pipeendpoint(urb->pipe), in pipe_setting()
645 usb_pipeout(urb->pipe), 1); in pipe_setting()
647 pipe_toggle_restore(r8a66597, td->pipe, urb); in pipe_setting()
756 struct urb *urb) in enable_r8a66597_pipe_dma() argument
773 "DMA FIFO\n", usb_pipedevice(urb->pipe), in enable_r8a66597_pipe_dma()
795 static void enable_r8a66597_pipe(struct r8a66597 *r8a66597, struct urb *urb, in enable_r8a66597_pipe() argument
799 struct r8a66597_device *dev = get_urb_to_r8a66597_dev(r8a66597, urb); in enable_r8a66597_pipe()
809 enable_r8a66597_pipe_dma(r8a66597, dev, pipe, urb); in enable_r8a66597_pipe()
812 static void r8a66597_urb_done(struct r8a66597 *r8a66597, struct urb *urb, in r8a66597_urb_done() argument
817 if (usb_pipein(urb->pipe) && usb_pipetype(urb->pipe) != PIPE_CONTROL) { in r8a66597_urb_done()
820 for (ptr = urb->transfer_buffer; in r8a66597_urb_done()
821 ptr < urb->transfer_buffer + urb->transfer_buffer_length; in r8a66597_urb_done()
826 usb_hcd_unlink_urb_from_ep(r8a66597_to_hcd(r8a66597), urb); in r8a66597_urb_done()
828 usb_hcd_giveback_urb(r8a66597_to_hcd(r8a66597), urb, status); in r8a66597_urb_done()
836 struct urb *urb; in force_dequeue() local
846 urb = td->urb; in force_dequeue()
850 if (urb) in force_dequeue()
851 r8a66597_urb_done(r8a66597, urb, -ENODEV); in force_dequeue()
887 static u16 get_interval(struct urb *urb, __u8 interval) in get_interval() argument
892 if (urb->dev->speed == USB_SPEED_HIGH) { in get_interval()
913 static unsigned long get_timer_interval(struct urb *urb, __u8 interval) in get_timer_interval() argument
918 if (usb_pipeisoc(urb->pipe)) in get_timer_interval()
921 if (get_r8a66597_usb_speed(urb->dev->speed) == HSMODE) { in get_timer_interval()
933 static void init_pipe_info(struct r8a66597 *r8a66597, struct urb *urb, in init_pipe_info() argument
940 info.address = get_urb_to_r8a66597_addr(r8a66597, urb); in init_pipe_info()
950 info.interval = get_interval(urb, ep->bInterval); in init_pipe_info()
951 info.timer_interval = get_timer_interval(urb, ep->bInterval); in init_pipe_info()
958 enable_r8a66597_pipe(r8a66597, urb, hep, &info); in init_pipe_info()
961 static void init_pipe_config(struct r8a66597 *r8a66597, struct urb *urb) in init_pipe_config() argument
965 dev = get_urb_to_r8a66597_dev(r8a66597, urb); in init_pipe_config()
969 static void pipe_irq_enable(struct r8a66597 *r8a66597, struct urb *urb, in pipe_irq_enable() argument
972 if (pipenum == 0 && usb_pipeout(urb->pipe)) in pipe_irq_enable()
977 if (!usb_pipeisoc(urb->pipe)) in pipe_irq_enable()
1068 __le16 *p = (__le16 *)td->urb->setup_packet; in prepare_setup_packet()
1086 struct urb *urb = td->urb; in prepare_packet_read() local
1088 if (usb_pipecontrol(urb->pipe)) { in prepare_packet_read()
1092 if (urb->actual_length == 0) { in prepare_packet_read()
1098 pipe_irq_enable(r8a66597, urb, td->pipenum); in prepare_packet_read()
1100 if (urb->actual_length == 0) { in prepare_packet_read()
1111 (urb->transfer_buffer_length, in prepare_packet_read()
1119 pipe_irq_enable(r8a66597, urb, td->pipenum); in prepare_packet_read()
1129 struct urb *urb = td->urb; in prepare_packet_write() local
1131 if (usb_pipecontrol(urb->pipe)) { in prepare_packet_write()
1136 if (urb->actual_length == 0) { in prepare_packet_write()
1141 if (urb->actual_length == 0) in prepare_packet_write()
1151 pipe_irq_enable(r8a66597, urb, td->pipenum); in prepare_packet_write()
1161 struct urb *urb = td->urb; in prepare_status_packet() local
1166 if (urb->setup_packet[0] & USB_ENDPOINT_DIR_MASK) { in prepare_status_packet()
1200 if (is_set_address(td->urb->setup_packet)) { in start_transfer()
1202 td->urb->setup_packet[2] = alloc_usb_address(r8a66597, in start_transfer()
1203 td->urb); in start_transfer()
1204 if (td->urb->setup_packet[2] == 0) in start_transfer()
1226 static int check_transfer_finish(struct r8a66597_td *td, struct urb *urb) in check_transfer_finish() argument
1228 if (usb_pipeisoc(urb->pipe)) { in check_transfer_finish()
1229 if (urb->number_of_packets == td->iso_cnt) in check_transfer_finish()
1234 if ((urb->transfer_buffer_length <= urb->actual_length) || in check_transfer_finish()
1249 !usb_pipecontrol(td->urb->pipe) && usb_pipein(td->urb->pipe)) { in set_td_timer()
1251 switch (usb_pipetype(td->urb->pipe)) { in set_td_timer()
1268 u16 pipenum, struct urb *urb, int status) in finish_request() argument
1277 if (td->set_address && (status != 0 || urb->unlinked)) in finish_request()
1278 r8a66597->address_map &= ~(1 << urb->setup_packet[2]); in finish_request()
1280 pipe_toggle_save(r8a66597, td->pipe, urb); in finish_request()
1288 if (likely(urb)) { in finish_request()
1289 if (usb_pipeisoc(urb->pipe)) in finish_request()
1290 urb->start_frame = r8a66597_get_frame(hcd); in finish_request()
1292 r8a66597_urb_done(r8a66597, urb, status); in finish_request()
1311 struct urb *urb; in packet_read() local
1317 urb = td->urb; in packet_read()
1325 finish_request(r8a66597, td, pipenum, td->urb, -EPIPE); in packet_read()
1331 if (usb_pipeisoc(urb->pipe)) { in packet_read()
1332 buf = (u16 *)(urb->transfer_buffer + in packet_read()
1333 urb->iso_frame_desc[td->iso_cnt].offset); in packet_read()
1334 urb_len = urb->iso_frame_desc[td->iso_cnt].length; in packet_read()
1336 buf = (void *)urb->transfer_buffer + urb->actual_length; in packet_read()
1337 urb_len = urb->transfer_buffer_length - urb->actual_length; in packet_read()
1349 urb->actual_length += size; in packet_read()
1355 if (usb_pipeisoc(urb->pipe)) { in packet_read()
1356 urb->iso_frame_desc[td->iso_cnt].actual_length = size; in packet_read()
1357 urb->iso_frame_desc[td->iso_cnt].status = status; in packet_read()
1363 if (finish || check_transfer_finish(td, urb)) { in packet_read()
1370 if (urb->transfer_buffer) { in packet_read()
1379 finish_request(r8a66597, td, pipenum, urb, status); in packet_read()
1388 struct urb *urb; in packet_write() local
1392 urb = td->urb; in packet_write()
1400 finish_request(r8a66597, td, pipenum, urb, -EPIPE); in packet_write()
1406 if (usb_pipeisoc(urb->pipe)) { in packet_write()
1407 buf = (u16 *)(urb->transfer_buffer + in packet_write()
1408 urb->iso_frame_desc[td->iso_cnt].offset); in packet_write()
1410 (int)urb->iso_frame_desc[td->iso_cnt].length); in packet_write()
1412 buf = (u16 *)(urb->transfer_buffer + urb->actual_length); in packet_write()
1414 urb->transfer_buffer_length - urb->actual_length); in packet_write()
1420 if (urb->transfer_buffer) { in packet_write()
1422 if (!usb_pipebulk(urb->pipe) || td->maxpacket != size) in packet_write()
1427 urb->actual_length += size; in packet_write()
1428 if (usb_pipeisoc(urb->pipe)) { in packet_write()
1429 urb->iso_frame_desc[td->iso_cnt].actual_length = size; in packet_write()
1430 urb->iso_frame_desc[td->iso_cnt].status = 0; in packet_write()
1435 if (check_transfer_finish(td, urb)) { in packet_write()
1438 if (!usb_pipeisoc(urb->pipe)) in packet_write()
1441 pipe_irq_enable(r8a66597, urb, pipenum); in packet_write()
1448 struct urb *urb; in check_next_phase() local
1453 urb = td->urb; in check_next_phase()
1458 if (check_transfer_finish(td, urb)) in check_next_phase()
1462 if (urb->transfer_buffer_length == urb->actual_length) in check_next_phase()
1464 else if (usb_pipeout(urb->pipe)) in check_next_phase()
1474 if (finish || status != 0 || urb->unlinked) in check_next_phase()
1475 finish_request(r8a66597, td, 0, urb, status); in check_next_phase()
1560 finish_request(r8a66597, td, pipenum, td->urb, in irq_pipe_empty()
1595 finish_request(r8a66597, td, pipenum, td->urb, status); in irq_pipe_nrdy()
1767 if (td->urb->actual_length) { in r8a66597_td_timer()
1813 static int check_pipe_config(struct r8a66597 *r8a66597, struct urb *urb) in check_pipe_config() argument
1815 struct r8a66597_device *dev = get_urb_to_r8a66597_dev(r8a66597, urb); in check_pipe_config()
1818 (urb->dev->state == USB_STATE_CONFIGURED)) in check_pipe_config()
1839 static void set_address_zero(struct r8a66597 *r8a66597, struct urb *urb) in set_address_zero() argument
1841 unsigned int usb_address = usb_pipedevice(urb->pipe); in set_address_zero()
1845 get_port_number(r8a66597, urb->dev->devpath, in set_address_zero()
1848 get_r8a66597_usb_speed(urb->dev->speed), in set_address_zero()
1849 get_parent_r8a66597_address(r8a66597, urb->dev), in set_address_zero()
1855 struct urb *urb, in r8a66597_make_td() argument
1865 pipenum = r8a66597_get_pipenum(urb, hep); in r8a66597_make_td()
1868 td->urb = urb; in r8a66597_make_td()
1869 td->address = get_urb_to_r8a66597_addr(r8a66597, urb); in r8a66597_make_td()
1870 td->maxpacket = usb_maxpacket(urb->dev, urb->pipe, in r8a66597_make_td()
1871 !usb_pipein(urb->pipe)); in r8a66597_make_td()
1872 if (usb_pipecontrol(urb->pipe)) in r8a66597_make_td()
1874 else if (usb_pipein(urb->pipe)) in r8a66597_make_td()
1884 struct urb *urb, in r8a66597_urb_enqueue() argument
1887 struct usb_host_endpoint *hep = urb->ep; in r8a66597_urb_enqueue()
1894 if (!get_urb_to_r8a66597_dev(r8a66597, urb)) { in r8a66597_urb_enqueue()
1899 ret = usb_hcd_link_urb_to_ep(hcd, urb); in r8a66597_urb_enqueue()
1911 if (usb_pipeendpoint(urb->pipe)) in r8a66597_urb_enqueue()
1912 init_pipe_info(r8a66597, urb, hep, &hep->desc); in r8a66597_urb_enqueue()
1915 if (unlikely(check_pipe_config(r8a66597, urb))) in r8a66597_urb_enqueue()
1916 init_pipe_config(r8a66597, urb); in r8a66597_urb_enqueue()
1918 set_address_zero(r8a66597, urb); in r8a66597_urb_enqueue()
1919 td = r8a66597_make_td(r8a66597, urb, hep); in r8a66597_urb_enqueue()
1927 urb->hcpriv = td; in r8a66597_urb_enqueue()
1947 usb_hcd_unlink_urb_from_ep(hcd, urb); in r8a66597_urb_enqueue()
1953 static int r8a66597_urb_dequeue(struct usb_hcd *hcd, struct urb *urb, in r8a66597_urb_dequeue() argument
1962 rc = usb_hcd_check_unlink_urb(hcd, urb, status); in r8a66597_urb_dequeue()
1966 if (urb->hcpriv) { in r8a66597_urb_dequeue()
1967 td = urb->hcpriv; in r8a66597_urb_dequeue()
1971 finish_request(r8a66597, td, td->pipenum, urb, status); in r8a66597_urb_dequeue()
1986 struct urb *urb = NULL; in r8a66597_endpoint_disable() local
2007 urb = td->urb; in r8a66597_endpoint_disable()
2008 finish_request(r8a66597, td, pipenum, urb, -ESHUTDOWN); in r8a66597_endpoint_disable()