summaryrefslogtreecommitdiffstats
path: root/drivers/media/platform/qcom
diff options
context:
space:
mode:
authorStanimir Varbanov2018-07-05 15:03:57 +0200
committerMauro Carvalho Chehab2018-07-25 14:59:16 +0200
commitea8ce23513afec48c690b408ac06a6fd695d057a (patch)
tree55de7e64bfae72892aa2f5307491ab44cb9788e4 /drivers/media/platform/qcom
parentmedia: venus: vdec: get required input buffers as well (diff)
downloadkernel-qcow2-linux-ea8ce23513afec48c690b408ac06a6fd695d057a.tar.gz
kernel-qcow2-linux-ea8ce23513afec48c690b408ac06a6fd695d057a.tar.xz
kernel-qcow2-linux-ea8ce23513afec48c690b408ac06a6fd695d057a.zip
media: venus: vdec: a new function for output configuration
Make a new function vdec_output_conf() for decoder output configuration. vdec_output_conf() will set properties via HFI interface related to the output configuration, and keep vdec_set_properties() which will set properties related to decoding parameters. 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>
Diffstat (limited to 'drivers/media/platform/qcom')
-rw-r--r--drivers/media/platform/qcom/venus/vdec.c34
1 files changed, 19 insertions, 15 deletions
diff --git a/drivers/media/platform/qcom/venus/vdec.c b/drivers/media/platform/qcom/venus/vdec.c
index 927b9d97fe4d..125f56e7ab1c 100644
--- a/drivers/media/platform/qcom/venus/vdec.c
+++ b/drivers/media/platform/qcom/venus/vdec.c
@@ -543,6 +543,22 @@ static const struct v4l2_ioctl_ops vdec_ioctl_ops = {
static int vdec_set_properties(struct venus_inst *inst)
{
struct vdec_controls *ctr = &inst->controls.dec;
+ struct hfi_enable en = { .enable = 1 };
+ u32 ptype;
+ int ret;
+
+ if (ctr->post_loop_deb_mode) {
+ ptype = HFI_PROPERTY_CONFIG_VDEC_POST_LOOP_DEBLOCKER;
+ ret = hfi_session_set_property(inst, ptype, &en);
+ if (ret)
+ return ret;
+ }
+
+ return 0;
+}
+
+static int vdec_output_conf(struct venus_inst *inst)
+{
struct venus_core *core = inst->core;
struct hfi_enable en = { .enable = 1 };
u32 ptype;
@@ -567,14 +583,6 @@ static int vdec_set_properties(struct venus_inst *inst)
if (ret)
return ret;
- if (ctr->post_loop_deb_mode) {
- ptype = HFI_PROPERTY_CONFIG_VDEC_POST_LOOP_DEBLOCKER;
- en.enable = 1;
- ret = hfi_session_set_property(inst, ptype, &en);
- if (ret)
- return ret;
- }
-
return 0;
}
@@ -722,7 +730,6 @@ static int vdec_verify_conf(struct venus_inst *inst)
static int vdec_start_streaming(struct vb2_queue *q, unsigned int count)
{
struct venus_inst *inst = vb2_get_drv_priv(q);
- struct venus_core *core = inst->core;
int ret;
mutex_lock(&inst->lock);
@@ -751,12 +758,9 @@ static int vdec_start_streaming(struct vb2_queue *q, unsigned int count)
if (ret)
goto deinit_sess;
- if (core->res->hfi_version == HFI_VERSION_3XX) {
- ret = venus_helper_set_bufsize(inst, inst->output_buf_size,
- HFI_BUFFER_OUTPUT);
- if (ret)
- goto deinit_sess;
- }
+ ret = vdec_output_conf(inst);
+ if (ret)
+ goto deinit_sess;
ret = vdec_verify_conf(inst);
if (ret)