Lines Matching refs:vcap
74 struct vimc_cap_device *vcap = container_of(ved, struct vimc_cap_device, in vimc_cap_get_format() local
77 *fmt = vcap->format; in vimc_cap_get_format()
83 struct vimc_cap_device *vcap = video_drvdata(file); in vimc_cap_g_fmt_vid_cap() local
85 f->fmt.pix = vcap->format; in vimc_cap_g_fmt_vid_cap()
122 struct vimc_cap_device *vcap = video_drvdata(file); in vimc_cap_s_fmt_vid_cap() local
126 if (vb2_is_busy(&vcap->queue)) in vimc_cap_s_fmt_vid_cap()
133 dev_dbg(vcap->dev, "%s: format update: " in vimc_cap_s_fmt_vid_cap()
135 "new:%dx%d (0x%x, %d, %d, %d, %d)\n", vcap->vdev.name, in vimc_cap_s_fmt_vid_cap()
137 vcap->format.width, vcap->format.height, in vimc_cap_s_fmt_vid_cap()
138 vcap->format.pixelformat, vcap->format.colorspace, in vimc_cap_s_fmt_vid_cap()
139 vcap->format.quantization, vcap->format.xfer_func, in vimc_cap_s_fmt_vid_cap()
140 vcap->format.ycbcr_enc, in vimc_cap_s_fmt_vid_cap()
147 vcap->format = f->fmt.pix; in vimc_cap_s_fmt_vid_cap()
219 static void vimc_cap_return_all_buffers(struct vimc_cap_device *vcap, in vimc_cap_return_all_buffers() argument
224 spin_lock(&vcap->qlock); in vimc_cap_return_all_buffers()
226 list_for_each_entry_safe(vbuf, node, &vcap->buf_list, list) { in vimc_cap_return_all_buffers()
231 spin_unlock(&vcap->qlock); in vimc_cap_return_all_buffers()
236 struct vimc_cap_device *vcap = vb2_get_drv_priv(vq); in vimc_cap_start_streaming() local
237 struct media_entity *entity = &vcap->vdev.entity; in vimc_cap_start_streaming()
240 vcap->sequence = 0; in vimc_cap_start_streaming()
243 ret = media_pipeline_start(entity, &vcap->stream.pipe); in vimc_cap_start_streaming()
245 vimc_cap_return_all_buffers(vcap, VB2_BUF_STATE_QUEUED); in vimc_cap_start_streaming()
249 ret = vimc_streamer_s_stream(&vcap->stream, &vcap->ved, 1); in vimc_cap_start_streaming()
252 vimc_cap_return_all_buffers(vcap, VB2_BUF_STATE_QUEUED); in vimc_cap_start_streaming()
265 struct vimc_cap_device *vcap = vb2_get_drv_priv(vq); in vimc_cap_stop_streaming() local
267 vimc_streamer_s_stream(&vcap->stream, &vcap->ved, 0); in vimc_cap_stop_streaming()
270 media_pipeline_stop(&vcap->vdev.entity); in vimc_cap_stop_streaming()
273 vimc_cap_return_all_buffers(vcap, VB2_BUF_STATE_ERROR); in vimc_cap_stop_streaming()
278 struct vimc_cap_device *vcap = vb2_get_drv_priv(vb2_buf->vb2_queue); in vimc_cap_buf_queue() local
283 spin_lock(&vcap->qlock); in vimc_cap_buf_queue()
284 list_add_tail(&buf->list, &vcap->buf_list); in vimc_cap_buf_queue()
285 spin_unlock(&vcap->qlock); in vimc_cap_buf_queue()
292 struct vimc_cap_device *vcap = vb2_get_drv_priv(vq); in vimc_cap_queue_setup() local
295 return sizes[0] < vcap->format.sizeimage ? -EINVAL : 0; in vimc_cap_queue_setup()
298 sizes[0] = vcap->format.sizeimage; in vimc_cap_queue_setup()
305 struct vimc_cap_device *vcap = vb2_get_drv_priv(vb->vb2_queue); in vimc_cap_buffer_prepare() local
306 unsigned long size = vcap->format.sizeimage; in vimc_cap_buffer_prepare()
309 dev_err(vcap->dev, "%s: buffer too small (%lu < %lu)\n", in vimc_cap_buffer_prepare()
310 vcap->vdev.name, vb2_plane_size(vb, 0), size); in vimc_cap_buffer_prepare()
336 struct vimc_cap_device *vcap = in vimc_cap_release() local
339 vimc_pads_cleanup(vcap->ved.pads); in vimc_cap_release()
340 kfree(vcap); in vimc_cap_release()
347 struct vimc_cap_device *vcap = container_of(ved, struct vimc_cap_device, in vimc_cap_comp_unbind() local
350 vb2_queue_release(&vcap->queue); in vimc_cap_comp_unbind()
352 video_unregister_device(&vcap->vdev); in vimc_cap_comp_unbind()
358 struct vimc_cap_device *vcap = container_of(ved, struct vimc_cap_device, in vimc_cap_process_frame() local
363 spin_lock(&vcap->qlock); in vimc_cap_process_frame()
366 vimc_buf = list_first_entry_or_null(&vcap->buf_list, in vimc_cap_process_frame()
369 spin_unlock(&vcap->qlock); in vimc_cap_process_frame()
376 spin_unlock(&vcap->qlock); in vimc_cap_process_frame()
380 vimc_buf->vb2.sequence = vcap->sequence++; in vimc_cap_process_frame()
381 vimc_buf->vb2.field = vcap->format.field; in vimc_cap_process_frame()
385 memcpy(vbuf, frame, vcap->format.sizeimage); in vimc_cap_process_frame()
389 vcap->format.sizeimage); in vimc_cap_process_frame()
400 struct vimc_cap_device *vcap; in vimc_cap_comp_bind() local
406 vcap = kzalloc(sizeof(*vcap), GFP_KERNEL); in vimc_cap_comp_bind()
407 if (!vcap) in vimc_cap_comp_bind()
411 vcap->ved.pads = in vimc_cap_comp_bind()
413 if (IS_ERR(vcap->ved.pads)) { in vimc_cap_comp_bind()
414 ret = PTR_ERR(vcap->ved.pads); in vimc_cap_comp_bind()
419 vcap->vdev.entity.name = pdata->entity_name; in vimc_cap_comp_bind()
420 vcap->vdev.entity.function = MEDIA_ENT_F_IO_V4L; in vimc_cap_comp_bind()
421 ret = media_entity_pads_init(&vcap->vdev.entity, in vimc_cap_comp_bind()
422 1, vcap->ved.pads); in vimc_cap_comp_bind()
427 mutex_init(&vcap->lock); in vimc_cap_comp_bind()
430 q = &vcap->queue; in vimc_cap_comp_bind()
433 q->drv_priv = vcap; in vimc_cap_comp_bind()
439 q->lock = &vcap->lock; in vimc_cap_comp_bind()
449 INIT_LIST_HEAD(&vcap->buf_list); in vimc_cap_comp_bind()
450 spin_lock_init(&vcap->qlock); in vimc_cap_comp_bind()
453 vcap->format = fmt_default; in vimc_cap_comp_bind()
454 vpix = vimc_pix_map_by_pixelformat(vcap->format.pixelformat); in vimc_cap_comp_bind()
455 vcap->format.bytesperline = vcap->format.width * vpix->bpp; in vimc_cap_comp_bind()
456 vcap->format.sizeimage = vcap->format.bytesperline * in vimc_cap_comp_bind()
457 vcap->format.height; in vimc_cap_comp_bind()
460 vcap->ved.ent = &vcap->vdev.entity; in vimc_cap_comp_bind()
461 vcap->ved.process_frame = vimc_cap_process_frame; in vimc_cap_comp_bind()
462 vcap->ved.vdev_get_format = vimc_cap_get_format; in vimc_cap_comp_bind()
463 dev_set_drvdata(comp, &vcap->ved); in vimc_cap_comp_bind()
464 vcap->dev = comp; in vimc_cap_comp_bind()
467 vdev = &vcap->vdev; in vimc_cap_comp_bind()
473 vdev->lock = &vcap->lock; in vimc_cap_comp_bind()
478 video_set_drvdata(vdev, &vcap->ved); in vimc_cap_comp_bind()
484 vcap->vdev.name, ret); in vimc_cap_comp_bind()
493 media_entity_cleanup(&vcap->vdev.entity); in vimc_cap_comp_bind()
495 vimc_pads_cleanup(vcap->ved.pads); in vimc_cap_comp_bind()
497 kfree(vcap); in vimc_cap_comp_bind()