Lines Matching full:uvc

14 #include <linux/usb/uvc.h>
24 #include "uvc.h"
85 static struct uvcg_format *find_format_by_index(struct uvc_device *uvc, int index) in find_format_by_index() argument
91 list_for_each_entry(format, &uvc->header->formats, entry) { in find_format_by_index()
102 static struct uvcg_frame *find_frame_by_index(struct uvc_device *uvc, in find_frame_by_index() argument
110 list_for_each_entry(format, &uvc->header->formats, entry) { in find_frame_by_index()
124 static struct uvcg_format *find_format_by_pix(struct uvc_device *uvc, in find_format_by_pix() argument
130 list_for_each_entry(format, &uvc->header->formats, entry) { in find_format_by_pix()
145 static struct uvcg_frame *find_closest_frame_by_size(struct uvc_device *uvc, in find_closest_frame_by_size() argument
149 struct uvc_video *video = &uvc->video; in find_closest_frame_by_size()
161 list_for_each_entry(format, &uvc->header->formats, entry) { in find_closest_frame_by_size()
184 uvcg_dbg(&video->uvc->func, "Unsupported size %ux%u\n", rw, rh); in find_closest_frame_by_size()
194 uvc_send_response(struct uvc_device *uvc, struct uvc_request_data *data) in uvc_send_response() argument
196 struct usb_composite_dev *cdev = uvc->func.config->cdev; in uvc_send_response()
197 struct usb_request *req = uvc->control_req; in uvc_send_response()
202 req->length = min_t(unsigned int, uvc->event_length, data->length); in uvc_send_response()
205 req->zero = data->length < uvc->event_length; in uvc_send_response()
220 struct uvc_device *uvc = video_get_drvdata(vdev); in uvc_v4l2_querycap() local
221 struct usb_composite_dev *cdev = uvc->func.config->cdev; in uvc_v4l2_querycap()
234 struct uvc_device *uvc = video_get_drvdata(vdev); in uvc_v4l2_get_format() local
235 struct uvc_video *video = &uvc->video; in uvc_v4l2_get_format()
253 struct uvc_device *uvc = video_get_drvdata(vdev); in uvc_v4l2_try_format() local
254 struct uvc_video *video = &uvc->video; in uvc_v4l2_try_format()
264 uvcg_dbg(&uvc->func, "Trying format 0x%08x (%c%c%c%c): %ux%u\n", in uvc_v4l2_try_format()
269 uformat = find_format_by_pix(uvc, fmt->fmt.pix.pixelformat); in uvc_v4l2_try_format()
273 uframe = find_closest_frame_by_size(uvc, uformat, in uvc_v4l2_try_format()
311 struct uvc_device *uvc = video_get_drvdata(vdev); in uvc_v4l2_set_format() local
312 struct uvc_video *video = &uvc->video; in uvc_v4l2_set_format()
332 struct uvc_device *uvc = video_get_drvdata(vdev); in uvc_v4l2_g_parm() local
333 struct uvc_video *video = &uvc->video; in uvc_v4l2_g_parm()
345 uvcg_dbg(&uvc->func, "Getting frame interval of %u/%u (%u)\n", in uvc_v4l2_g_parm()
359 struct uvc_device *uvc = video_get_drvdata(vdev); in uvc_v4l2_s_parm() local
360 struct uvc_video *video = &uvc->video; in uvc_v4l2_s_parm()
371 uvcg_dbg(&uvc->func, "Setting frame interval to %u/%u (%u)\n", in uvc_v4l2_s_parm()
383 struct uvc_device *uvc = video_get_drvdata(vdev); in uvc_v4l2_enum_frameintervals() local
388 uformat = find_format_by_pix(uvc, fival->pixel_format); in uvc_v4l2_enum_frameintervals()
422 struct uvc_device *uvc = video_get_drvdata(vdev); in uvc_v4l2_enum_framesizes() local
426 uformat = find_format_by_pix(uvc, fsize->pixel_format); in uvc_v4l2_enum_framesizes()
433 uframe = find_frame_by_index(uvc, uformat, fsize->index + 1); in uvc_v4l2_enum_framesizes()
448 struct uvc_device *uvc = video_get_drvdata(vdev); in uvc_v4l2_enum_format() local
452 if (f->index >= uvc->header->num_fmt) in uvc_v4l2_enum_format()
455 uformat = find_format_by_index(uvc, f->index + 1); in uvc_v4l2_enum_format()
472 struct uvc_device *uvc = video_get_drvdata(vdev); in uvc_v4l2_reqbufs() local
473 struct uvc_video *video = &uvc->video; in uvc_v4l2_reqbufs()
485 struct uvc_device *uvc = video_get_drvdata(vdev); in uvc_v4l2_querybuf() local
486 struct uvc_video *video = &uvc->video; in uvc_v4l2_querybuf()
495 struct uvc_device *uvc = video_get_drvdata(vdev); in uvc_v4l2_qbuf() local
496 struct uvc_video *video = &uvc->video; in uvc_v4l2_qbuf()
503 if (uvc->state == UVC_STATE_STREAMING) in uvc_v4l2_qbuf()
513 struct uvc_device *uvc = video_get_drvdata(vdev); in uvc_v4l2_dqbuf() local
514 struct uvc_video *video = &uvc->video; in uvc_v4l2_dqbuf()
523 struct uvc_device *uvc = video_get_drvdata(vdev); in uvc_v4l2_streamon() local
524 struct uvc_video *video = &uvc->video; in uvc_v4l2_streamon()
530 /* Enable UVC video. */ in uvc_v4l2_streamon()
539 uvc_function_setup_continue(uvc, 0); in uvc_v4l2_streamon()
540 uvc->state = UVC_STATE_STREAMING; in uvc_v4l2_streamon()
549 struct uvc_device *uvc = video_get_drvdata(vdev); in uvc_v4l2_streamoff() local
550 struct uvc_video *video = &uvc->video; in uvc_v4l2_streamoff()
560 if (uvc->state != UVC_STATE_STREAMING) in uvc_v4l2_streamoff()
563 uvc->state = UVC_STATE_CONNECTED; in uvc_v4l2_streamoff()
564 uvc_function_setup_continue(uvc, 1); in uvc_v4l2_streamoff()
572 struct uvc_device *uvc = video_get_drvdata(fh->vdev); in uvc_v4l2_subscribe_event() local
579 guard(mutex)(&uvc->lock); in uvc_v4l2_subscribe_event()
581 if (sub->type == UVC_EVENT_SETUP && uvc->func_connected) in uvc_v4l2_subscribe_event()
589 uvc->func_connected = true; in uvc_v4l2_subscribe_event()
591 uvc_function_connect(uvc); in uvc_v4l2_subscribe_event()
597 static void uvc_v4l2_disable(struct uvc_device *uvc) in uvc_v4l2_disable() argument
599 uvc_function_disconnect(uvc); in uvc_v4l2_disable()
600 uvcg_video_disable(&uvc->video); in uvc_v4l2_disable()
601 uvcg_free_buffers(&uvc->video.queue); in uvc_v4l2_disable()
602 scoped_guard(mutex, &uvc->lock) in uvc_v4l2_disable()
603 uvc->func_connected = false; in uvc_v4l2_disable()
604 wake_up_interruptible(&uvc->func_connected_queue); in uvc_v4l2_disable()
611 struct uvc_device *uvc = video_get_drvdata(fh->vdev); in uvc_v4l2_unsubscribe_event() local
620 uvc_v4l2_disable(uvc); in uvc_v4l2_unsubscribe_event()
632 struct uvc_device *uvc = video_get_drvdata(vdev); in uvc_v4l2_ioctl_default() local
636 return uvc_send_response(uvc, arg); in uvc_v4l2_ioctl_default()
672 struct uvc_device *uvc = video_get_drvdata(vdev); in uvc_v4l2_open() local
682 handle->device = &uvc->video; in uvc_v4l2_open()
691 struct uvc_device *uvc = video_get_drvdata(vdev); in uvc_v4l2_release() local
697 uvc_v4l2_disable(uvc); in uvc_v4l2_release()
711 struct uvc_device *uvc = video_get_drvdata(vdev); in uvc_v4l2_mmap() local
713 return uvcg_queue_mmap(&uvc->video.queue, vma); in uvc_v4l2_mmap()
720 struct uvc_device *uvc = video_get_drvdata(vdev); in uvc_v4l2_poll() local
722 return uvcg_queue_poll(&uvc->video.queue, file, wait); in uvc_v4l2_poll()
731 struct uvc_device *uvc = video_get_drvdata(vdev); in uvcg_v4l2_get_unmapped_area() local
733 return uvcg_queue_get_unmapped_area(&uvc->video.queue, pgoff); in uvcg_v4l2_get_unmapped_area()