media: venus: helpers: extend set_num_bufs helper with one more argument
authorStanimir Varbanov <stanimir.varbanov@linaro.org>
Thu, 5 Jul 2018 13:03:54 +0000 (09:03 -0400)
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>
Wed, 25 Jul 2018 12:54:27 +0000 (08:54 -0400)
Extend venus_helper_set_num_bufs() helper function with one more
argument to set number of output buffers for the secondary decoder
output.

Signed-off-by: Stanimir Varbanov <stanimir.varbanov@linaro.org>
Reviewed-by: Tomasz Figa <tfiga@chromium.org>
Reviewed-by: Alexandre Courbot <acourbot@chromium.org>
Tested-by: Alexandre Courbot <acourbot@chromium.org>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
drivers/media/platform/qcom/venus/helpers.c
drivers/media/platform/qcom/venus/helpers.h
drivers/media/platform/qcom/venus/vdec.c
drivers/media/platform/qcom/venus/venc.c

index 3cd25e2..13f0bc4 100644 (file)
@@ -515,7 +515,8 @@ int venus_helper_set_core_usage(struct venus_inst *inst, u32 usage)
 EXPORT_SYMBOL_GPL(venus_helper_set_core_usage);
 
 int venus_helper_set_num_bufs(struct venus_inst *inst, unsigned int input_bufs,
-                             unsigned int output_bufs)
+                             unsigned int output_bufs,
+                             unsigned int output2_bufs)
 {
        u32 ptype = HFI_PROPERTY_PARAM_BUFFER_COUNT_ACTUAL;
        struct hfi_buffer_count_actual buf_count;
@@ -531,7 +532,18 @@ int venus_helper_set_num_bufs(struct venus_inst *inst, unsigned int input_bufs,
        buf_count.type = HFI_BUFFER_OUTPUT;
        buf_count.count_actual = output_bufs;
 
-       return hfi_session_set_property(inst, ptype, &buf_count);
+       ret = hfi_session_set_property(inst, ptype, &buf_count);
+       if (ret)
+               return ret;
+
+       if (output2_bufs) {
+               buf_count.type = HFI_BUFFER_OUTPUT2;
+               buf_count.count_actual = output2_bufs;
+
+               ret = hfi_session_set_property(inst, ptype, &buf_count);
+       }
+
+       return ret;
 }
 EXPORT_SYMBOL_GPL(venus_helper_set_num_bufs);
 
index d5e727e..8ff4bd3 100644 (file)
@@ -41,7 +41,8 @@ int venus_helper_set_output_resolution(struct venus_inst *inst,
 int venus_helper_set_work_mode(struct venus_inst *inst, u32 mode);
 int venus_helper_set_core_usage(struct venus_inst *inst, u32 usage);
 int venus_helper_set_num_bufs(struct venus_inst *inst, unsigned int input_bufs,
-                             unsigned int output_bufs);
+                             unsigned int output_bufs,
+                             unsigned int output2_bufs);
 int venus_helper_set_raw_format(struct venus_inst *inst, u32 hfi_format,
                                u32 buftype);
 int venus_helper_set_color_format(struct venus_inst *inst, u32 fmt);
index 99d9459..abbdb8a 100644 (file)
@@ -756,7 +756,7 @@ static int vdec_start_streaming(struct vb2_queue *q, unsigned int count)
                goto deinit_sess;
 
        ret = venus_helper_set_num_bufs(inst, inst->num_input_bufs,
-                                       VB2_MAX_FRAME);
+                                       VB2_MAX_FRAME, VB2_MAX_FRAME);
        if (ret)
                goto deinit_sess;
 
index 5175786..b1d6ac7 100644 (file)
@@ -961,7 +961,7 @@ static int venc_start_streaming(struct vb2_queue *q, unsigned int count)
                goto deinit_sess;
 
        ret = venus_helper_set_num_bufs(inst, inst->num_input_bufs,
-                                       inst->num_output_bufs);
+                                       inst->num_output_bufs, 0);
        if (ret)
                goto deinit_sess;