[PATCH 1/3] regulator: qcom_smd-regulator: fix PM2250 supply parent mappings

From: Rakesh Kota

Date: Fri Jul 17 2026 - 01:33:21 EST


The rpm_pm2250_regulators table hardcodes supply parent name strings
in the regulator descriptor, causing the Linux regulator framework to
look up and vote on parent supplies from APPS. This is both unnecessary
and incorrect for RPM-managed regulators.

On RPM-based platforms, the parent-child supply relationships are
managed entirely by the RPM firmware. The RPM ensures that parent
rails are maintained at the correct voltage with appropriate headroom,
based on all active child rail votes across all subsystems. No explicit
parent supply vote from APPS is required.

Furthermore, the supply rail connections to PMIC pins are fixed in
hardware. The previously hardcoded supply name strings were inaccurate
and did not reflect the actual physical pin connections on PM2250-based
platforms. The correct supply relationships are to be described in the
Device Tree, not hardcoded in the driver.

To avoid unnecessary APPS-side parent supply access while still
allowing correct hardware topology to be described in DT, set the
supply name field to NULL in the regulator descriptor.

Signed-off-by: Rakesh Kota <rakesh.kota@xxxxxxxxxxxxxxxx>
---
drivers/regulator/qcom_smd-regulator.c | 52 +++++++++++++++++-----------------
1 file changed, 26 insertions(+), 26 deletions(-)

diff --git a/drivers/regulator/qcom_smd-regulator.c b/drivers/regulator/qcom_smd-regulator.c
index 23ed594b574e..aed01f18af4a 100644
--- a/drivers/regulator/qcom_smd-regulator.c
+++ b/drivers/regulator/qcom_smd-regulator.c
@@ -800,32 +800,32 @@ static const struct rpm_regulator_data rpm_mp5496_regulators[] = {
};

