Эх сурвалжийг харах

Merge "video: driver: utilize v4l2_m2m_ioctl_streamon helper function"

qctecmdr 3 жил өмнө
parent
commit
d10f2f9108

+ 2 - 1
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);

+ 1 - 1
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);

+ 8 - 4
driver/vidc/src/msm_vidc.c

@@ -5,6 +5,7 @@
 
 #include <linux/types.h>
 #include <linux/hash.h>
+#include <media/v4l2-mem2mem.h>
 #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;

+ 1 - 1
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;