Lines Matching refs:dev

23 static bool uvc_input_has_button(struct uvc_device *dev)  in uvc_input_has_button()  argument
33 list_for_each_entry(stream, &dev->streams, list) { in uvc_input_has_button()
42 static int uvc_input_init(struct uvc_device *dev) in uvc_input_init() argument
47 if (!uvc_input_has_button(dev)) in uvc_input_init()
54 usb_make_path(dev->udev, dev->input_phys, sizeof(dev->input_phys)); in uvc_input_init()
55 strlcat(dev->input_phys, "/button", sizeof(dev->input_phys)); in uvc_input_init()
57 input->name = dev->name; in uvc_input_init()
58 input->phys = dev->input_phys; in uvc_input_init()
59 usb_to_input_id(dev->udev, &input->id); in uvc_input_init()
60 input->dev.parent = &dev->intf->dev; in uvc_input_init()
68 dev->input = input; in uvc_input_init()
76 static void uvc_input_unregister(struct uvc_device *dev) in uvc_input_unregister() argument
78 if (dev->input) in uvc_input_unregister()
79 input_unregister_device(dev->input); in uvc_input_unregister()
82 static void uvc_input_report_key(struct uvc_device *dev, unsigned int code, in uvc_input_report_key() argument
85 if (dev->input) { in uvc_input_report_key()
86 input_report_key(dev->input, code, value); in uvc_input_report_key()
87 input_sync(dev->input); in uvc_input_report_key()
92 #define uvc_input_init(dev) argument
93 #define uvc_input_unregister(dev) argument
94 #define uvc_input_report_key(dev, code, value) argument
100 static void uvc_event_streaming(struct uvc_device *dev, in uvc_event_streaming() argument
104 uvc_dbg(dev, STATUS, in uvc_event_streaming()
113 uvc_dbg(dev, STATUS, "Button (intf %u) %s len %d\n", in uvc_event_streaming()
116 uvc_input_report_key(dev, KEY_CAMERA, status->streaming.button); in uvc_event_streaming()
118 uvc_dbg(dev, STATUS, "Stream %u error event %02x len %d\n", in uvc_event_streaming()
142 static struct uvc_control *uvc_event_find_ctrl(struct uvc_device *dev, in uvc_event_find_ctrl() argument
146 list_for_each_entry((*chain), &dev->chains, list) { in uvc_event_find_ctrl()
168 struct uvc_device *dev = urb->context; in uvc_event_control() local
174 uvc_dbg(dev, STATUS, "Invalid control status event received\n"); in uvc_event_control()
178 uvc_dbg(dev, STATUS, "Control %u/%u %s change len %d\n", in uvc_event_control()
183 ctrl = uvc_event_find_ctrl(dev, status, &chain); in uvc_event_control()
204 struct uvc_device *dev = urb->context; in uvc_status_complete() local
218 dev_warn(&dev->udev->dev, in uvc_status_complete()
226 switch (dev->status->bStatusType & 0x0f) { in uvc_status_complete()
228 if (uvc_event_control(urb, dev->status, len)) in uvc_status_complete()
235 uvc_event_streaming(dev, dev->status, len); in uvc_status_complete()
240 uvc_dbg(dev, STATUS, "Unknown status event type %u\n", in uvc_status_complete()
241 dev->status->bStatusType); in uvc_status_complete()
247 urb->interval = dev->int_ep->desc.bInterval; in uvc_status_complete()
250 dev_err(&dev->udev->dev, in uvc_status_complete()
254 int uvc_status_init(struct uvc_device *dev) in uvc_status_init() argument
256 struct usb_host_endpoint *ep = dev->int_ep; in uvc_status_init()
263 uvc_input_init(dev); in uvc_status_init()
265 dev->status = kzalloc(sizeof(*dev->status), GFP_KERNEL); in uvc_status_init()
266 if (!dev->status) in uvc_status_init()
269 dev->int_urb = usb_alloc_urb(0, GFP_KERNEL); in uvc_status_init()
270 if (!dev->int_urb) { in uvc_status_init()
271 kfree(dev->status); in uvc_status_init()
275 pipe = usb_rcvintpipe(dev->udev, ep->desc.bEndpointAddress); in uvc_status_init()
282 if (interval > 16 && dev->udev->speed == USB_SPEED_HIGH && in uvc_status_init()
283 (dev->quirks & UVC_QUIRK_STATUS_INTERVAL)) in uvc_status_init()
286 usb_fill_int_urb(dev->int_urb, dev->udev, pipe, in uvc_status_init()
287 dev->status, sizeof(*dev->status), uvc_status_complete, in uvc_status_init()
288 dev, interval); in uvc_status_init()
293 void uvc_status_unregister(struct uvc_device *dev) in uvc_status_unregister() argument
295 usb_kill_urb(dev->int_urb); in uvc_status_unregister()
296 uvc_input_unregister(dev); in uvc_status_unregister()
299 void uvc_status_cleanup(struct uvc_device *dev) in uvc_status_cleanup() argument
301 usb_free_urb(dev->int_urb); in uvc_status_cleanup()
302 kfree(dev->status); in uvc_status_cleanup()
305 int uvc_status_start(struct uvc_device *dev, gfp_t flags) in uvc_status_start() argument
307 if (dev->int_urb == NULL) in uvc_status_start()
310 return usb_submit_urb(dev->int_urb, flags); in uvc_status_start()
313 void uvc_status_stop(struct uvc_device *dev) in uvc_status_stop() argument
315 struct uvc_ctrl_work *w = &dev->async_ctrl; in uvc_status_stop()
323 smp_store_release(&dev->flush_status, true); in uvc_status_stop()
333 usb_kill_urb(dev->int_urb); in uvc_status_stop()
351 smp_store_release(&dev->flush_status, false); in uvc_status_stop()