Lines Matching refs:vcap
72 struct vimc_cap_device *vcap = video_drvdata(file); in vimc_cap_querycap() local
77 "platform:%s", vcap->vdev.v4l2_dev->name); in vimc_cap_querycap()
85 struct vimc_cap_device *vcap = container_of(ved, struct vimc_cap_device, in vimc_cap_get_format() local
88 *fmt = vcap->format; in vimc_cap_get_format()
94 struct vimc_cap_device *vcap = video_drvdata(file); in vimc_cap_g_fmt_vid_cap() local
96 f->fmt.pix = vcap->format; in vimc_cap_g_fmt_vid_cap()
133 struct vimc_cap_device *vcap = video_drvdata(file); in vimc_cap_s_fmt_vid_cap() local
136 if (vb2_is_busy(&vcap->queue)) in vimc_cap_s_fmt_vid_cap()
141 dev_dbg(vcap->dev, "%s: format update: " in vimc_cap_s_fmt_vid_cap()
143 "new:%dx%d (0x%x, %d, %d, %d, %d)\n", vcap->vdev.name, in vimc_cap_s_fmt_vid_cap()
145 vcap->format.width, vcap->format.height, in vimc_cap_s_fmt_vid_cap()
146 vcap->format.pixelformat, vcap->format.colorspace, in vimc_cap_s_fmt_vid_cap()
147 vcap->format.quantization, vcap->format.xfer_func, in vimc_cap_s_fmt_vid_cap()
148 vcap->format.ycbcr_enc, in vimc_cap_s_fmt_vid_cap()
155 vcap->format = f->fmt.pix; in vimc_cap_s_fmt_vid_cap()
227 static void vimc_cap_return_all_buffers(struct vimc_cap_device *vcap, in vimc_cap_return_all_buffers() argument
232 spin_lock(&vcap->qlock); in vimc_cap_return_all_buffers()
234 list_for_each_entry_safe(vbuf, node, &vcap->buf_list, list) { in vimc_cap_return_all_buffers()
239 spin_unlock(&vcap->qlock); in vimc_cap_return_all_buffers()
244 struct vimc_cap_device *vcap = vb2_get_drv_priv(vq); in vimc_cap_start_streaming() local
245 struct media_entity *entity = &vcap->vdev.entity; in vimc_cap_start_streaming()
248 vcap->sequence = 0; in vimc_cap_start_streaming()
251 ret = media_pipeline_start(entity, &vcap->pipe); in vimc_cap_start_streaming()
253 vimc_cap_return_all_buffers(vcap, VB2_BUF_STATE_QUEUED); in vimc_cap_start_streaming()
258 ret = vimc_pipeline_s_stream(&vcap->vdev.entity, 1); in vimc_cap_start_streaming()
261 vimc_cap_return_all_buffers(vcap, VB2_BUF_STATE_QUEUED); in vimc_cap_start_streaming()
274 struct vimc_cap_device *vcap = vb2_get_drv_priv(vq); in vimc_cap_stop_streaming() local
277 vimc_pipeline_s_stream(&vcap->vdev.entity, 0); in vimc_cap_stop_streaming()
280 media_pipeline_stop(&vcap->vdev.entity); in vimc_cap_stop_streaming()
283 vimc_cap_return_all_buffers(vcap, VB2_BUF_STATE_ERROR); in vimc_cap_stop_streaming()
288 struct vimc_cap_device *vcap = vb2_get_drv_priv(vb2_buf->vb2_queue); in vimc_cap_buf_queue() local
293 spin_lock(&vcap->qlock); in vimc_cap_buf_queue()
294 list_add_tail(&buf->list, &vcap->buf_list); in vimc_cap_buf_queue()
295 spin_unlock(&vcap->qlock); in vimc_cap_buf_queue()
302 struct vimc_cap_device *vcap = vb2_get_drv_priv(vq); in vimc_cap_queue_setup() local
305 return sizes[0] < vcap->format.sizeimage ? -EINVAL : 0; in vimc_cap_queue_setup()
308 sizes[0] = vcap->format.sizeimage; in vimc_cap_queue_setup()
315 struct vimc_cap_device *vcap = vb2_get_drv_priv(vb->vb2_queue); in vimc_cap_buffer_prepare() local
316 unsigned long size = vcap->format.sizeimage; in vimc_cap_buffer_prepare()
319 dev_err(vcap->dev, "%s: buffer too small (%lu < %lu)\n", in vimc_cap_buffer_prepare()
320 vcap->vdev.name, vb2_plane_size(vb, 0), size); in vimc_cap_buffer_prepare()
348 struct vimc_cap_device *vcap = container_of(ved, struct vimc_cap_device, in vimc_cap_comp_unbind() local
351 vb2_queue_release(&vcap->queue); in vimc_cap_comp_unbind()
353 video_unregister_device(&vcap->vdev); in vimc_cap_comp_unbind()
354 vimc_pads_cleanup(vcap->ved.pads); in vimc_cap_comp_unbind()
355 kfree(vcap); in vimc_cap_comp_unbind()
361 struct vimc_cap_device *vcap = container_of(ved, struct vimc_cap_device, in vimc_cap_process_frame() local
366 spin_lock(&vcap->qlock); in vimc_cap_process_frame()
369 vimc_buf = list_first_entry_or_null(&vcap->buf_list, in vimc_cap_process_frame()
372 spin_unlock(&vcap->qlock); in vimc_cap_process_frame()
379 spin_unlock(&vcap->qlock); in vimc_cap_process_frame()
383 vimc_buf->vb2.sequence = vcap->sequence++; in vimc_cap_process_frame()
384 vimc_buf->vb2.field = vcap->format.field; in vimc_cap_process_frame()
388 memcpy(vbuf, frame, vcap->format.sizeimage); in vimc_cap_process_frame()
392 vcap->format.sizeimage); in vimc_cap_process_frame()
402 struct vimc_cap_device *vcap; in vimc_cap_comp_bind() local
408 vcap = kzalloc(sizeof(*vcap), GFP_KERNEL); in vimc_cap_comp_bind()
409 if (!vcap) in vimc_cap_comp_bind()
413 vcap->ved.pads = in vimc_cap_comp_bind()
415 if (IS_ERR(vcap->ved.pads)) { in vimc_cap_comp_bind()
416 ret = PTR_ERR(vcap->ved.pads); in vimc_cap_comp_bind()
421 vcap->vdev.entity.name = pdata->entity_name; in vimc_cap_comp_bind()
422 vcap->vdev.entity.function = MEDIA_ENT_F_IO_V4L; in vimc_cap_comp_bind()
423 ret = media_entity_pads_init(&vcap->vdev.entity, in vimc_cap_comp_bind()
424 1, vcap->ved.pads); in vimc_cap_comp_bind()
429 mutex_init(&vcap->lock); in vimc_cap_comp_bind()
432 q = &vcap->queue; in vimc_cap_comp_bind()
435 q->drv_priv = vcap; in vimc_cap_comp_bind()
441 q->lock = &vcap->lock; in vimc_cap_comp_bind()
451 INIT_LIST_HEAD(&vcap->buf_list); in vimc_cap_comp_bind()
452 spin_lock_init(&vcap->qlock); in vimc_cap_comp_bind()
455 vcap->format = fmt_default; in vimc_cap_comp_bind()
456 vpix = vimc_pix_map_by_pixelformat(vcap->format.pixelformat); in vimc_cap_comp_bind()
457 vcap->format.bytesperline = vcap->format.width * vpix->bpp; in vimc_cap_comp_bind()
458 vcap->format.sizeimage = vcap->format.bytesperline * in vimc_cap_comp_bind()
459 vcap->format.height; in vimc_cap_comp_bind()
462 vcap->ved.ent = &vcap->vdev.entity; in vimc_cap_comp_bind()
463 vcap->ved.process_frame = vimc_cap_process_frame; in vimc_cap_comp_bind()
464 vcap->ved.vdev_get_format = vimc_cap_get_format; in vimc_cap_comp_bind()
465 dev_set_drvdata(comp, &vcap->ved); in vimc_cap_comp_bind()
466 vcap->dev = comp; in vimc_cap_comp_bind()
469 vdev = &vcap->vdev; in vimc_cap_comp_bind()
475 vdev->lock = &vcap->lock; in vimc_cap_comp_bind()
480 video_set_drvdata(vdev, &vcap->ved); in vimc_cap_comp_bind()
486 vcap->vdev.name, ret); in vimc_cap_comp_bind()
495 media_entity_cleanup(&vcap->vdev.entity); in vimc_cap_comp_bind()
497 vimc_pads_cleanup(vcap->ved.pads); in vimc_cap_comp_bind()
499 kfree(vcap); in vimc_cap_comp_bind()