aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinaro CI <ci_notify@linaro.org>2021-05-16 22:48:37 +0000
committerLinaro CI <ci_notify@linaro.org>2021-05-16 22:48:37 +0000
commit962fff007232814818d6b4c7ed95b07124ed62f3 (patch)
tree161e1e06b2c88a619e038de17089505496ac46c3
parent914a1dcff21e8fa46f8738ad47d876ec636dde5a (diff)
parentb23e25dc4321e9163d93c0794681b3df55f76cfd (diff)
Merge remote-tracking branch 'sm8250-venus/tracking-qcomlt-sm8250-venus' into integration-linux-qcomlt
# Conflicts: # drivers/media/platform/qcom/venus/core.c # drivers/media/platform/qcom/venus/core.h # drivers/media/platform/qcom/venus/helpers.c # drivers/media/platform/qcom/venus/hfi_cmds.c # drivers/media/platform/qcom/venus/hfi_venus.c # drivers/media/platform/qcom/venus/pm_helpers.c # drivers/media/platform/qcom/venus/vdec.c # drivers/media/platform/qcom/venus/vdec_ctrls.c # drivers/media/platform/qcom/venus/venc_ctrls.c # drivers/media/v4l2-core/v4l2-ctrls.c # include/uapi/linux/v4l2-controls.h
-rw-r--r--arch/arm64/configs/defconfig1
-rw-r--r--drivers/media/platform/qcom/venus/helpers.c24
-rw-r--r--drivers/media/platform/qcom/venus/hfi_venus.c1
-rw-r--r--drivers/media/platform/qcom/venus/vdec.c8
4 files changed, 20 insertions, 14 deletions
diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig
index aa8b9b5e3f9e..fcd258c81c4f 100644
--- a/arch/arm64/configs/defconfig
+++ b/arch/arm64/configs/defconfig
@@ -1019,6 +1019,7 @@ CONFIG_SM_GCC_8350=y
CONFIG_SM_GPUCC_8150=y
CONFIG_SM_GPUCC_8250=y
CONFIG_SM_DISPCC_8250=y
+CONFIG_SM_VIDEOCC_8250=y
CONFIG_QCOM_HFPLL=y
CONFIG_CLK_GFM_LPASS_SM8250=y
CONFIG_HWSPINLOCK=y
diff --git a/drivers/media/platform/qcom/venus/helpers.c b/drivers/media/platform/qcom/venus/helpers.c
index b813d6dba481..dc8ef13d0c95 100644
--- a/drivers/media/platform/qcom/venus/helpers.c
+++ b/drivers/media/platform/qcom/venus/helpers.c
@@ -1099,17 +1099,19 @@ static u32 venus_helper_get_work_mode(struct venus_inst *inst)
u32 num_mbs;
mode = VIDC_WORK_MODE_2;
- if (inst->session_type == VIDC_SESSION_TYPE_DEC) {
- num_mbs = (ALIGN(inst->height, 16) * ALIGN(inst->width, 16)) / 256;
- if (inst->hfi_codec == HFI_VIDEO_CODEC_MPEG2 ||
- inst->pic_struct != HFI_INTERLACE_FRAME_PROGRESSIVE ||
- num_mbs <= NUM_MBS_720P)
- mode = VIDC_WORK_MODE_1;
- } else {
- num_mbs = (ALIGN(inst->out_height, 16) * ALIGN(inst->out_width, 16)) / 256;
- if (inst->hfi_codec == HFI_VIDEO_CODEC_VP8 &&
- num_mbs <= NUM_MBS_4K)
- mode = VIDC_WORK_MODE_1;
+ if (IS_V6(inst->core)) {
+ if (inst->session_type == VIDC_SESSION_TYPE_DEC) {
+ num_mbs = (ALIGN(inst->height, 16) * ALIGN(inst->width, 16)) / 256;
+ if (inst->hfi_codec == HFI_VIDEO_CODEC_MPEG2 ||
+ inst->pic_struct != HFI_INTERLACE_FRAME_PROGRESSIVE ||
+ num_mbs <= NUM_MBS_720P)
+ mode = VIDC_WORK_MODE_1;
+ } else {
+ num_mbs = (ALIGN(inst->out_height, 16) * ALIGN(inst->out_width, 16)) / 256;
+ if (inst->hfi_codec == HFI_VIDEO_CODEC_VP8 &&
+ num_mbs <= NUM_MBS_4K)
+ mode = VIDC_WORK_MODE_1;
+ }
}
return mode;
diff --git a/drivers/media/platform/qcom/venus/hfi_venus.c b/drivers/media/platform/qcom/venus/hfi_venus.c
index ce98c523b3c6..d926f613640b 100644
--- a/drivers/media/platform/qcom/venus/hfi_venus.c
+++ b/drivers/media/platform/qcom/venus/hfi_venus.c
@@ -562,6 +562,7 @@ static int venus_halt_axi(struct venus_hfi_device *hdev)
mask_val = (BIT(2) | BIT(1) | BIT(0));
writel(mask_val, wrapper_base + WRAPPER_DEBUG_BRIDGE_LPI_CONTROL_V6);
+ udelay(100);
writel(0x00, wrapper_base + WRAPPER_DEBUG_BRIDGE_LPI_CONTROL_V6);
ret = readl_poll_timeout(wrapper_base + WRAPPER_DEBUG_BRIDGE_LPI_STATUS_V6,
diff --git a/drivers/media/platform/qcom/venus/vdec.c b/drivers/media/platform/qcom/venus/vdec.c
index ddb7cd39424e..1e5a1164cb18 100644
--- a/drivers/media/platform/qcom/venus/vdec.c
+++ b/drivers/media/platform/qcom/venus/vdec.c
@@ -718,9 +718,11 @@ static int vdec_output_conf(struct venus_inst *inst)
if (ret)
return ret;
- ret = venus_helper_set_format_constraints(inst);
- if (ret)
- return ret;
+ if (IS_V6(inst->core)) {
+ ret = venus_helper_set_format_constraints(inst);
+ if (ret)
+ return ret;
+ }
if (inst->dpb_fmt) {
ret = venus_helper_set_multistream(inst, false, true);