From e5189157f197c601b2e600dfc2b61781dc8c565a Mon Sep 17 00:00:00 2001 From: Deepa Guthyappa Madivalara Date: Wed, 9 Feb 2022 17:19:44 -0800 Subject: [PATCH] video: driver: utilize v4l2_m2m_ioctl_streamon helper function Use v4l2_m2m_ioctl_streamon helper function for input and output ports Change-Id: I20375259321cc5925ccaf7f8eab95a94f55d2821 Signed-off-by: Deepa Guthyappa Madivalara --- driver/vidc/inc/msm_vidc.h | 3 ++- driver/vidc/inc/msm_vidc_vb2.h | 2 +- driver/vidc/src/msm_vidc.c | 12 ++++++++---- driver/vidc/src/msm_vidc_v4l2.c | 2 +- 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/driver/vidc/inc/msm_vidc.h b/driver/vidc/inc/msm_vidc.h index 0e5c837798..2542a0982b 100644 --- a/driver/vidc/inc/msm_vidc.h +++ b/driver/vidc/inc/msm_vidc.h @@ -33,7 +33,8 @@ int msm_vidc_release_buffer(void *instance, int buffer_type, int msm_vidc_qbuf(void *instance, struct media_device *mdev, struct v4l2_buffer *b); int msm_vidc_dqbuf(void *instance, struct v4l2_buffer *b); -int msm_vidc_streamon(void *instance, enum v4l2_buf_type i); +int msm_vidc_streamon(void *instance, struct file *filp, void *fh, + enum v4l2_buf_type i); int msm_vidc_query_ctrl(void *instance, struct v4l2_queryctrl *ctrl); int msm_vidc_query_menu(void *instance, struct v4l2_querymenu *qmenu); int msm_vidc_streamoff(void *instance, enum v4l2_buf_type i); diff --git a/driver/vidc/inc/msm_vidc_vb2.h b/driver/vidc/inc/msm_vidc_vb2.h index a1f6aef999..3deea03e10 100644 --- a/driver/vidc/inc/msm_vidc_vb2.h +++ b/driver/vidc/inc/msm_vidc_vb2.h @@ -34,7 +34,7 @@ void msm_vb2_unmap_dmabuf(void *buf_priv); int msm_vidc_queue_setup(struct vb2_queue *q, unsigned int *num_buffers, unsigned int *num_planes, unsigned int sizes[], struct device *alloc_devs[]); -int msm_vidc_start_streaming(struct vb2_queue *q, unsigned int count); +int msm_vidc_start_streaming(struct vb2_queue *q, unsigned int i); void msm_vidc_stop_streaming(struct vb2_queue *q); void msm_vidc_buf_queue(struct vb2_buffer *vb2); void msm_vidc_buf_cleanup(struct vb2_buffer *vb); diff --git a/driver/vidc/src/msm_vidc.c b/driver/vidc/src/msm_vidc.c index aa7b9b7bc1..0ff70c3d68 100644 --- a/driver/vidc/src/msm_vidc.c +++ b/driver/vidc/src/msm_vidc.c @@ -5,6 +5,7 @@ #include #include +#include #include "msm_vidc_core.h" #include "msm_vidc_inst.h" #include "msm_vdec.h" @@ -545,7 +546,8 @@ exit: } EXPORT_SYMBOL(msm_vidc_dqbuf); -int msm_vidc_streamon(void *instance, enum v4l2_buf_type type) +int msm_vidc_streamon(void *instance, struct file *filp, void *fh, + enum v4l2_buf_type type) { int rc = 0; struct msm_vidc_inst *inst = instance; @@ -569,10 +571,12 @@ int msm_vidc_streamon(void *instance, enum v4l2_buf_type type) rc = -EINVAL; goto exit; } - - rc = vb2_streamon(inst->bufq[port].vb2q, type); + if (port == INPUT_PORT || port == OUTPUT_PORT) + rc = v4l2_m2m_ioctl_streamon(filp, fh, type); + else + rc = vb2_streamon(inst->bufq[port].vb2q, type); if (rc) { - i_vpr_e(inst, "%s: vb2_streamon(%d) failed, %d\n", + i_vpr_e(inst, "%s: streamon(%d) failed, %d\n", __func__, type, rc); msm_vidc_change_inst_state(inst, MSM_VIDC_ERROR, __func__); goto exit; diff --git a/driver/vidc/src/msm_vidc_v4l2.c b/driver/vidc/src/msm_vidc_v4l2.c index c73c2ac2ad..14688a6b91 100644 --- a/driver/vidc/src/msm_vidc_v4l2.c +++ b/driver/vidc/src/msm_vidc_v4l2.c @@ -443,7 +443,7 @@ int msm_v4l2_streamon(struct file *filp, void *fh, rc = -EBUSY; goto unlock; } - rc = msm_vidc_streamon((void *)inst, i); + rc = msm_vidc_streamon((void *)inst, filp, fh, i); if (rc) goto unlock;