Lines Matching refs:uurb
1283 static int proc_do_submiturb(struct usb_dev_state *ps, struct usbdevfs_urb *uurb, in proc_do_submiturb() argument
1305 if (uurb->type == USBDEVFS_URB_TYPE_ISO) in proc_do_submiturb()
1308 if (uurb->flags & ~mask) in proc_do_submiturb()
1311 if ((unsigned int)uurb->buffer_length >= USBFS_XFER_MAX) in proc_do_submiturb()
1313 if (uurb->buffer_length > 0 && !uurb->buffer) in proc_do_submiturb()
1315 if (!(uurb->type == USBDEVFS_URB_TYPE_CONTROL && in proc_do_submiturb()
1316 (uurb->endpoint & ~USB_ENDPOINT_DIR_MASK) == 0)) { in proc_do_submiturb()
1317 ifnum = findintfep(ps->dev, uurb->endpoint); in proc_do_submiturb()
1324 ep = ep_to_host_endpoint(ps->dev, uurb->endpoint); in proc_do_submiturb()
1327 is_in = (uurb->endpoint & USB_ENDPOINT_DIR_MASK) != 0; in proc_do_submiturb()
1330 switch (uurb->type) { in proc_do_submiturb()
1335 if (uurb->buffer_length < 8) in proc_do_submiturb()
1340 if (copy_from_user(dr, uurb->buffer, 8)) { in proc_do_submiturb()
1344 if (uurb->buffer_length < (le16_to_cpup(&dr->wLength) + 8)) { in proc_do_submiturb()
1352 uurb->buffer_length = le16_to_cpup(&dr->wLength); in proc_do_submiturb()
1353 uurb->buffer += 8; in proc_do_submiturb()
1354 if ((dr->bRequestType & USB_DIR_IN) && uurb->buffer_length) { in proc_do_submiturb()
1356 uurb->endpoint |= USB_DIR_IN; in proc_do_submiturb()
1359 uurb->endpoint &= ~USB_DIR_IN; in proc_do_submiturb()
1384 uurb->type = USBDEVFS_URB_TYPE_INTERRUPT; in proc_do_submiturb()
1387 num_sgs = DIV_ROUND_UP(uurb->buffer_length, USB_SG_SIZE); in proc_do_submiturb()
1391 stream_id = uurb->stream_id; in proc_do_submiturb()
1406 if (uurb->number_of_packets < 1 || in proc_do_submiturb()
1407 uurb->number_of_packets > 128) in proc_do_submiturb()
1411 number_of_packets = uurb->number_of_packets; in proc_do_submiturb()
1435 uurb->buffer_length = totlen; in proc_do_submiturb()
1442 if (uurb->buffer_length > 0 && in proc_do_submiturb()
1444 uurb->buffer, uurb->buffer_length)) { in proc_do_submiturb()
1454 u += sizeof(struct async) + sizeof(struct urb) + uurb->buffer_length + in proc_do_submiturb()
1471 totlen = uurb->buffer_length; in proc_do_submiturb()
1482 if (copy_from_user(buf, uurb->buffer, u)) { in proc_do_submiturb()
1486 uurb->buffer += u; in proc_do_submiturb()
1490 } else if (uurb->buffer_length > 0) { in proc_do_submiturb()
1491 as->urb->transfer_buffer = kmalloc(uurb->buffer_length, in proc_do_submiturb()
1500 uurb->buffer, in proc_do_submiturb()
1501 uurb->buffer_length)) { in proc_do_submiturb()
1505 } else if (uurb->type == USBDEVFS_URB_TYPE_ISO) { in proc_do_submiturb()
1513 uurb->buffer_length); in proc_do_submiturb()
1517 as->urb->pipe = (uurb->type << 30) | in proc_do_submiturb()
1518 __create_pipe(ps->dev, uurb->endpoint & 0xf) | in proc_do_submiturb()
1519 (uurb->endpoint & USB_DIR_IN); in proc_do_submiturb()
1526 if (uurb->flags & USBDEVFS_URB_ISO_ASAP) in proc_do_submiturb()
1528 if (allow_short && uurb->flags & USBDEVFS_URB_SHORT_NOT_OK) in proc_do_submiturb()
1530 if (uurb->flags & USBDEVFS_URB_NO_FSBR) in proc_do_submiturb()
1532 if (allow_zero && uurb->flags & USBDEVFS_URB_ZERO_PACKET) in proc_do_submiturb()
1534 if (uurb->flags & USBDEVFS_URB_NO_INTERRUPT) in proc_do_submiturb()
1538 if (!allow_short && uurb->flags & USBDEVFS_URB_SHORT_NOT_OK) in proc_do_submiturb()
1540 if (!allow_zero && uurb->flags & USBDEVFS_URB_ZERO_PACKET) in proc_do_submiturb()
1543 as->urb->transfer_buffer_length = uurb->buffer_length; in proc_do_submiturb()
1546 as->urb->start_frame = uurb->start_frame; in proc_do_submiturb()
1551 if (uurb->type == USBDEVFS_URB_TYPE_ISO || in proc_do_submiturb()
1571 if (is_in && uurb->buffer_length > 0) in proc_do_submiturb()
1572 as->userbuffer = uurb->buffer; in proc_do_submiturb()
1575 as->signr = uurb->signr; in proc_do_submiturb()
1602 if (uurb->flags & USBDEVFS_URB_BULK_CONTINUATION) in proc_do_submiturb()
1639 struct usbdevfs_urb uurb; in proc_submiturb() local
1641 if (copy_from_user(&uurb, arg, sizeof(uurb))) in proc_submiturb()
1644 return proc_do_submiturb(ps, &uurb, in proc_submiturb()
1816 struct usbdevfs_urb32 __user *uurb) in get_urb32() argument
1819 if (!access_ok(VERIFY_READ, uurb, sizeof(*uurb)) || in get_urb32()
1820 __get_user(kurb->type, &uurb->type) || in get_urb32()
1821 __get_user(kurb->endpoint, &uurb->endpoint) || in get_urb32()
1822 __get_user(kurb->status, &uurb->status) || in get_urb32()
1823 __get_user(kurb->flags, &uurb->flags) || in get_urb32()
1824 __get_user(kurb->buffer_length, &uurb->buffer_length) || in get_urb32()
1825 __get_user(kurb->actual_length, &uurb->actual_length) || in get_urb32()
1826 __get_user(kurb->start_frame, &uurb->start_frame) || in get_urb32()
1827 __get_user(kurb->number_of_packets, &uurb->number_of_packets) || in get_urb32()
1828 __get_user(kurb->error_count, &uurb->error_count) || in get_urb32()
1829 __get_user(kurb->signr, &uurb->signr)) in get_urb32()
1832 if (__get_user(uptr, &uurb->buffer)) in get_urb32()
1835 if (__get_user(uptr, &uurb->usercontext)) in get_urb32()
1844 struct usbdevfs_urb uurb; in proc_submiturb_compat() local
1846 if (get_urb32(&uurb, (struct usbdevfs_urb32 __user *)arg)) in proc_submiturb_compat()
1849 return proc_do_submiturb(ps, &uurb, in proc_submiturb_compat()