Lines Matching full:urbs
96 struct urb_list urbs; member
132 /* ufx keeps a list of urbs for efficient bulk transfers */
1142 up(&unode->dev->urbs.limit_sem); in ufx_release_urb_work()
1763 /* When non-active we'll update virtual framebuffer, but no new urbs */ in ufx_usb_disconnect()
1772 /* this function will wait for all in-flight urbs to complete */ in ufx_usb_disconnect()
1773 if (dev->urbs.count > 0) in ufx_usb_disconnect()
1809 urb->transfer_buffer_length = dev->urbs.size; /* reset to actual */ in ufx_urb_completion()
1811 spin_lock_irqsave(&dev->urbs.lock, flags); in ufx_urb_completion()
1812 list_add_tail(&unode->entry, &dev->urbs.list); in ufx_urb_completion()
1813 dev->urbs.available++; in ufx_urb_completion()
1814 spin_unlock_irqrestore(&dev->urbs.lock, flags); in ufx_urb_completion()
1821 up(&dev->urbs.limit_sem); in ufx_urb_completion()
1826 int count = dev->urbs.count; in ufx_free_urb_list()
1833 pr_debug("Waiting for completes and freeing all render urbs\n"); in ufx_free_urb_list()
1838 ret = down_interruptible(&dev->urbs.limit_sem); in ufx_free_urb_list()
1842 spin_lock_irqsave(&dev->urbs.lock, flags); in ufx_free_urb_list()
1844 node = dev->urbs.list.next; /* have reserved one with sem */ in ufx_free_urb_list()
1847 spin_unlock_irqrestore(&dev->urbs.lock, flags); in ufx_free_urb_list()
1853 usb_free_coherent(urb->dev, dev->urbs.size, in ufx_free_urb_list()
1867 spin_lock_init(&dev->urbs.lock); in ufx_alloc_urb_list()
1869 dev->urbs.size = size; in ufx_alloc_urb_list()
1870 INIT_LIST_HEAD(&dev->urbs.list); in ufx_alloc_urb_list()
1901 list_add_tail(&unode->entry, &dev->urbs.list); in ufx_alloc_urb_list()
1906 sema_init(&dev->urbs.limit_sem, i); in ufx_alloc_urb_list()
1907 dev->urbs.count = i; in ufx_alloc_urb_list()
1908 dev->urbs.available = i; in ufx_alloc_urb_list()
1910 pr_debug("allocated %d %d byte urbs\n", i, (int) size); in ufx_alloc_urb_list()
1924 ret = down_timeout(&dev->urbs.limit_sem, GET_URB_TIMEOUT); in ufx_get_urb()
1928 ret, dev->urbs.available); in ufx_get_urb()
1932 spin_lock_irqsave(&dev->urbs.lock, flags); in ufx_get_urb()
1934 BUG_ON(list_empty(&dev->urbs.list)); /* reserved one with limit_sem */ in ufx_get_urb()
1935 entry = dev->urbs.list.next; in ufx_get_urb()
1937 dev->urbs.available--; in ufx_get_urb()
1939 spin_unlock_irqrestore(&dev->urbs.lock, flags); in ufx_get_urb()
1952 BUG_ON(len > dev->urbs.size); in ufx_submit_urb()