Lines Matching full:vcap
73 struct vimc_cap_device *vcap = video_drvdata(file); in vimc_cap_querycap() local
78 "platform:%s", vcap->vdev.v4l2_dev->name); in vimc_cap_querycap()
86 struct vimc_cap_device *vcap = container_of(ved, struct vimc_cap_device, in vimc_cap_get_format() local
89 *fmt = vcap->format; in vimc_cap_get_format()
95 struct vimc_cap_device *vcap = video_drvdata(file); in vimc_cap_g_fmt_vid_cap() local
97 f->fmt.pix = vcap->format; in vimc_cap_g_fmt_vid_cap()
134 struct vimc_cap_device *vcap = video_drvdata(file); in vimc_cap_s_fmt_vid_cap() local
138 if (vb2_is_busy(&vcap->queue)) in vimc_cap_s_fmt_vid_cap()
145 dev_dbg(vcap->dev, "%s: format update: " in vimc_cap_s_fmt_vid_cap()
147 "new:%dx%d (0x%x, %d, %d, %d, %d)\n", vcap->vdev.name, in vimc_cap_s_fmt_vid_cap()
149 vcap->format.width, vcap->format.height, in vimc_cap_s_fmt_vid_cap()
150 vcap->format.pixelformat, vcap->format.colorspace, in vimc_cap_s_fmt_vid_cap()
151 vcap->format.quantization, vcap->format.xfer_func, in vimc_cap_s_fmt_vid_cap()
152 vcap->format.ycbcr_enc, in vimc_cap_s_fmt_vid_cap()
159 vcap->format = f->fmt.pix; in vimc_cap_s_fmt_vid_cap()
231 static void vimc_cap_return_all_buffers(struct vimc_cap_device *vcap, in vimc_cap_return_all_buffers() argument
236 spin_lock(&vcap->qlock); in vimc_cap_return_all_buffers()
238 list_for_each_entry_safe(vbuf, node, &vcap->buf_list, list) { in vimc_cap_return_all_buffers()
243 spin_unlock(&vcap->qlock); in vimc_cap_return_all_buffers()
248 struct vimc_cap_device *vcap = vb2_get_drv_priv(vq); in vimc_cap_start_streaming() local
249 struct media_entity *entity = &vcap->vdev.entity; in vimc_cap_start_streaming()
252 vcap->sequence = 0; in vimc_cap_start_streaming()
255 ret = media_pipeline_start(entity, &vcap->stream.pipe); in vimc_cap_start_streaming()
257 vimc_cap_return_all_buffers(vcap, VB2_BUF_STATE_QUEUED); in vimc_cap_start_streaming()
261 ret = vimc_streamer_s_stream(&vcap->stream, &vcap->ved, 1); in vimc_cap_start_streaming()
264 vimc_cap_return_all_buffers(vcap, VB2_BUF_STATE_QUEUED); in vimc_cap_start_streaming()
277 struct vimc_cap_device *vcap = vb2_get_drv_priv(vq); in vimc_cap_stop_streaming() local
279 vimc_streamer_s_stream(&vcap->stream, &vcap->ved, 0); in vimc_cap_stop_streaming()
282 media_pipeline_stop(&vcap->vdev.entity); in vimc_cap_stop_streaming()
285 vimc_cap_return_all_buffers(vcap, VB2_BUF_STATE_ERROR); in vimc_cap_stop_streaming()
290 struct vimc_cap_device *vcap = vb2_get_drv_priv(vb2_buf->vb2_queue); in vimc_cap_buf_queue() local
295 spin_lock(&vcap->qlock); in vimc_cap_buf_queue()
296 list_add_tail(&buf->list, &vcap->buf_list); in vimc_cap_buf_queue()
297 spin_unlock(&vcap->qlock); in vimc_cap_buf_queue()
304 struct vimc_cap_device *vcap = vb2_get_drv_priv(vq); in vimc_cap_queue_setup() local
307 return sizes[0] < vcap->format.sizeimage ? -EINVAL : 0; in vimc_cap_queue_setup()
310 sizes[0] = vcap->format.sizeimage; in vimc_cap_queue_setup()
317 struct vimc_cap_device *vcap = vb2_get_drv_priv(vb->vb2_queue); in vimc_cap_buffer_prepare() local
318 unsigned long size = vcap->format.sizeimage; in vimc_cap_buffer_prepare()
321 dev_err(vcap->dev, "%s: buffer too small (%lu < %lu)\n", in vimc_cap_buffer_prepare()
322 vcap->vdev.name, vb2_plane_size(vb, 0), size); in vimc_cap_buffer_prepare()
350 struct vimc_cap_device *vcap = container_of(ved, struct vimc_cap_device, in vimc_cap_comp_unbind() local
353 vb2_queue_release(&vcap->queue); in vimc_cap_comp_unbind()
355 video_unregister_device(&vcap->vdev); in vimc_cap_comp_unbind()
356 vimc_pads_cleanup(vcap->ved.pads); in vimc_cap_comp_unbind()
357 kfree(vcap); in vimc_cap_comp_unbind()
363 struct vimc_cap_device *vcap = container_of(ved, struct vimc_cap_device, in vimc_cap_process_frame() local
368 spin_lock(&vcap->qlock); in vimc_cap_process_frame()
371 vimc_buf = list_first_entry_or_null(&vcap->buf_list, in vimc_cap_process_frame()
374 spin_unlock(&vcap->qlock); in vimc_cap_process_frame()
381 spin_unlock(&vcap->qlock); in vimc_cap_process_frame()
385 vimc_buf->vb2.sequence = vcap->sequence++; in vimc_cap_process_frame()
386 vimc_buf->vb2.field = vcap->format.field; in vimc_cap_process_frame()
390 memcpy(vbuf, frame, vcap->format.sizeimage); in vimc_cap_process_frame()
394 vcap->format.sizeimage); in vimc_cap_process_frame()
405 struct vimc_cap_device *vcap; in vimc_cap_comp_bind() local
411 vcap = kzalloc(sizeof(*vcap), GFP_KERNEL); in vimc_cap_comp_bind()
412 if (!vcap) in vimc_cap_comp_bind()
416 vcap->ved.pads = in vimc_cap_comp_bind()
418 if (IS_ERR(vcap->ved.pads)) { in vimc_cap_comp_bind()
419 ret = PTR_ERR(vcap->ved.pads); in vimc_cap_comp_bind()
424 vcap->vdev.entity.name = pdata->entity_name; in vimc_cap_comp_bind()
425 vcap->vdev.entity.function = MEDIA_ENT_F_IO_V4L; in vimc_cap_comp_bind()
426 ret = media_entity_pads_init(&vcap->vdev.entity, in vimc_cap_comp_bind()
427 1, vcap->ved.pads); in vimc_cap_comp_bind()
432 mutex_init(&vcap->lock); in vimc_cap_comp_bind()
435 q = &vcap->queue; in vimc_cap_comp_bind()
438 q->drv_priv = vcap; in vimc_cap_comp_bind()
444 q->lock = &vcap->lock; in vimc_cap_comp_bind()
454 INIT_LIST_HEAD(&vcap->buf_list); in vimc_cap_comp_bind()
455 spin_lock_init(&vcap->qlock); in vimc_cap_comp_bind()
458 vcap->format = fmt_default; in vimc_cap_comp_bind()
459 vpix = vimc_pix_map_by_pixelformat(vcap->format.pixelformat); in vimc_cap_comp_bind()
460 vcap->format.bytesperline = vcap->format.width * vpix->bpp; in vimc_cap_comp_bind()
461 vcap->format.sizeimage = vcap->format.bytesperline * in vimc_cap_comp_bind()
462 vcap->format.height; in vimc_cap_comp_bind()
465 vcap->ved.ent = &vcap->vdev.entity; in vimc_cap_comp_bind()
466 vcap->ved.process_frame = vimc_cap_process_frame; in vimc_cap_comp_bind()
467 vcap->ved.vdev_get_format = vimc_cap_get_format; in vimc_cap_comp_bind()
468 dev_set_drvdata(comp, &vcap->ved); in vimc_cap_comp_bind()
469 vcap->dev = comp; in vimc_cap_comp_bind()
472 vdev = &vcap->vdev; in vimc_cap_comp_bind()
478 vdev->lock = &vcap->lock; in vimc_cap_comp_bind()
483 video_set_drvdata(vdev, &vcap->ved); in vimc_cap_comp_bind()
489 vcap->vdev.name, ret); in vimc_cap_comp_bind()
498 media_entity_cleanup(&vcap->vdev.entity); in vimc_cap_comp_bind()
500 vimc_pads_cleanup(vcap->ved.pads); in vimc_cap_comp_bind()
502 kfree(vcap); in vimc_cap_comp_bind()