Lines Matching refs:urb

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