Merge "vid_3x: Update codec caps for sdm450 target"
diff --git a/arch/arm64/boot/dts/qcom/sdm450.dtsi b/arch/arm64/boot/dts/qcom/sdm450.dtsi
index 34c6815..67177fb 100644
--- a/arch/arm64/boot/dts/qcom/sdm450.dtsi
+++ b/arch/arm64/boot/dts/qcom/sdm450.dtsi
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2017-2018, 2021 The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -146,3 +146,8 @@
/delete-node/ case-therm-adc;
/delete-node/ case-therm-step;
};
+&soc {
+ qcom,vidc@1d00000 {
+ qcom,max-hw-load = <734400>; /* 1080p@60 dec + 1080p@30 enc */
+ };
+};
diff --git a/drivers/media/platform/msm/vidc_3x/msm_v4l2_vidc.c b/drivers/media/platform/msm/vidc_3x/msm_v4l2_vidc.c
index 9d05086..1c27e08 100644
--- a/drivers/media/platform/msm/vidc_3x/msm_v4l2_vidc.c
+++ b/drivers/media/platform/msm/vidc_3x/msm_v4l2_vidc.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2018, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2012-2018, 2021 The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -627,6 +627,8 @@
vidc_driver->capability_version =
msm_vidc_read_efuse_version(
pdev, core->resources.pf_cap_tbl, "efuse2");
+ if (vidc_driver->capability_version)
+ core->resources.target_version = 1;
rc = call_hfi_op(core->device, core_early_init,
core->device->hfi_device_data);
diff --git a/drivers/media/platform/msm/vidc_3x/msm_vidc_common.c b/drivers/media/platform/msm/vidc_3x/msm_vidc_common.c
index c0efc3b..410482a 100644
--- a/drivers/media/platform/msm/vidc_3x/msm_vidc_common.c
+++ b/drivers/media/platform/msm/vidc_3x/msm_vidc_common.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2019, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2012-2019, 2021 The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -672,7 +672,7 @@
struct msm_vidc_cb_cmd_done *response = data;
struct msm_vidc_core *core;
struct vidc_hal_sys_init_done *sys_init_msg;
- u32 index;
+ u32 index, i;
if (!IS_HAL_SYS_CMD(cmd)) {
dprintk(VIDC_ERR, "%s - invalid cmd\n", __func__);
@@ -718,6 +718,20 @@
memcpy(core->capabilities, sys_init_msg->capabilities,
sys_init_msg->codec_count * sizeof(struct msm_vidc_capability));
+ /* override capabilities for sdm450 */
+ if (core->resources.target_version == 1) {
+ for (i = 0; i < VIDC_MAX_SESSIONS; i++) {
+ if (core->capabilities[i].width.max > HD_WIDTH)
+ core->capabilities[i].width.max = HD_WIDTH;
+ if (core->capabilities[i].height.max > HD_WIDTH)
+ core->capabilities[i].height.max = HD_WIDTH;
+
+ core->capabilities[i].mbs_per_frame.max =
+ NUM_MBS_PER_FRAME(HD_WIDTH, HD_HEIGHT);
+ core->resources.max_inst_count =
+ MAX_SUPPORTED_INSTANCES;
+ }
+ }
dprintk(VIDC_DBG,
"%s: supported_codecs[%d]: enc = %#x, dec = %#x\n",
__func__, core->codec_count, core->enc_codec_supported,
diff --git a/drivers/media/platform/msm/vidc_3x/msm_vidc_internal.h b/drivers/media/platform/msm/vidc_3x/msm_vidc_internal.h
index 7d711aa..9ecad40 100644
--- a/drivers/media/platform/msm/vidc_3x/msm_vidc_internal.h
+++ b/drivers/media/platform/msm/vidc_3x/msm_vidc_internal.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2018, 2020, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2012-2018, 2020,2021 The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -45,6 +45,8 @@
#define MIN_SUPPORTED_WIDTH 32
#define MIN_SUPPORTED_HEIGHT 32
#define DEFAULT_FPS 15
+#define HD_WIDTH 1920
+#define HD_HEIGHT 1088
/* Maintains the number of FTB's between each FBD over a window */
#define DCVS_FTB_WINDOW 32
diff --git a/drivers/media/platform/msm/vidc_3x/msm_vidc_resources.h b/drivers/media/platform/msm/vidc_3x/msm_vidc_resources.h
index 383aeda..eb47242 100644
--- a/drivers/media/platform/msm/vidc_3x/msm_vidc_resources.h
+++ b/drivers/media/platform/msm/vidc_3x/msm_vidc_resources.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013-2018, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2013-2018, 2021 The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -174,6 +174,7 @@
uint32_t imem_size;
enum imem_type imem_type;
uint32_t max_load;
+ uint32_t target_version;
struct platform_device *pdev;
struct regulator_set regulator_set;
struct clock_set clock_set;