Skip to content

Commit fad5bf2

Browse files
affenull2345Ulf Hansson
authored andcommitted
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: Otto Pflüger <otto.pflueger@abscue.de> Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org> Link: https://lore.kernel.org/r/20231014133823.14088-4-otto.pflueger@abscue.de Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
1 parent d975a9a commit fad5bf2

1 file changed

Lines changed: 58 additions & 0 deletions

File tree

drivers/pmdomain/qcom/rpmpd.c

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,24 @@ static struct rpmpd cx_s1a_corner_ao = {
105105
.key = KEY_CORNER,
106106
};
107107

108+
static struct rpmpd cx_s1a_lvl_ao;
109+
static struct rpmpd cx_s1a_lvl = {
110+
.pd = { .name = "cx", },
111+
.peer = &cx_s1a_lvl_ao,
112+
.res_type = RPMPD_SMPA,
113+
.res_id = 1,
114+
.key = KEY_LEVEL,
115+
};
116+
117+
static struct rpmpd cx_s1a_lvl_ao = {
118+
.pd = { .name = "cx_ao", },
119+
.peer = &cx_s1a_lvl,
120+
.active_only = true,
121+
.res_type = RPMPD_SMPA,
122+
.res_id = 1,
123+
.key = KEY_LEVEL,
124+
};
125+
108126
static struct rpmpd cx_s2a_corner_ao;
109127
static struct rpmpd cx_s2a_corner = {
110128
.pd = { .name = "cx", },
@@ -180,6 +198,13 @@ static struct rpmpd cx_s1a_vfc = {
180198
.key = KEY_FLOOR_CORNER,
181199
};
182200

201+
static struct rpmpd cx_s1a_vfl = {
202+
.pd = { .name = "cx_vfl", },
203+
.res_type = RPMPD_SMPA,
204+
.res_id = 1,
205+
.key = KEY_FLOOR_LEVEL,
206+
};
207+
183208
static struct rpmpd cx_s2a_vfc = {
184209
.pd = { .name = "cx_vfc", },
185210
.res_type = RPMPD_SMPA,
@@ -239,6 +264,24 @@ static struct rpmpd gx_rwgx0_lvl_ao = {
239264
};
240265

241266
/* MX */
267+
static struct rpmpd mx_l2a_lvl_ao;
268+
static struct rpmpd mx_l2a_lvl = {
269+
.pd = { .name = "mx", },
270+
.peer = &mx_l2a_lvl_ao,
271+
.res_type = RPMPD_LDOA,
272+
.res_id = 2,
273+
.key = KEY_LEVEL,
274+
};
275+
276+
static struct rpmpd mx_l2a_lvl_ao = {
277+
.pd = { .name = "mx_ao", },
278+
.peer = &mx_l2a_lvl,
279+
.active_only = true,
280+
.res_type = RPMPD_LDOA,
281+
.res_id = 2,
282+
.key = KEY_LEVEL,
283+
};
284+
242285
static struct rpmpd mx_l3a_corner_ao;
243286
static struct rpmpd mx_l3a_corner = {
244287
.pd = { .name = "mx", },
@@ -704,6 +747,20 @@ static const struct rpmpd_desc qcs404_desc = {
704747
.max_state = RPM_SMD_LEVEL_BINNING,
705748
};
706749

750+
static struct rpmpd *qm215_rpmpds[] = {
751+
[QM215_VDDCX] = &cx_s1a_lvl,
752+
[QM215_VDDCX_AO] = &cx_s1a_lvl_ao,
753+
[QM215_VDDCX_VFL] = &cx_s1a_vfl,
754+
[QM215_VDDMX] = &mx_l2a_lvl,
755+
[QM215_VDDMX_AO] = &mx_l2a_lvl_ao,
756+
};
757+
758+
static const struct rpmpd_desc qm215_desc = {
759+
.rpmpds = qm215_rpmpds,
760+
.num_pds = ARRAY_SIZE(qm215_rpmpds),
761+
.max_state = RPM_SMD_LEVEL_TURBO,
762+
};
763+
707764
static struct rpmpd *sdm660_rpmpds[] = {
708765
[SDM660_VDDCX] = &cx_rwcx0_lvl,
709766
[SDM660_VDDCX_AO] = &cx_rwcx0_lvl_ao,
@@ -805,6 +862,7 @@ static const struct of_device_id rpmpd_match_table[] = {
805862
{ .compatible = "qcom,msm8998-rpmpd", .data = &msm8998_desc },
806863
{ .compatible = "qcom,qcm2290-rpmpd", .data = &qcm2290_desc },
807864
{ .compatible = "qcom,qcs404-rpmpd", .data = &qcs404_desc },
865+
{ .compatible = "qcom,qm215-rpmpd", .data = &qm215_desc },
808866
{ .compatible = "qcom,sdm660-rpmpd", .data = &sdm660_desc },
809867
{ .compatible = "qcom,sm6115-rpmpd", .data = &sm6115_desc },
810868
{ .compatible = "qcom,sm6125-rpmpd", .data = &sm6125_desc },

0 commit comments

Comments
 (0)