diff options
author | Linaro CI <ci_notify@linaro.org> | 2021-05-16 22:48:37 +0000 |
---|---|---|
committer | Linaro CI <ci_notify@linaro.org> | 2021-05-16 22:48:37 +0000 |
commit | 962fff007232814818d6b4c7ed95b07124ed62f3 (patch) | |
tree | 161e1e06b2c88a619e038de17089505496ac46c3 | |
parent | 914a1dcff21e8fa46f8738ad47d876ec636dde5a (diff) | |
parent | b23e25dc4321e9163d93c0794681b3df55f76cfd (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/defconfig | 1 | ||||
-rw-r--r-- | drivers/media/platform/qcom/venus/helpers.c | 24 | ||||
-rw-r--r-- | drivers/media/platform/qcom/venus/hfi_venus.c | 1 | ||||
-rw-r--r-- | drivers/media/platform/qcom/venus/vdec.c | 8 |
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); |