Lines Matching refs:stream
156 static int uvc_v4l2_try_format(struct uvc_streaming *stream, in uvc_v4l2_try_format() argument
169 if (fmt->type != stream->type) in uvc_v4l2_try_format()
173 uvc_dbg(stream->dev, FORMAT, "Trying format 0x%08x (%c%c%c%c): %ux%u\n", in uvc_v4l2_try_format()
181 for (i = 0; i < stream->nformats; ++i) { in uvc_v4l2_try_format()
182 format = &stream->format[i]; in uvc_v4l2_try_format()
187 if (i == stream->nformats) { in uvc_v4l2_try_format()
188 format = stream->def_format; in uvc_v4l2_try_format()
216 uvc_dbg(stream->dev, FORMAT, "Unsupported size %ux%u\n", in uvc_v4l2_try_format()
223 uvc_dbg(stream->dev, FORMAT, in uvc_v4l2_try_format()
246 mutex_lock(&stream->mutex); in uvc_v4l2_try_format()
247 if (stream->dev->quirks & UVC_QUIRK_PROBE_EXTRAFIELDS) in uvc_v4l2_try_format()
249 stream->ctrl.dwMaxVideoFrameSize; in uvc_v4l2_try_format()
252 ret = uvc_probe_video(stream, probe); in uvc_v4l2_try_format()
253 mutex_unlock(&stream->mutex); in uvc_v4l2_try_format()
262 for (i = 0; i < stream->nformats; ++i) { in uvc_v4l2_try_format()
263 if (probe->bFormatIndex == stream->format[i].index) { in uvc_v4l2_try_format()
264 format = &stream->format[i]; in uvc_v4l2_try_format()
269 if (i == stream->nformats) in uvc_v4l2_try_format()
270 uvc_dbg(stream->dev, FORMAT, in uvc_v4l2_try_format()
282 uvc_dbg(stream->dev, FORMAT, in uvc_v4l2_try_format()
305 static int uvc_v4l2_get_format(struct uvc_streaming *stream, in uvc_v4l2_get_format() argument
312 if (fmt->type != stream->type) in uvc_v4l2_get_format()
315 mutex_lock(&stream->mutex); in uvc_v4l2_get_format()
316 format = stream->cur_format; in uvc_v4l2_get_format()
317 frame = stream->cur_frame; in uvc_v4l2_get_format()
329 fmt->fmt.pix.sizeimage = stream->ctrl.dwMaxVideoFrameSize; in uvc_v4l2_get_format()
335 mutex_unlock(&stream->mutex); in uvc_v4l2_get_format()
339 static int uvc_v4l2_set_format(struct uvc_streaming *stream, in uvc_v4l2_set_format() argument
347 if (fmt->type != stream->type) in uvc_v4l2_set_format()
350 ret = uvc_v4l2_try_format(stream, fmt, &probe, &format, &frame); in uvc_v4l2_set_format()
354 mutex_lock(&stream->mutex); in uvc_v4l2_set_format()
356 if (uvc_queue_allocated(&stream->queue)) { in uvc_v4l2_set_format()
361 stream->ctrl = probe; in uvc_v4l2_set_format()
362 stream->cur_format = format; in uvc_v4l2_set_format()
363 stream->cur_frame = frame; in uvc_v4l2_set_format()
366 mutex_unlock(&stream->mutex); in uvc_v4l2_set_format()
370 static int uvc_v4l2_get_streamparm(struct uvc_streaming *stream, in uvc_v4l2_get_streamparm() argument
375 if (parm->type != stream->type) in uvc_v4l2_get_streamparm()
378 mutex_lock(&stream->mutex); in uvc_v4l2_get_streamparm()
379 numerator = stream->ctrl.dwFrameInterval; in uvc_v4l2_get_streamparm()
380 mutex_unlock(&stream->mutex); in uvc_v4l2_get_streamparm()
386 parm->type = stream->type; in uvc_v4l2_get_streamparm()
388 if (stream->type == V4L2_BUF_TYPE_VIDEO_CAPTURE) { in uvc_v4l2_get_streamparm()
405 static int uvc_v4l2_set_streamparm(struct uvc_streaming *stream, in uvc_v4l2_set_streamparm() argument
416 if (parm->type != stream->type) in uvc_v4l2_set_streamparm()
426 uvc_dbg(stream->dev, FORMAT, "Setting frame interval to %u/%u (%u)\n", in uvc_v4l2_set_streamparm()
429 mutex_lock(&stream->mutex); in uvc_v4l2_set_streamparm()
431 if (uvc_queue_streaming(&stream->queue)) { in uvc_v4l2_set_streamparm()
432 mutex_unlock(&stream->mutex); in uvc_v4l2_set_streamparm()
436 format = stream->cur_format; in uvc_v4l2_set_streamparm()
437 frame = stream->cur_frame; in uvc_v4l2_set_streamparm()
438 probe = stream->ctrl; in uvc_v4l2_set_streamparm()
446 if (&format->frame[i] == stream->cur_frame) in uvc_v4l2_set_streamparm()
449 if (format->frame[i].wWidth != stream->cur_frame->wWidth || in uvc_v4l2_set_streamparm()
450 format->frame[i].wHeight != stream->cur_frame->wHeight) in uvc_v4l2_set_streamparm()
465 ret = uvc_probe_video(stream, &probe); in uvc_v4l2_set_streamparm()
467 mutex_unlock(&stream->mutex); in uvc_v4l2_set_streamparm()
471 stream->ctrl = probe; in uvc_v4l2_set_streamparm()
472 stream->cur_frame = frame; in uvc_v4l2_set_streamparm()
473 mutex_unlock(&stream->mutex); in uvc_v4l2_set_streamparm()
526 if (atomic_inc_return(&handle->stream->active) != 1) { in uvc_acquire_privileges()
527 atomic_dec(&handle->stream->active); in uvc_acquire_privileges()
538 atomic_dec(&handle->stream->active); in uvc_dismiss_privileges()
554 struct uvc_streaming *stream; in uvc_v4l2_open() local
558 stream = video_drvdata(file); in uvc_v4l2_open()
559 uvc_dbg(stream->dev, CALLS, "%s\n", __func__); in uvc_v4l2_open()
561 ret = usb_autopm_get_interface(stream->dev->intf); in uvc_v4l2_open()
568 usb_autopm_put_interface(stream->dev->intf); in uvc_v4l2_open()
572 mutex_lock(&stream->dev->lock); in uvc_v4l2_open()
573 if (stream->dev->users == 0) { in uvc_v4l2_open()
574 ret = uvc_status_start(stream->dev, GFP_KERNEL); in uvc_v4l2_open()
576 mutex_unlock(&stream->dev->lock); in uvc_v4l2_open()
577 usb_autopm_put_interface(stream->dev->intf); in uvc_v4l2_open()
583 stream->dev->users++; in uvc_v4l2_open()
584 mutex_unlock(&stream->dev->lock); in uvc_v4l2_open()
586 v4l2_fh_init(&handle->vfh, &stream->vdev); in uvc_v4l2_open()
588 handle->chain = stream->chain; in uvc_v4l2_open()
589 handle->stream = stream; in uvc_v4l2_open()
599 struct uvc_streaming *stream = handle->stream; in uvc_v4l2_release() local
601 uvc_dbg(stream->dev, CALLS, "%s\n", __func__); in uvc_v4l2_release()
605 uvc_queue_release(&stream->queue); in uvc_v4l2_release()
614 mutex_lock(&stream->dev->lock); in uvc_v4l2_release()
615 if (--stream->dev->users == 0) in uvc_v4l2_release()
616 uvc_status_stop(stream->dev); in uvc_v4l2_release()
617 mutex_unlock(&stream->dev->lock); in uvc_v4l2_release()
619 usb_autopm_put_interface(stream->dev->intf); in uvc_v4l2_release()
628 struct uvc_streaming *stream = handle->stream; in uvc_ioctl_querycap() local
631 strscpy(cap->card, handle->stream->dev->name, sizeof(cap->card)); in uvc_ioctl_querycap()
632 usb_make_path(stream->dev->udev, cap->bus_info, sizeof(cap->bus_info)); in uvc_ioctl_querycap()
639 static int uvc_ioctl_enum_fmt(struct uvc_streaming *stream, in uvc_ioctl_enum_fmt() argument
646 if (fmt->type != stream->type || fmt->index >= stream->nformats) in uvc_ioctl_enum_fmt()
653 format = &stream->format[fmt->index]; in uvc_ioctl_enum_fmt()
667 struct uvc_streaming *stream = handle->stream; in uvc_ioctl_enum_fmt_vid_cap() local
669 return uvc_ioctl_enum_fmt(stream, fmt); in uvc_ioctl_enum_fmt_vid_cap()
676 struct uvc_streaming *stream = handle->stream; in uvc_ioctl_enum_fmt_vid_out() local
678 return uvc_ioctl_enum_fmt(stream, fmt); in uvc_ioctl_enum_fmt_vid_out()
685 struct uvc_streaming *stream = handle->stream; in uvc_ioctl_g_fmt_vid_cap() local
687 return uvc_v4l2_get_format(stream, fmt); in uvc_ioctl_g_fmt_vid_cap()
694 struct uvc_streaming *stream = handle->stream; in uvc_ioctl_g_fmt_vid_out() local
696 return uvc_v4l2_get_format(stream, fmt); in uvc_ioctl_g_fmt_vid_out()
703 struct uvc_streaming *stream = handle->stream; in uvc_ioctl_s_fmt_vid_cap() local
710 return uvc_v4l2_set_format(stream, fmt); in uvc_ioctl_s_fmt_vid_cap()
717 struct uvc_streaming *stream = handle->stream; in uvc_ioctl_s_fmt_vid_out() local
724 return uvc_v4l2_set_format(stream, fmt); in uvc_ioctl_s_fmt_vid_out()
731 struct uvc_streaming *stream = handle->stream; in uvc_ioctl_try_fmt_vid_cap() local
734 return uvc_v4l2_try_format(stream, fmt, &probe, NULL, NULL); in uvc_ioctl_try_fmt_vid_cap()
741 struct uvc_streaming *stream = handle->stream; in uvc_ioctl_try_fmt_vid_out() local
744 return uvc_v4l2_try_format(stream, fmt, &probe, NULL, NULL); in uvc_ioctl_try_fmt_vid_out()
751 struct uvc_streaming *stream = handle->stream; in uvc_ioctl_reqbufs() local
758 mutex_lock(&stream->mutex); in uvc_ioctl_reqbufs()
759 ret = uvc_request_buffers(&stream->queue, rb); in uvc_ioctl_reqbufs()
760 mutex_unlock(&stream->mutex); in uvc_ioctl_reqbufs()
774 struct uvc_streaming *stream = handle->stream; in uvc_ioctl_querybuf() local
779 return uvc_query_buffer(&stream->queue, buf); in uvc_ioctl_querybuf()
785 struct uvc_streaming *stream = handle->stream; in uvc_ioctl_qbuf() local
790 return uvc_queue_buffer(&stream->queue, in uvc_ioctl_qbuf()
791 stream->vdev.v4l2_dev->mdev, buf); in uvc_ioctl_qbuf()
798 struct uvc_streaming *stream = handle->stream; in uvc_ioctl_expbuf() local
803 return uvc_export_buffer(&stream->queue, exp); in uvc_ioctl_expbuf()
809 struct uvc_streaming *stream = handle->stream; in uvc_ioctl_dqbuf() local
814 return uvc_dequeue_buffer(&stream->queue, buf, in uvc_ioctl_dqbuf()
822 struct uvc_streaming *stream = handle->stream; in uvc_ioctl_create_bufs() local
829 return uvc_create_buffers(&stream->queue, cb); in uvc_ioctl_create_bufs()
836 struct uvc_streaming *stream = handle->stream; in uvc_ioctl_streamon() local
842 mutex_lock(&stream->mutex); in uvc_ioctl_streamon()
843 ret = uvc_queue_streamon(&stream->queue, type); in uvc_ioctl_streamon()
844 mutex_unlock(&stream->mutex); in uvc_ioctl_streamon()
853 struct uvc_streaming *stream = handle->stream; in uvc_ioctl_streamoff() local
858 mutex_lock(&stream->mutex); in uvc_ioctl_streamoff()
859 uvc_queue_streamoff(&stream->queue, type); in uvc_ioctl_streamoff()
860 mutex_unlock(&stream->mutex); in uvc_ioctl_streamoff()
1137 struct uvc_streaming *stream = handle->stream; in uvc_ioctl_g_selection() local
1139 if (sel->type != stream->type) in uvc_ioctl_g_selection()
1145 if (stream->type != V4L2_BUF_TYPE_VIDEO_CAPTURE) in uvc_ioctl_g_selection()
1150 if (stream->type != V4L2_BUF_TYPE_VIDEO_OUTPUT) in uvc_ioctl_g_selection()
1159 mutex_lock(&stream->mutex); in uvc_ioctl_g_selection()
1160 sel->r.width = stream->cur_frame->wWidth; in uvc_ioctl_g_selection()
1161 sel->r.height = stream->cur_frame->wHeight; in uvc_ioctl_g_selection()
1162 mutex_unlock(&stream->mutex); in uvc_ioctl_g_selection()
1171 struct uvc_streaming *stream = handle->stream; in uvc_ioctl_g_parm() local
1173 return uvc_v4l2_get_streamparm(stream, parm); in uvc_ioctl_g_parm()
1180 struct uvc_streaming *stream = handle->stream; in uvc_ioctl_s_parm() local
1187 return uvc_v4l2_set_streamparm(stream, parm); in uvc_ioctl_s_parm()
1194 struct uvc_streaming *stream = handle->stream; in uvc_ioctl_enum_framesizes() local
1201 for (i = 0; i < stream->nformats; i++) { in uvc_ioctl_enum_framesizes()
1202 if (stream->format[i].fcc == fsize->pixel_format) { in uvc_ioctl_enum_framesizes()
1203 format = &stream->format[i]; in uvc_ioctl_enum_framesizes()
1234 struct uvc_streaming *stream = handle->stream; in uvc_ioctl_enum_frameintervals() local
1242 for (i = 0; i < stream->nformats; i++) { in uvc_ioctl_enum_frameintervals()
1243 if (stream->format[i].fcc == fival->pixel_format) { in uvc_ioctl_enum_frameintervals()
1244 format = &stream->format[i]; in uvc_ioctl_enum_frameintervals()
1457 struct uvc_streaming *stream = handle->stream; in uvc_v4l2_read() local
1459 uvc_dbg(stream->dev, CALLS, "%s: not implemented\n", __func__); in uvc_v4l2_read()
1466 struct uvc_streaming *stream = handle->stream; in uvc_v4l2_mmap() local
1468 uvc_dbg(stream->dev, CALLS, "%s\n", __func__); in uvc_v4l2_mmap()
1470 return uvc_queue_mmap(&stream->queue, vma); in uvc_v4l2_mmap()
1476 struct uvc_streaming *stream = handle->stream; in uvc_v4l2_poll() local
1478 uvc_dbg(stream->dev, CALLS, "%s\n", __func__); in uvc_v4l2_poll()
1480 return uvc_queue_poll(&stream->queue, file, wait); in uvc_v4l2_poll()
1489 struct uvc_streaming *stream = handle->stream; in uvc_v4l2_get_unmapped_area() local
1491 uvc_dbg(stream->dev, CALLS, "%s\n", __func__); in uvc_v4l2_get_unmapped_area()
1493 return uvc_queue_get_unmapped_area(&stream->queue, pgoff); in uvc_v4l2_get_unmapped_area()