Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

regulator: qcom_smd: Add PMR735a regulators

PMR735a is already supported in the RPMH regulator driver, but
there are cases where it's bundled with SMD RPM SoCs. Port it over
to qcom_smd-regulator to enable usage in such cases.

Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Link: https://lore.kernel.org/r/20221109110846.45789-2-konrad.dybcio@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>

authored by

Konrad Dybcio and committed by
Mark Brown
0cda8c43 3078d0c3

+26
+24
drivers/regulator/qcom_smd-regulator.c
··· 677 677 .ops = &rpm_smps_ldo_ops, 678 678 }; 679 679 680 + static const struct regulator_desc pmic5_ftsmps520 = { 681 + .linear_ranges = (struct linear_range[]) { 682 + REGULATOR_LINEAR_RANGE(300000, 0, 263, 4000), 683 + }, 684 + .n_linear_ranges = 1, 685 + .n_voltages = 264, 686 + .ops = &rpm_smps_ldo_ops, 687 + }; 688 + 680 689 static const struct regulator_desc pms405_hfsmps3 = { 681 690 .linear_ranges = (struct linear_range[]) { 682 691 REGULATOR_LINEAR_RANGE(320000, 0, 215, 8000), ··· 1274 1265 {} 1275 1266 }; 1276 1267 1268 + static const struct rpm_regulator_data rpm_pmr735a_regulators[] = { 1269 + { "s1", QCOM_SMD_RPM_SMPE, 1, &pmic5_ftsmps520, "vdd_s1"}, 1270 + { "s2", QCOM_SMD_RPM_SMPE, 2, &pmic5_ftsmps520, "vdd_s2"}, 1271 + { "s3", QCOM_SMD_RPM_SMPE, 3, &pms405_hfsmps3, "vdd_s3"}, 1272 + { "l1", QCOM_SMD_RPM_LDOE, 1, &pm660_nldo660, "vdd_l1_l2"}, 1273 + { "l2", QCOM_SMD_RPM_LDOE, 2, &pm660_nldo660, "vdd_l1_l2"}, 1274 + { "l3", QCOM_SMD_RPM_LDOE, 3, &pm660_nldo660, "vdd_l3"}, 1275 + { "l4", QCOM_SMD_RPM_LDOE, 4, &pm660_ht_lvpldo, "vdd_l4"}, 1276 + { "l5", QCOM_SMD_RPM_LDOE, 5, &pm660_nldo660, "vdd_l5_l6"}, 1277 + { "l6", QCOM_SMD_RPM_LDOE, 6, &pm660_nldo660, "vdd_l5_l6"}, 1278 + { "l7", QCOM_SMD_RPM_LDOE, 7, &pm660_pldo660, "vdd_l7_bob"}, 1279 + {} 1280 + }; 1281 + 1277 1282 static const struct rpm_regulator_data rpm_pms405_regulators[] = { 1278 1283 { "s1", QCOM_SMD_RPM_SMPA, 1, &pms405_hfsmps3, "vdd_s1" }, 1279 1284 { "s2", QCOM_SMD_RPM_SMPA, 2, &pms405_hfsmps3, "vdd_s2" }, ··· 1328 1305 { .compatible = "qcom,rpm-pma8084-regulators", .data = &rpm_pma8084_regulators }, 1329 1306 { .compatible = "qcom,rpm-pmi8994-regulators", .data = &rpm_pmi8994_regulators }, 1330 1307 { .compatible = "qcom,rpm-pmi8998-regulators", .data = &rpm_pmi8998_regulators }, 1308 + { .compatible = "qcom,rpm-pmr735a-regulators", .data = &rpm_pmr735a_regulators }, 1331 1309 { .compatible = "qcom,rpm-pms405-regulators", .data = &rpm_pms405_regulators }, 1332 1310 {} 1333 1311 };
+2
include/linux/soc/qcom/smd-rpm.h
··· 19 19 #define QCOM_SMD_RPM_CLK_BUF_A 0x616B6C63 20 20 #define QCOM_SMD_RPM_LDOA 0x616f646c 21 21 #define QCOM_SMD_RPM_LDOB 0x626F646C 22 + #define QCOM_SMD_RPM_LDOE 0x656f646c 22 23 #define QCOM_SMD_RPM_RWCX 0x78637772 23 24 #define QCOM_SMD_RPM_RWMX 0x786d7772 24 25 #define QCOM_SMD_RPM_RWLC 0x636c7772 ··· 33 32 #define QCOM_SMD_RPM_QUP_CLK 0x707571 34 33 #define QCOM_SMD_RPM_SMPA 0x61706d73 35 34 #define QCOM_SMD_RPM_SMPB 0x62706d73 35 + #define QCOM_SMD_RPM_SMPE 0x65706d73 36 36 #define QCOM_SMD_RPM_SPDM 0x63707362 37 37 #define QCOM_SMD_RPM_VSA 0x00617376 38 38 #define QCOM_SMD_RPM_MMAXI_CLK 0x69786d6d