diff options
| author | Marek Vasut <[email protected]> | 2025-03-22 02:44:40 +0100 |
|---|---|---|
| committer | Peng Fan <[email protected]> | 2025-04-23 11:28:12 +0800 |
| commit | 2a8e7ea4f948e3de7033b297fd827fe082cd63da (patch) | |
| tree | 4c0e030520805ec377163b1f3d96eb1696adfc39 /drivers/power | |
| parent | 991c9530fc0d52229e6196f6be2dd6e1ef17857c (diff) | |
power: regulator: scmi: Move regulator subnode hack to scmi_regulator
The current code attempts to bind scmi_voltage_domain to regulator subnode
of the SCMI protocol node, so scmi_voltage_domain can then bind regulators
directly to subnodes of its node. This kind of behavior should not be in
core code, move it into scmi_voltage_domain driver code. Let the driver
descend into regulator node and bind regulators to its subnodes.
Fixes: 1f213ee4dbf2 ("firmware: scmi: voltage regulator")
Signed-off-by: Marek Vasut <[email protected]>
[Alice Guo: Fix scmi_regulator_bind]
Signed-off-by: Peng Fan <[email protected]>
Diffstat (limited to 'drivers/power')
| -rw-r--r-- | drivers/power/regulator/scmi_regulator.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/power/regulator/scmi_regulator.c b/drivers/power/regulator/scmi_regulator.c index 99f6506f162..79db1a6a8aa 100644 --- a/drivers/power/regulator/scmi_regulator.c +++ b/drivers/power/regulator/scmi_regulator.c @@ -175,12 +175,19 @@ U_BOOT_DRIVER(scmi_regulator) = { static int scmi_regulator_bind(struct udevice *dev) { struct driver *drv; + ofnode regul_node; ofnode node; int ret; + regul_node = ofnode_find_subnode(dev_ofnode(dev), "regulators"); + if (!ofnode_valid(regul_node)) { + dev_err(dev, "no regulators node\n"); + return -ENXIO; + } + drv = DM_DRIVER_GET(scmi_regulator); - ofnode_for_each_subnode(node, dev_ofnode(dev)) { + ofnode_for_each_subnode(node, regul_node) { ret = device_bind(dev, drv, ofnode_get_name(node), NULL, node, NULL); if (ret) |
