Skip to content

Commit 413cfaa

Browse files
committed
Add PM8937 PMIC support
Merge series from Dang Huynh <danct12@riseup.net>: PM8937 is a power management IC. It is used in various boards with MSM8917, MSM8937, MSM8940 and APQ variants.
2 parents e1eb745 + 40e13ae commit 413cfaa

File tree

4 files changed

+91
-0
lines changed

4 files changed

+91
-0
lines changed

Documentation/devicetree/bindings/regulator/qcom,smd-rpm-regulator.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,9 @@ description:
4747
For pm8916, s1, s2, s3, s4, l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11,
4848
l12, l13, l14, l15, l16, l17, l18
4949

50+
For pm8937, s1, s2, s3, s4, l1, l2, l3, l4, l5, l6, l7, l8, l9, l10,
51+
l11, l12, l13, l14, l15, l16, l17, l18, l19, l20, l21, l22, l23
52+
5053
For pm8941, s1, s2, s3, s4, l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11,
5154
l12, l13, l14, l15, l16, l17, l18, l19, l20, l21, l22, l23, l24, lvs1, lvs2,
5255
lvs3, 5vs1, 5vs2
@@ -92,6 +95,7 @@ properties:
9295
- qcom,rpm-pm8841-regulators
9396
- qcom,rpm-pm8909-regulators
9497
- qcom,rpm-pm8916-regulators
98+
- qcom,rpm-pm8937-regulators
9599
- qcom,rpm-pm8941-regulators
96100
- qcom,rpm-pm8950-regulators
97101
- qcom,rpm-pm8953-regulators

Documentation/devicetree/bindings/regulator/qcom,spmi-regulator.yaml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ properties:
2222
- qcom,pm8841-regulators
2323
- qcom,pm8909-regulators
2424
- qcom,pm8916-regulators
25+
- qcom,pm8937-regulators
2526
- qcom,pm8941-regulators
2627
- qcom,pm8950-regulators
2728
- qcom,pm8994-regulators
@@ -291,6 +292,24 @@ allOf:
291292
patternProperties:
292293
"^vdd_s[1-3]-supply$": true
293294

295+
- if:
296+
properties:
297+
compatible:
298+
contains:
299+
enum:
300+
- qcom,pm8937-regulators
301+
then:
302+
properties:
303+
vdd_l1_l19-supply: true
304+
vdd_l20_l21-supply: true
305+
vdd_l2_l23-supply: true
306+
vdd_l3-supply: true
307+
vdd_l4_l5_l6_l7_l16-supply: true
308+
vdd_l8_l11_l12_l17_l22-supply: true
309+
vdd_l9_l10_l13_l14_l15_l18-supply: true
310+
patternProperties:
311+
"^vdd_s[1-6]-supply$": true
312+
294313
- if:
295314
properties:
296315
compatible:

drivers/regulator/qcom_smd-regulator.c

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1012,6 +1012,39 @@ static const struct rpm_regulator_data rpm_pm8916_regulators[] = {
10121012
{}
10131013
};
10141014

