Lines Matching refs:urbs

138 	urb->transfer_buffer_length = udl->urbs.size; /* reset to actual */
140 spin_lock_irqsave(&udl->urbs.lock, flags);
141 list_add_tail(&unode->entry, &udl->urbs.list);
142 udl->urbs.available++;
143 spin_unlock_irqrestore(&udl->urbs.lock, flags);
145 wake_up(&udl->urbs.sleep);
154 DRM_DEBUG("Waiting for completes and freeing all render urbs\n");
157 while (udl->urbs.count) {
158 spin_lock_irq(&udl->urbs.lock);
160 udl->urbs.count--;
161 spin_unlock_irq(&udl->urbs.lock);
166 usb_free_coherent(urb->dev, udl->urbs.size,
172 wake_up_all(&udl->urbs.sleep);
184 spin_lock_init(&udl->urbs.lock);
185 INIT_LIST_HEAD(&udl->urbs.list);
186 init_waitqueue_head(&udl->urbs.sleep);
187 udl->urbs.count = 0;
188 udl->urbs.available = 0;
191 udl->urbs.size = size;
193 while (udl->urbs.count * size < wanted_size) {
224 list_add_tail(&unode->entry, &udl->urbs.list);
226 udl->urbs.count++;
227 udl->urbs.available++;
230 DRM_DEBUG("allocated %d %d byte urbs\n", udl->urbs.count, (int) size);
232 return udl->urbs.count;
239 assert_spin_locked(&udl->urbs.lock);
242 if (!wait_event_lock_irq_timeout(udl->urbs.sleep,
243 !udl->urbs.count ||
244 !list_empty(&udl->urbs.list),
245 udl->urbs.lock, timeout)) {
247 udl->urbs.available);
251 if (!udl->urbs.count)
254 unode = list_first_entry(&udl->urbs.list, struct urb_node, entry);
256 udl->urbs.available--;
267 spin_lock_irq(&udl->urbs.lock);
269 spin_unlock_irq(&udl->urbs.lock);
278 if (WARN_ON(len > udl->urbs.size)) {
297 spin_lock_irq(&udl->urbs.lock);
299 if (!wait_event_lock_irq_timeout(udl->urbs.sleep,
300 udl->urbs.available == udl->urbs.count,
301 udl->urbs.lock,
304 spin_unlock_irq(&udl->urbs.lock);
344 if (udl->urbs.count)