power: pmic: axp: Bind regulators from the DT
authorSamuel Holland <samuel@sholland.org>
Sat, 21 Jan 2023 23:13:06 +0000 (17:13 -0600)
committerAndre Przywara <andre.przywara@arm.com>
Mon, 23 Jan 2023 01:18:31 +0000 (01:18 +0000)
Now that a regulator driver exists for this PMIC, hook it up to the
device tree "regulators" subnodes.

Signed-off-by: Samuel Holland <samuel@sholland.org>
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
drivers/power/pmic/axp.c

index e000599..025dac2 100644 (file)
@@ -45,14 +45,32 @@ static struct dm_pmic_ops axp_pmic_ops = {
        .write          = dm_i2c_write,
 };
 
+static const struct pmic_child_info axp_pmic_child_info[] = {
+       { "aldo",       "axp_regulator" },
+       { "bldo",       "axp_regulator" },
+       { "cldo",       "axp_regulator" },
+       { "dc",         "axp_regulator" },
+       { "dldo",       "axp_regulator" },
+       { "eldo",       "axp_regulator" },
+       { "fldo",       "axp_regulator" },
+       { "ldo",        "axp_regulator" },
+       { "sw",         "axp_regulator" },
+       { }
+};
+
 static int axp_pmic_bind(struct udevice *dev)
 {
+       ofnode regulators_node;
        int ret;
 
        ret = dm_scan_fdt_dev(dev);
        if (ret)
                return ret;
 
+       regulators_node = dev_read_subnode(dev, "regulators");
+       if (ofnode_valid(regulators_node))
+               pmic_bind_children(dev, regulators_node, axp_pmic_child_info);
+
        if (CONFIG_IS_ENABLED(SYSRESET)) {
                ret = device_bind_driver_to_node(dev, "axp_sysreset", "axp_sysreset",
                                                 dev_ofnode(dev), NULL);