1015+
static const struct rpm_regulator_data rpm_pm8937_regulators[] = {
1016+
{ "s1", QCOM_SMD_RPM_SMPA, 1, &pm8994_hfsmps, "vdd_s1" },
1017+
{ "s2", QCOM_SMD_RPM_SMPA, 2, &pm8994_hfsmps, "vdd_s2" },
1018+
{ "s3", QCOM_SMD_RPM_SMPA, 3, &pm8994_hfsmps, "vdd_s3" },
1019+
{ "s4", QCOM_SMD_RPM_SMPA, 4, &pm8994_hfsmps, "vdd_s4" },
1020+
/* S5 - S6 are managed by SPMI */
1021+
1022+
{ "l1", QCOM_SMD_RPM_LDOA, 1, &pm8953_ult_nldo, "vdd_l1_l19" },
1023+
{ "l2", QCOM_SMD_RPM_LDOA, 2, &pm8953_ult_nldo, "vdd_l2_l23" },
1024+
{ "l3", QCOM_SMD_RPM_LDOA, 3, &pm8953_ult_nldo, "vdd_l3" },
1025+
{ "l4", QCOM_SMD_RPM_LDOA, 4, &pm8950_ult_pldo, "vdd_l4_l5_l6_l7_l16" },
1026+
{ "l5", QCOM_SMD_RPM_LDOA, 5, &pm8950_ult_pldo, "vdd_l4_l5_l6_l7_l16" },
1027+
{ "l6", QCOM_SMD_RPM_LDOA, 6, &pm8950_ult_pldo, "vdd_l4_l5_l6_l7_l16" },
1028+
{ "l7", QCOM_SMD_RPM_LDOA, 7, &pm8950_ult_pldo, "vdd_l4_l5_l6_l7_l16" },
1029+
{ "l8", QCOM_SMD_RPM_LDOA, 8, &pm8950_ult_pldo, "vdd_l8_l11_l12_l17_l22" },
1030+
{ "l9", QCOM_SMD_RPM_LDOA, 9, &pm8950_ult_pldo, "vdd_l9_l10_l13_l14_l15_l18" },
1031+
{ "l10", QCOM_SMD_RPM_LDOA, 10, &pm8950_ult_pldo, "vdd_l9_l10_l13_l14_l15_l18"},
1032+
{ "l11", QCOM_SMD_RPM_LDOA, 11, &pm8950_ult_pldo, "vdd_l8_l11_l12_l17_l22" },
1033+
{ "l12", QCOM_SMD_RPM_LDOA, 12, &pm8950_ult_pldo, "vdd_l8_l11_l12_l17_l22" },
1034+
{ "l13", QCOM_SMD_RPM_LDOA, 13, &pm8950_ult_pldo, "vdd_l9_l10_l13_l14_l15_l18" },
1035+
{ "l14", QCOM_SMD_RPM_LDOA, 14, &pm8950_ult_pldo, "vdd_l9_l10_l13_l14_l15_l18" },
1036+
{ "l15", QCOM_SMD_RPM_LDOA, 15, &pm8950_ult_pldo, "vdd_l9_l10_l13_l14_l15_l18" },
1037+
{ "l16", QCOM_SMD_RPM_LDOA, 16, &pm8950_ult_pldo, "vdd_l4_l5_l6_l7_l16" },
1038+
{ "l17", QCOM_SMD_RPM_LDOA, 17, &pm8950_ult_pldo, "vdd_l8_l11_l12_l17_l22" },
1039+
{ "l18", QCOM_SMD_RPM_LDOA, 18, &pm8950_ult_pldo, "vdd_l9_l10_l13_l14_l15_l18" },
1040+
{ "l19", QCOM_SMD_RPM_LDOA, 19, &pm8953_ult_nldo, "vdd_l1_l19" },
1041+
{ "l20", QCOM_SMD_RPM_LDOA, 20, &pm8953_lnldo, "vdd_l20_l21" },
1042+
{ "l21", QCOM_SMD_RPM_LDOA, 21, &pm8953_lnldo, "vdd_l20_l21" },
1043+
{ "l22", QCOM_SMD_RPM_LDOA, 22, &pm8950_ult_pldo, "vdd_l8_l11_l12_l17_l22" },
1044+
{ "l23", QCOM_SMD_RPM_LDOA, 23, &pm8994_nldo, "vdd_l2_l23" },
1045+
{}
1046+
};
1047+
10151048
static const struct rpm_regulator_data rpm_pm8941_regulators[] = {
10161049
{ "s1", QCOM_SMD_RPM_SMPA, 1, &pm8x41_hfsmps, "vdd_s1" },
10171050
{ "s2", QCOM_SMD_RPM_SMPA, 2, &pm8x41_hfsmps, "vdd_s2" },
@@ -1329,6 +1362,7 @@ static const struct of_device_id rpm_of_match[] = {
13291362
{ .compatible = "qcom,rpm-pm8841-regulators", .data = &rpm_pm8841_regulators },
13301363
{ .compatible = "qcom,rpm-pm8909-regulators", .data = &rpm_pm8909_regulators },
13311364
{ .compatible = "qcom,rpm-pm8916-regulators", .data = &rpm_pm8916_regulators },
1365+
{ .compatible = "qcom,rpm-pm8937-regulators", .data = &rpm_pm8937_regulators },
13321366
{ .compatible = "qcom,rpm-pm8941-regulators", .data = &rpm_pm8941_regulators },
13331367
{ .compatible = "qcom,rpm-pm8950-regulators", .data = &rpm_pm8950_regulators },
13341368
{ .compatible = "qcom,rpm-pm8953-regulators", .data = &rpm_pm8953_regulators },

drivers/regulator/qcom_spmi-regulator.c

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2239,6 +2239,39 @@ static const struct spmi_regulator_data pm8916_regulators[] = {
22392239
{ }
22402240
};
22412241

2242+
static const struct spmi_regulator_data pm8937_regulators[] = {
2243+
{ "s1", 0x1400, "vdd_s1", },
2244+
{ "s2", 0x1700, "vdd_s2", },
2245+
{ "s3", 0x1a00, "vdd_s3", },
2246+
{ "s4", 0x1d00, "vdd_s4", },
2247+
{ "s5", 0x2000, "vdd_s5", },
2248+
{ "s6", 0x2300, "vdd_s6", },
2249+
{ "l1", 0x4000, "vdd_l1_l19", },
2250+
{ "l2", 0x4100, "vdd_l2_l23", },
2251+
{ "l3", 0x4200, "vdd_l3", },
2252+
{ "l4", 0x4300, "vdd_l4_l5_l6_l7_l16", },
2253+
{ "l5", 0x4400, "vdd_l4_l5_l6_l7_l16", },
2254+
{ "l6", 0x4500, "vdd_l4_l5_l6_l7_l16", },
2255+
{ "l7", 0x4600, "vdd_l4_l5_l6_l7_l16", },
2256+
{ "l8", 0x4700, "vdd_l8_l11_l12_l17_l22", },
2257+
{ "l9", 0x4800, "vdd_l9_l10_l13_l14_l15_l18", },
2258+
{ "l10", 0x4900, "vdd_l9_l10_l13_l14_l15_l18", },
2259+
{ "l11", 0x4a00, "vdd_l8_l11_l12_l17_l22", },
2260+
{ "l12", 0x4b00, "vdd_l8_l11_l12_l17_l22", },
2261+
{ "l13", 0x4c00, "vdd_l9_l10_l13_l14_l15_l18", },
2262+
{ "l14", 0x4d00, "vdd_l9_l10_l13_l14_l15_l18", },
2263+
{ "l15", 0x4e00, "vdd_l9_l10_l13_l14_l15_l18", },
2264+
{ "l16", 0x4f00, "vdd_l4_l5_l6_l7_l16", },
2265+
{ "l17", 0x5000, "vdd_l8_l11_l12_l17_l22", },
2266+
{ "l18", 0x5100, "vdd_l9_l10_l13_l14_l15_l18", },
2267+
{ "l19", 0x5200, "vdd_l1_l19", },
2268+
{ "l20", 0x5300, "vdd_l20_l21", },
2269+
{ "l21", 0x5400, "vdd_l21_l21", },
2270+
{ "l22", 0x5500, "vdd_l8_l11_l12_l17_l22", },
2271+
{ "l23", 0x5600, "vdd_l2_l23", },
2272+
{ }
2273+
};
2274+
22422275
static const struct spmi_regulator_data pm8941_regulators[] = {
22432276
{ "s1", 0x1400, "vdd_s1", },
22442277
{ "s2", 0x1700, "vdd_s2", },
@@ -2453,6 +2486,7 @@ static const struct of_device_id qcom_spmi_regulator_match[] = {
24532486
{ .compatible = "qcom,pm8841-regulators", .data = &pm8841_regulators },
24542487
{ .compatible = "qcom,pm8909-regulators", .data = &pm8909_regulators },
24552488
{ .compatible = "qcom,pm8916-regulators", .data = &pm8916_regulators },
2489+
{ .compatible = "qcom,pm8937-regulators", .data = &pm8937_regulators },
24562490
{ .compatible = "qcom,pm8941-regulators", .data = &pm8941_regulators },
24572491
{ .compatible = "qcom,pm8950-regulators", .data = &pm8950_regulators },
24582492
{ .compatible = "qcom,pm8994-regulators", .data = &pm8994_regulators },

0 commit comments

Comments
 (0)