Skip to content

Commit eeecf95

Browse files
Melody Olverabroonie
authored andcommitted
regulator: qcom-rpmh: Update ranges for FTSMPS525
All FTSMPS525 regulators support LV and MV ranges; however, the boot loader firmware will determine which range to use as the device boots. Nonetheless, the driver cannot determine which range was selected, so hardcoding the ranges as either LV or MV will not cover all cases as it's possible for the firmware to select a range not supported by the driver's current hardcoded values. To this end, combine the ranges for the FTSMPS525s into one struct and point all regulators to the updated combined struct. This should work on all boards regardless of which range is selected by the firmware and more accurately caputres the capability of this regulator on a hardware level. Signed-off-by: Melody Olvera <[email protected]> Reviewed-by: Dmitry Baryshkov <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Mark Brown <[email protected]>
1 parent 21ccadc commit eeecf95

File tree

1 file changed

+36
-47
lines changed

1 file changed

+36
-47
lines changed

drivers/regulator/qcom-rpmh-regulator.c

Lines changed: 36 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -843,26 +843,15 @@ static const struct rpmh_vreg_hw_data pmic5_ftsmps520 = {
843843
.of_map_mode = rpmh_regulator_pmic4_smps_of_map_mode,
844844
};
845845

846-
static const struct rpmh_vreg_hw_data pmic5_ftsmps525_lv = {
846+
static const struct rpmh_vreg_hw_data pmic5_ftsmps525 = {
847847
.regulator_type = VRM,
848848
.ops = &rpmh_regulator_vrm_ops,
849849
.voltage_ranges = (struct linear_range[]) {
850850
REGULATOR_LINEAR_RANGE(300000, 0, 267, 4000),
851+
REGULATOR_LINEAR_RANGE(1376000, 268, 438, 8000),
851852
},
852-
.n_linear_ranges = 1,
853-
.n_voltages = 268,
854-
.pmic_mode_map = pmic_mode_map_pmic5_smps,
855-
.of_map_mode = rpmh_regulator_pmic4_smps_of_map_mode,
856-
};
857-
858-
static const struct rpmh_vreg_hw_data pmic5_ftsmps525_mv = {
859-
.regulator_type = VRM,
860-
.ops = &rpmh_regulator_vrm_ops,
861-
.voltage_ranges = (struct linear_range[]) {
862-
REGULATOR_LINEAR_RANGE(600000, 0, 267, 8000),
863-
},
864-
.n_linear_ranges = 1,
865-
.n_voltages = 268,
853+
.n_linear_ranges = 2,
854+
.n_voltages = 439,
866855
.pmic_mode_map = pmic_mode_map_pmic5_smps,
867856
.of_map_mode = rpmh_regulator_pmic4_smps_of_map_mode,
868857
};
@@ -1190,42 +1179,42 @@ static const struct rpmh_vreg_init_data pm8550_vreg_data[] = {
11901179
};
11911180

11921181
static const struct rpmh_vreg_init_data pm8550vs_vreg_data[] = {
1193-
RPMH_VREG("smps1", "smp%s1", &pmic5_ftsmps525_lv, "vdd-s1"),
1194-
RPMH_VREG("smps2", "smp%s2", &pmic5_ftsmps525_lv, "vdd-s2"),
1195-
RPMH_VREG("smps3", "smp%s3", &pmic5_ftsmps525_lv, "vdd-s3"),
1196-
RPMH_VREG("smps4", "smp%s4", &pmic5_ftsmps525_lv, "vdd-s4"),
1197-
RPMH_VREG("smps5", "smp%s5", &pmic5_ftsmps525_lv, "vdd-s5"),
1198-
RPMH_VREG("smps6", "smp%s6", &pmic5_ftsmps525_mv, "vdd-s6"),
1182+
RPMH_VREG("smps1", "smp%s1", &pmic5_ftsmps525, "vdd-s1"),
1183+
RPMH_VREG("smps2", "smp%s2", &pmic5_ftsmps525, "vdd-s2"),
1184+
RPMH_VREG("smps3", "smp%s3", &pmic5_ftsmps525, "vdd-s3"),
1185+
RPMH_VREG("smps4", "smp%s4", &pmic5_ftsmps525, "vdd-s4"),
1186+
RPMH_VREG("smps5", "smp%s5", &pmic5_ftsmps525, "vdd-s5"),
1187+
RPMH_VREG("smps6", "smp%s6", &pmic5_ftsmps525, "vdd-s6"),
11991188
RPMH_VREG("ldo1", "ldo%s1", &pmic5_nldo515, "vdd-l1"),
12001189
RPMH_VREG("ldo2", "ldo%s2", &pmic5_nldo515, "vdd-l2"),
12011190
RPMH_VREG("ldo3", "ldo%s3", &pmic5_nldo515, "vdd-l3"),
12021191
{}
12031192
};
12041193

12051194
static const struct rpmh_vreg_init_data pm8550ve_vreg_data[] = {
1206-
RPMH_VREG("smps1", "smp%s1", &pmic5_ftsmps525_lv, "vdd-s1"),
1207-
RPMH_VREG("smps2", "smp%s2", &pmic5_ftsmps525_lv, "vdd-s2"),
1208-
RPMH_VREG("smps3", "smp%s3", &pmic5_ftsmps525_lv, "vdd-s3"),
1209-
RPMH_VREG("smps4", "smp%s4", &pmic5_ftsmps525_mv, "vdd-s4"),
1210-
RPMH_VREG("smps5", "smp%s5", &pmic5_ftsmps525_lv, "vdd-s5"),
1211-
RPMH_VREG("smps6", "smp%s6", &pmic5_ftsmps525_lv, "vdd-s6"),
1212-
RPMH_VREG("smps7", "smp%s7", &pmic5_ftsmps525_lv, "vdd-s7"),
1213-
RPMH_VREG("smps8", "smp%s8", &pmic5_ftsmps525_lv, "vdd-s8"),
1195+
RPMH_VREG("smps1", "smp%s1", &pmic5_ftsmps525, "vdd-s1"),
1196+
RPMH_VREG("smps2", "smp%s2", &pmic5_ftsmps525, "vdd-s2"),
1197+
RPMH_VREG("smps3", "smp%s3", &pmic5_ftsmps525, "vdd-s3"),
1198+
RPMH_VREG("smps4", "smp%s4", &pmic5_ftsmps525, "vdd-s4"),
1199+
RPMH_VREG("smps5", "smp%s5", &pmic5_ftsmps525, "vdd-s5"),
1200+
RPMH_VREG("smps6", "smp%s6", &pmic5_ftsmps525, "vdd-s6"),
1201+
RPMH_VREG("smps7", "smp%s7", &pmic5_ftsmps525, "vdd-s7"),
1202+
RPMH_VREG("smps8", "smp%s8", &pmic5_ftsmps525, "vdd-s8"),
12141203
RPMH_VREG("ldo1", "ldo%s1", &pmic5_nldo515, "vdd-l1"),
12151204
RPMH_VREG("ldo2", "ldo%s2", &pmic5_nldo515, "vdd-l2"),
12161205
RPMH_VREG("ldo3", "ldo%s3", &pmic5_nldo515, "vdd-l3"),
12171206
{}
12181207
};
12191208

12201209
static const struct rpmh_vreg_init_data pmc8380_vreg_data[] = {
1221-
RPMH_VREG("smps1", "smp%s1", &pmic5_ftsmps525_lv, "vdd-s1"),
1222-
RPMH_VREG("smps2", "smp%s2", &pmic5_ftsmps525_lv, "vdd-s2"),
1223-
RPMH_VREG("smps3", "smp%s3", &pmic5_ftsmps525_lv, "vdd-s3"),
1224-
RPMH_VREG("smps4", "smp%s4", &pmic5_ftsmps525_mv, "vdd-s4"),
1225-
RPMH_VREG("smps5", "smp%s5", &pmic5_ftsmps525_lv, "vdd-s5"),
1226-
RPMH_VREG("smps6", "smp%s6", &pmic5_ftsmps525_lv, "vdd-s6"),
1227-
RPMH_VREG("smps7", "smp%s7", &pmic5_ftsmps525_lv, "vdd-s7"),
1228-
RPMH_VREG("smps8", "smp%s8", &pmic5_ftsmps525_lv, "vdd-s8"),
1210+
RPMH_VREG("smps1", "smp%s1", &pmic5_ftsmps525, "vdd-s1"),
1211+
RPMH_VREG("smps2", "smp%s2", &pmic5_ftsmps525, "vdd-s2"),
1212+
RPMH_VREG("smps3", "smp%s3", &pmic5_ftsmps525, "vdd-s3"),
1213+
RPMH_VREG("smps4", "smp%s4", &pmic5_ftsmps525, "vdd-s4"),
1214+
RPMH_VREG("smps5", "smp%s5", &pmic5_ftsmps525, "vdd-s5"),
1215+
RPMH_VREG("smps6", "smp%s6", &pmic5_ftsmps525, "vdd-s6"),
1216+
RPMH_VREG("smps7", "smp%s7", &pmic5_ftsmps525, "vdd-s7"),
1217+
RPMH_VREG("smps8", "smp%s8", &pmic5_ftsmps525, "vdd-s8"),
12291218
RPMH_VREG("ldo1", "ldo%s1", &pmic5_nldo515, "vdd-l1"),
12301219
RPMH_VREG("ldo2", "ldo%s2", &pmic5_nldo515, "vdd-l2"),
12311220
RPMH_VREG("ldo3", "ldo%s3", &pmic5_nldo515, "vdd-l3"),
@@ -1409,16 +1398,16 @@ static const struct rpmh_vreg_init_data pmx65_vreg_data[] = {
14091398
};
14101399

14111400
static const struct rpmh_vreg_init_data pmx75_vreg_data[] = {
1412-
RPMH_VREG("smps1", "smp%s1", &pmic5_ftsmps525_lv, "vdd-s1"),
1413-
RPMH_VREG("smps2", "smp%s2", &pmic5_ftsmps525_lv, "vdd-s2"),
1414-
RPMH_VREG("smps3", "smp%s3", &pmic5_ftsmps525_lv, "vdd-s3"),
1415-
RPMH_VREG("smps4", "smp%s4", &pmic5_ftsmps525_mv, "vdd-s4"),
1416-
RPMH_VREG("smps5", "smp%s5", &pmic5_ftsmps525_lv, "vdd-s5"),
1417-
RPMH_VREG("smps6", "smp%s6", &pmic5_ftsmps525_lv, "vdd-s6"),
1418-
RPMH_VREG("smps7", "smp%s7", &pmic5_ftsmps525_lv, "vdd-s7"),
1419-
RPMH_VREG("smps8", "smp%s8", &pmic5_ftsmps525_lv, "vdd-s8"),
1420-
RPMH_VREG("smps9", "smp%s9", &pmic5_ftsmps525_lv, "vdd-s9"),
1421-
RPMH_VREG("smps10", "smp%s10", &pmic5_ftsmps525_lv, "vdd-s10"),
1401+
RPMH_VREG("smps1", "smp%s1", &pmic5_ftsmps525, "vdd-s1"),
1402+
RPMH_VREG("smps2", "smp%s2", &pmic5_ftsmps525, "vdd-s2"),
1403+
RPMH_VREG("smps3", "smp%s3", &pmic5_ftsmps525, "vdd-s3"),
1404+
RPMH_VREG("smps4", "smp%s4", &pmic5_ftsmps525, "vdd-s4"),
1405+
RPMH_VREG("smps5", "smp%s5", &pmic5_ftsmps525, "vdd-s5"),
1406+
RPMH_VREG("smps6", "smp%s6", &pmic5_ftsmps525, "vdd-s6"),
1407+
RPMH_VREG("smps7", "smp%s7", &pmic5_ftsmps525, "vdd-s7"),
1408+
RPMH_VREG("smps8", "smp%s8", &pmic5_ftsmps525, "vdd-s8"),
1409+
RPMH_VREG("smps9", "smp%s9", &pmic5_ftsmps525, "vdd-s9"),
1410+
RPMH_VREG("smps10", "smp%s10", &pmic5_ftsmps525, "vdd-s10"),
14221411
RPMH_VREG("ldo1", "ldo%s1", &pmic5_nldo515, "vdd-l1"),
14231412
RPMH_VREG("ldo2", "ldo%s2", &pmic5_nldo515, "vdd-l2-18"),
14241413
RPMH_VREG("ldo3", "ldo%s3", &pmic5_nldo515, "vdd-l3"),

0 commit comments

Comments
 (0)