static const struct rpm_regulator_data rpm_pm2250_regulators[] = {
- { "s1", QCOM_SMD_RPM_SMPA, 1, &pm2250_lvftsmps, "vdd_s1" },
- { "s2", QCOM_SMD_RPM_SMPA, 2, &pm2250_lvftsmps, "vdd_s2" },
- { "s3", QCOM_SMD_RPM_SMPA, 3, &pm2250_lvftsmps, "vdd_s3" },
- { "s4", QCOM_SMD_RPM_SMPA, 4, &pm2250_ftsmps, "vdd_s4" },
- { "l1", QCOM_SMD_RPM_LDOA, 1, &pm660_nldo660, "vdd_l1_l2_l3_l5_l6_l7_l8_l9_l10_l11_l12" },
- { "l2", QCOM_SMD_RPM_LDOA, 2, &pm660_nldo660, "vdd_l1_l2_l3_l5_l6_l7_l8_l9_l10_l11_l12" },
- { "l3", QCOM_SMD_RPM_LDOA, 3, &pm660_nldo660, "vdd_l1_l2_l3_l5_l6_l7_l8_l9_l10_l11_l12" },
- { "l4", QCOM_SMD_RPM_LDOA, 4, &pm660_pldo660, "vdd_l4_l17_l18_l19_l20_l21_l22" },
- { "l5", QCOM_SMD_RPM_LDOA, 5, &pm660_nldo660, "vdd_l1_l2_l3_l5_l6_l7_l8_l9_l10_l11_l12" },
- { "l6", QCOM_SMD_RPM_LDOA, 6, &pm660_nldo660, "vdd_l1_l2_l3_l5_l6_l7_l8_l9_l10_l11_l12" },
- { "l7", QCOM_SMD_RPM_LDOA, 7, &pm660_nldo660, "vdd_l1_l2_l3_l5_l6_l7_l8_l9_l10_l11_l12" },
- { "l8", QCOM_SMD_RPM_LDOA, 8, &pm660_nldo660, "vdd_l1_l2_l3_l5_l6_l7_l8_l9_l10_l11_l12" },
- { "l9", QCOM_SMD_RPM_LDOA, 9, &pm660_nldo660, "vdd_l1_l2_l3_l5_l6_l7_l8_l9_l10_l11_l12" },
- { "l10", QCOM_SMD_RPM_LDOA, 10, &pm660_nldo660, "vdd_l1_l2_l3_l5_l6_l7_l8_l9_l10_l11_l12" },
- { "l11", QCOM_SMD_RPM_LDOA, 11, &pm660_nldo660, "vdd_l1_l2_l3_l5_l6_l7_l8_l9_l10_l11_l12" },
- { "l12", QCOM_SMD_RPM_LDOA, 12, &pm660_nldo660, "vdd_l1_l2_l3_l5_l6_l7_l8_l9_l10_l11_l12" },
- { "l13", QCOM_SMD_RPM_LDOA, 13, &pm660_ht_lvpldo, "vdd_l13_l14_l15_l16" },
- { "l14", QCOM_SMD_RPM_LDOA, 14, &pm660_ht_lvpldo, "vdd_l13_l14_l15_l16" },
- { "l15", QCOM_SMD_RPM_LDOA, 15, &pm660_ht_lvpldo, "vdd_l13_l14_l15_l16" },
- { "l16", QCOM_SMD_RPM_LDOA, 16, &pm660_ht_lvpldo, "vdd_l13_l14_l15_l16" },
- { "l17", QCOM_SMD_RPM_LDOA, 17, &pm660_pldo660, "vdd_l4_l17_l18_l19_l20_l21_l22" },
- { "l18", QCOM_SMD_RPM_LDOA, 18, &pm660_pldo660, "vdd_l4_l17_l18_l19_l20_l21_l22" },
- { "l19", QCOM_SMD_RPM_LDOA, 19, &pm660_pldo660, "vdd_l4_l17_l18_l19_l20_l21_l22" },
- { "l20", QCOM_SMD_RPM_LDOA, 20, &pm660_pldo660, "vdd_l4_l17_l18_l19_l20_l21_l22" },
- { "l21", QCOM_SMD_RPM_LDOA, 21, &pm660_pldo660, "vdd_l4_l17_l18_l19_l20_l21_l22" },
- { "l22", QCOM_SMD_RPM_LDOA, 22, &pm660_pldo660, "vdd_l4_l17_l18_l19_l20_l21_l22" },
+ { "s1", QCOM_SMD_RPM_SMPA, 1, &pm2250_lvftsmps, NULL },
+ { "s2", QCOM_SMD_RPM_SMPA, 2, &pm2250_lvftsmps, NULL },
+ { "s3", QCOM_SMD_RPM_SMPA, 3, &pm2250_lvftsmps, NULL },
+ { "s4", QCOM_SMD_RPM_SMPA, 4, &pm2250_ftsmps, NULL },
+ { "l1", QCOM_SMD_RPM_LDOA, 1, &pm660_nldo660, NULL },
+ { "l2", QCOM_SMD_RPM_LDOA, 2, &pm660_nldo660, NULL },
+ { "l3", QCOM_SMD_RPM_LDOA, 3, &pm660_nldo660, NULL },
+ { "l4", QCOM_SMD_RPM_LDOA, 4, &pm660_pldo660, NULL },
+ { "l5", QCOM_SMD_RPM_LDOA, 5, &pm660_nldo660, NULL },
+ { "l6", QCOM_SMD_RPM_LDOA, 6, &pm660_nldo660, NULL },
+ { "l7", QCOM_SMD_RPM_LDOA, 7, &pm660_nldo660, NULL },
+ { "l8", QCOM_SMD_RPM_LDOA, 8, &pm660_nldo660, NULL },
+ { "l9", QCOM_SMD_RPM_LDOA, 9, &pm660_nldo660, NULL },
+ { "l10", QCOM_SMD_RPM_LDOA, 10, &pm660_nldo660, NULL },
+ { "l11", QCOM_SMD_RPM_LDOA, 11, &pm660_nldo660, NULL },
+ { "l12", QCOM_SMD_RPM_LDOA, 12, &pm660_nldo660, NULL },
+ { "l13", QCOM_SMD_RPM_LDOA, 13, &pm660_ht_lvpldo, NULL },
+ { "l14", QCOM_SMD_RPM_LDOA, 14, &pm660_ht_lvpldo, NULL },
+ { "l15", QCOM_SMD_RPM_LDOA, 15, &pm660_ht_lvpldo, NULL },
+ { "l16", QCOM_SMD_RPM_LDOA, 16, &pm660_ht_lvpldo, NULL },
+ { "l17", QCOM_SMD_RPM_LDOA, 17, &pm660_pldo660, NULL },
+ { "l18", QCOM_SMD_RPM_LDOA, 18, &pm660_pldo660, NULL },
+ { "l19", QCOM_SMD_RPM_LDOA, 19, &pm660_pldo660, NULL },
+ { "l20", QCOM_SMD_RPM_LDOA, 20, &pm660_pldo660, NULL },
+ { "l21", QCOM_SMD_RPM_LDOA, 21, &pm660_pldo660, NULL },
+ { "l22", QCOM_SMD_RPM_LDOA, 22, &pm660_pldo660, NULL },
{}
};


--
2.34.1