Lines Matching refs:udl

32 	struct udl_device *udl = dev->dev_private;  in udl_parse_vendor_descriptor()  local
75 udl->sku_pixel_limit = max_area; in udl_parse_vendor_descriptor()
99 static int udl_select_std_channel(struct udl_device *udl) in udl_select_std_channel() argument
112 ret = usb_control_msg(udl->udev, in udl_select_std_channel()
113 usb_sndctrlpipe(udl->udev, 0), in udl_select_std_channel()
133 struct udl_device *udl = unode->dev; in udl_urb_completion() local
143 atomic_set(&udl->lost_pixels, 1); in udl_urb_completion()
147 urb->transfer_buffer_length = udl->urbs.size; /* reset to actual */ in udl_urb_completion()
149 spin_lock_irqsave(&udl->urbs.lock, flags); in udl_urb_completion()
150 list_add_tail(&unode->entry, &udl->urbs.list); in udl_urb_completion()
151 udl->urbs.available++; in udl_urb_completion()
152 spin_unlock_irqrestore(&udl->urbs.lock, flags); in udl_urb_completion()
163 up(&udl->urbs.limit_sem); in udl_urb_completion()
168 struct udl_device *udl = dev->dev_private; in udl_free_urb_list() local
169 int count = udl->urbs.count; in udl_free_urb_list()
178 down(&udl->urbs.limit_sem); in udl_free_urb_list()
180 spin_lock_irq(&udl->urbs.lock); in udl_free_urb_list()
182 node = udl->urbs.list.next; /* have reserved one with sem */ in udl_free_urb_list()
185 spin_unlock_irq(&udl->urbs.lock); in udl_free_urb_list()
191 usb_free_coherent(urb->dev, udl->urbs.size, in udl_free_urb_list()
196 udl->urbs.count = 0; in udl_free_urb_list()
201 struct udl_device *udl = dev->dev_private; in udl_alloc_urb_list() local
207 spin_lock_init(&udl->urbs.lock); in udl_alloc_urb_list()
210 udl->urbs.size = size; in udl_alloc_urb_list()
211 INIT_LIST_HEAD(&udl->urbs.list); in udl_alloc_urb_list()
213 sema_init(&udl->urbs.limit_sem, 0); in udl_alloc_urb_list()
214 udl->urbs.count = 0; in udl_alloc_urb_list()
215 udl->urbs.available = 0; in udl_alloc_urb_list()
217 while (udl->urbs.count * size < wanted_size) { in udl_alloc_urb_list()
221 unode->dev = udl; in udl_alloc_urb_list()
233 buf = usb_alloc_coherent(udl->udev, size, GFP_KERNEL, in udl_alloc_urb_list()
247 usb_fill_bulk_urb(urb, udl->udev, usb_sndbulkpipe(udl->udev, 1), in udl_alloc_urb_list()
251 list_add_tail(&unode->entry, &udl->urbs.list); in udl_alloc_urb_list()
253 up(&udl->urbs.limit_sem); in udl_alloc_urb_list()
254 udl->urbs.count++; in udl_alloc_urb_list()
255 udl->urbs.available++; in udl_alloc_urb_list()
258 DRM_DEBUG("allocated %d %d byte urbs\n", udl->urbs.count, (int) size); in udl_alloc_urb_list()
260 return udl->urbs.count; in udl_alloc_urb_list()
265 struct udl_device *udl = dev->dev_private; in udl_get_urb() local
272 ret = down_timeout(&udl->urbs.limit_sem, GET_URB_TIMEOUT); in udl_get_urb()
274 atomic_set(&udl->lost_pixels, 1); in udl_get_urb()
276 ret, udl->urbs.available); in udl_get_urb()
280 spin_lock_irq(&udl->urbs.lock); in udl_get_urb()
282 BUG_ON(list_empty(&udl->urbs.list)); /* reserved one with limit_sem */ in udl_get_urb()
283 entry = udl->urbs.list.next; in udl_get_urb()
285 udl->urbs.available--; in udl_get_urb()
287 spin_unlock_irq(&udl->urbs.lock); in udl_get_urb()
298 struct udl_device *udl = dev->dev_private; in udl_submit_urb() local
301 BUG_ON(len > udl->urbs.size); in udl_submit_urb()
307 atomic_set(&udl->lost_pixels, 1); in udl_submit_urb()
316 struct udl_device *udl; in udl_driver_load() local
320 udl = kzalloc(sizeof(struct udl_device), GFP_KERNEL); in udl_driver_load()
321 if (!udl) in udl_driver_load()
324 udl->udev = udev; in udl_driver_load()
325 udl->ddev = dev; in udl_driver_load()
326 dev->dev_private = udl; in udl_driver_load()
328 mutex_init(&udl->gem_lock); in udl_driver_load()
330 if (!udl_parse_vendor_descriptor(dev, udl->udev)) { in udl_driver_load()
336 if (udl_select_std_channel(udl)) in udl_driver_load()
363 if (udl->urbs.count) in udl_driver_load()
365 kfree(udl); in udl_driver_load()
378 struct udl_device *udl = dev->dev_private; in udl_driver_unload() local
382 if (udl->urbs.count) in udl_driver_unload()
387 kfree(udl); in udl_driver_unload()