video: driver: add power domain and opp table support for video

Added changes to support generic power domain and opp table.
This is an alternative for downstream regulator framework.

power domain can be enabled using below dtsi entries.

power-domains =
    <&videocc MVS0C_GDSC>,
	<&videocc MVS0_GDSC>,
	<&rpmhpd SM8450_MXC>,
	<&rpmhpd SM8450_MMCX>
power-domain-names =
    "iris-ctl", "vcodec", "mx", "mmcx";

Power domain handles willbe parsed at driver side using below api's.
   - dev_pm_domain_attach_by_name()
   - devm_pm_opp_attach_genpd()

devm_pm_opp_attach_genpd() provides consumer virtual device handles
and i.e linked to core->dev using device_link_add().

MXC, MMCX rails wilbe powered up by scaling desired rate using
dev_pm_opp_set_rate().

Change-Id: I3d73434cb772078f031aec7cadc2d42ab930edd0
Signed-off-by: Govindaraj Rajagopal <quic_grajagop@quicinc.com>
This commit is contained in:
Govindaraj Rajagopal
2023-01-06 11:03:55 +05:30
부모 ea34534af0
커밋 ab9b1a112b
15개의 변경된 파일899개의 추가작업 그리고 319개의 파일을 삭제

파일 보기

@@ -17,6 +17,7 @@
#include "msm_vidc_internal.h"
#include "msm_vidc_control_ext.h"
#include "msm_vidc_memory_ext.h"
#include "resources_ext.h"
#include "msm_vidc_iris33.h"
#include "hfi_property.h"
#include "hfi_command.h"
@@ -2646,6 +2647,15 @@ static int msm_vidc_init_data(struct msm_vidc_core *core)
core->platform->data = pineapple_data;
core->mem_ops = get_mem_ops_ext();
if (!core->mem_ops) {
d_vpr_e("%s: invalid memory ext ops\n", __func__);
return -EINVAL;
}
core->res_ops = get_res_ops_ext();
if (!core->res_ops) {
d_vpr_e("%s: invalid resource ext ops\n", __func__);
return -EINVAL;
}
rc = msm_vidc_pineapple_check_ddr_type();
if (rc)
return rc;

파일 보기

@@ -1771,6 +1771,7 @@ static int msm_vidc_init_data(struct msm_vidc_core *core)
d_vpr_h("%s: initialize pineapple data\n", __func__);
core->platform->data = pineapple_data;
rc = msm_vidc_pineapple_check_ddr_type();
if (rc)
return rc;