diff --git a/drivers/media/platform/msm/cvp/msm_cvp_core.c b/drivers/media/platform/msm/cvp/msm_cvp_core.c index 059879a20df2..c53c4dda6f6c 100644 --- a/drivers/media/platform/msm/cvp/msm_cvp_core.c +++ b/drivers/media/platform/msm/cvp/msm_cvp_core.c @@ -267,6 +267,11 @@ void *msm_cvp_open(int core_id, int session_type) goto err_invalid_core; } + if (!core->resources.auto_pil && session_type == MSM_CVP_BOOT) { + dprintk(CVP_DBG, "Auto PIL disabled, bypass CVP init at boot"); + goto err_invalid_core; + } + core->resources.max_inst_count = MAX_SUPPORTED_INSTANCES; if (msm_cvp_check_for_inst_overload(core)) { dprintk(CVP_ERR, "Instance num reached Max, rejecting session"); diff --git a/drivers/media/platform/msm/cvp/msm_cvp_platform.c b/drivers/media/platform/msm/cvp/msm_cvp_platform.c index 237ecdcbdd0d..0da95acb8214 100644 --- a/drivers/media/platform/msm/cvp/msm_cvp_platform.c +++ b/drivers/media/platform/msm/cvp/msm_cvp_platform.c @@ -98,6 +98,10 @@ static struct msm_cvp_common_data sm8250_common_data[] = { }; static struct msm_cvp_common_data sm8350_common_data[] = { + { + .key = "qcom,auto-pil", + .value = 0, + }, { .key = "qcom,never-unload-fw", .value = 1, diff --git a/drivers/media/platform/msm/cvp/msm_cvp_res_parse.c b/drivers/media/platform/msm/cvp/msm_cvp_res_parse.c index 07e3df12b9e0..07bd771f5148 100644 --- a/drivers/media/platform/msm/cvp/msm_cvp_res_parse.c +++ b/drivers/media/platform/msm/cvp/msm_cvp_res_parse.c @@ -677,6 +677,9 @@ int cvp_read_platform_resources_from_drv_data( dprintk(CVP_DBG, "Firmware filename: %s\n", res->fw_name); + res->auto_pil = find_key_value(platform_data, + "qcom,aut-pil"); + res->max_load = find_key_value(platform_data, "qcom,max-hw-load"); diff --git a/drivers/media/platform/msm/cvp/msm_cvp_resources.h b/drivers/media/platform/msm/cvp/msm_cvp_resources.h index 7678b2a7a948..27aaa97310ab 100644 --- a/drivers/media/platform/msm/cvp/msm_cvp_resources.h +++ b/drivers/media/platform/msm/cvp/msm_cvp_resources.h @@ -147,6 +147,7 @@ struct msm_cvp_platform_resources { struct reset_set reset_set; bool use_non_secure_pil; bool sw_power_collapsible; + bool auto_pil; struct list_head context_banks; bool thermal_mitigable; const char *fw_name;