Commit fad5bf2e authored by Otto Pflüger's avatar Otto Pflüger Committed by Ulf Hansson

pmdomain: qcom: rpmpd: Add QM215 power domains

QM215 is typically paired with a PM8916 PMIC and uses its SMPA1 and
LDOA2 regulators in voltage level mode for VDDCX and VDDMX, respectively.
Signed-off-by: default avatarOtto Pflüger <otto.pflueger@abscue.de>
Reviewed-by: default avatarKonrad Dybcio <konrad.dybcio@linaro.org>
Link: https://lore.kernel.org/r/20231014133823.14088-4-otto.pflueger@abscue.deSigned-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
parent d975a9a9
...@@ -105,6 +105,24 @@ static struct rpmpd cx_s1a_corner_ao = { ...@@ -105,6 +105,24 @@ static struct rpmpd cx_s1a_corner_ao = {
.key = KEY_CORNER, .key = KEY_CORNER,
}; };
static struct rpmpd cx_s1a_lvl_ao;
static struct rpmpd cx_s1a_lvl = {
.pd = { .name = "cx", },
.peer = &cx_s1a_lvl_ao,
.res_type = RPMPD_SMPA,
.res_id = 1,
.key = KEY_LEVEL,
};
static struct rpmpd cx_s1a_lvl_ao = {
.pd = { .name = "cx_ao", },
.peer = &cx_s1a_lvl,
.active_only = true,
.res_type = RPMPD_SMPA,
.res_id = 1,
.key = KEY_LEVEL,
};
static struct rpmpd cx_s2a_corner_ao; static struct rpmpd cx_s2a_corner_ao;
static struct rpmpd cx_s2a_corner = { static struct rpmpd cx_s2a_corner = {
.pd = { .name = "cx", }, .pd = { .name = "cx", },
...@@ -180,6 +198,13 @@ static struct rpmpd cx_s1a_vfc = { ...@@ -180,6 +198,13 @@ static struct rpmpd cx_s1a_vfc = {
.key = KEY_FLOOR_CORNER, .key = KEY_FLOOR_CORNER,
}; };
static struct rpmpd cx_s1a_vfl = {
.pd = { .name = "cx_vfl", },
.res_type = RPMPD_SMPA,
.res_id = 1,
.key = KEY_FLOOR_LEVEL,
};
static struct rpmpd cx_s2a_vfc = { static struct rpmpd cx_s2a_vfc = {
.pd = { .name = "cx_vfc", }, .pd = { .name = "cx_vfc", },
.res_type = RPMPD_SMPA, .res_type = RPMPD_SMPA,
...@@ -239,6 +264,24 @@ static struct rpmpd gx_rwgx0_lvl_ao = { ...@@ -239,6 +264,24 @@ static struct rpmpd gx_rwgx0_lvl_ao = {
}; };
/* MX */ /* MX */
static struct rpmpd mx_l2a_lvl_ao;
static struct rpmpd mx_l2a_lvl = {
.pd = { .name = "mx", },
.peer = &mx_l2a_lvl_ao,
.res_type = RPMPD_LDOA,
.res_id = 2,
.key = KEY_LEVEL,
};
static struct rpmpd mx_l2a_lvl_ao = {
.pd = { .name = "mx_ao", },
.peer = &mx_l2a_lvl,
.active_only = true,
.res_type = RPMPD_LDOA,
.res_id = 2,
.key = KEY_LEVEL,
};
static struct rpmpd mx_l3a_corner_ao; static struct rpmpd mx_l3a_corner_ao;
static struct rpmpd mx_l3a_corner = { static struct rpmpd mx_l3a_corner = {
.pd = { .name = "mx", }, .pd = { .name = "mx", },
...@@ -704,6 +747,20 @@ static const struct rpmpd_desc qcs404_desc = { ...@@ -704,6 +747,20 @@ static const struct rpmpd_desc qcs404_desc = {
.max_state = RPM_SMD_LEVEL_BINNING, .max_state = RPM_SMD_LEVEL_BINNING,
}; };
static struct rpmpd *qm215_rpmpds[] = {
[QM215_VDDCX] = &cx_s1a_lvl,
[QM215_VDDCX_AO] = &cx_s1a_lvl_ao,
[QM215_VDDCX_VFL] = &cx_s1a_vfl,
[QM215_VDDMX] = &mx_l2a_lvl,
[QM215_VDDMX_AO] = &mx_l2a_lvl_ao,
};
static const struct rpmpd_desc qm215_desc = {
.rpmpds = qm215_rpmpds,
.num_pds = ARRAY_SIZE(qm215_rpmpds),
.max_state = RPM_SMD_LEVEL_TURBO,
};
static struct rpmpd *sdm660_rpmpds[] = { static struct rpmpd *sdm660_rpmpds[] = {
[SDM660_VDDCX] = &cx_rwcx0_lvl, [SDM660_VDDCX] = &cx_rwcx0_lvl,
[SDM660_VDDCX_AO] = &cx_rwcx0_lvl_ao, [SDM660_VDDCX_AO] = &cx_rwcx0_lvl_ao,
...@@ -805,6 +862,7 @@ static const struct of_device_id rpmpd_match_table[] = { ...@@ -805,6 +862,7 @@ static const struct of_device_id rpmpd_match_table[] = {
{ .compatible = "qcom,msm8998-rpmpd", .data = &msm8998_desc }, { .compatible = "qcom,msm8998-rpmpd", .data = &msm8998_desc },
{ .compatible = "qcom,qcm2290-rpmpd", .data = &qcm2290_desc }, { .compatible = "qcom,qcm2290-rpmpd", .data = &qcm2290_desc },
{ .compatible = "qcom,qcs404-rpmpd", .data = &qcs404_desc }, { .compatible = "qcom,qcs404-rpmpd", .data = &qcs404_desc },
{ .compatible = "qcom,qm215-rpmpd", .data = &qm215_desc },
{ .compatible = "qcom,sdm660-rpmpd", .data = &sdm660_desc }, { .compatible = "qcom,sdm660-rpmpd", .data = &sdm660_desc },
{ .compatible = "qcom,sm6115-rpmpd", .data = &sm6115_desc }, { .compatible = "qcom,sm6115-rpmpd", .data = &sm6115_desc },
{ .compatible = "qcom,sm6125-rpmpd", .data = &sm6125_desc }, { .compatible = "qcom,sm6125-rpmpd", .data = &sm6125_desc },
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment