Lines Matching full:urbs
79 /* dlfb keeps a list of urbs for efficient bulk transfers */
405 * rendering can be done directly to output buffers (e.g. USB URBs).
1798 /* When non-active we'll update virtual framebuffer, but no new urbs */ in dlfb_usb_disconnect()
1801 /* this function will wait for all in-flight urbs to complete */ in dlfb_usb_disconnect()
1844 urb->transfer_buffer_length = dlfb->urbs.size; /* reset to actual */ in dlfb_urb_completion()
1846 spin_lock_irqsave(&dlfb->urbs.lock, flags); in dlfb_urb_completion()
1847 list_add_tail(&unode->entry, &dlfb->urbs.list); in dlfb_urb_completion()
1848 dlfb->urbs.available++; in dlfb_urb_completion()
1849 spin_unlock_irqrestore(&dlfb->urbs.lock, flags); in dlfb_urb_completion()
1851 up(&dlfb->urbs.limit_sem); in dlfb_urb_completion()
1856 int count = dlfb->urbs.count; in dlfb_free_urb_list()
1863 down(&dlfb->urbs.limit_sem); in dlfb_free_urb_list()
1865 spin_lock_irq(&dlfb->urbs.lock); in dlfb_free_urb_list()
1867 node = dlfb->urbs.list.next; /* have reserved one with sem */ in dlfb_free_urb_list()
1870 spin_unlock_irq(&dlfb->urbs.lock); in dlfb_free_urb_list()
1876 usb_free_coherent(urb->dev, dlfb->urbs.size, in dlfb_free_urb_list()
1882 dlfb->urbs.count = 0; in dlfb_free_urb_list()
1892 spin_lock_init(&dlfb->urbs.lock); in dlfb_alloc_urb_list()
1895 dlfb->urbs.size = size; in dlfb_alloc_urb_list()
1896 INIT_LIST_HEAD(&dlfb->urbs.list); in dlfb_alloc_urb_list()
1898 sema_init(&dlfb->urbs.limit_sem, 0); in dlfb_alloc_urb_list()
1899 dlfb->urbs.count = 0; in dlfb_alloc_urb_list()
1900 dlfb->urbs.available = 0; in dlfb_alloc_urb_list()
1902 while (dlfb->urbs.count * size < wanted_size) { in dlfb_alloc_urb_list()
1933 list_add_tail(&unode->entry, &dlfb->urbs.list); in dlfb_alloc_urb_list()
1935 up(&dlfb->urbs.limit_sem); in dlfb_alloc_urb_list()
1936 dlfb->urbs.count++; in dlfb_alloc_urb_list()
1937 dlfb->urbs.available++; in dlfb_alloc_urb_list()
1940 return dlfb->urbs.count; in dlfb_alloc_urb_list()
1950 ret = down_timeout(&dlfb->urbs.limit_sem, GET_URB_TIMEOUT); in dlfb_get_urb()
1955 ret, dlfb->urbs.available); in dlfb_get_urb()
1959 spin_lock_irq(&dlfb->urbs.lock); in dlfb_get_urb()
1961 BUG_ON(list_empty(&dlfb->urbs.list)); /* reserved one with limit_sem */ in dlfb_get_urb()
1962 entry = dlfb->urbs.list.next; in dlfb_get_urb()
1964 dlfb->urbs.available--; in dlfb_get_urb()
1966 spin_unlock_irq(&dlfb->urbs.lock); in dlfb_get_urb()
1976 BUG_ON(len > dlfb->urbs.size); in dlfb_submit_urb()