regulator: rk808: cleanup parent device usage
authorSebastian Reichel <sebastian.reichel@collabora.com>
Thu, 4 May 2023 17:36:16 +0000 (19:36 +0200)
committerMark Brown <broonie@kernel.org>
Tue, 23 May 2023 18:01:57 +0000 (19:01 +0100)
By overridering the device's of_node a bit earlier we can
get the GPIOs and any other DT properties from our own
device instead of relying on the parent device.

Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Link: https://lore.kernel.org/r/20230504173618.142075-13-sebastian.reichel@collabora.com
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/regulator/rk808-regulator.c

index 80ba782..71a1ca8 100644 (file)
@@ -1245,20 +1245,19 @@ static const struct regulator_desc rk818_reg[] = {
 };
 
 static int rk808_regulator_dt_parse_pdata(struct device *dev,
-                                  struct device *client_dev,
                                   struct regmap *map,
                                   struct rk808_regulator_data *pdata)
 {
        struct device_node *np;
        int tmp, ret = 0, i;
 
-       np = of_get_child_by_name(client_dev->of_node, "regulators");
+       np = of_get_child_by_name(dev->of_node, "regulators");
        if (!np)
                return -ENXIO;
 
        for (i = 0; i < ARRAY_SIZE(pdata->dvs_gpio); i++) {
                pdata->dvs_gpio[i] =
-                       devm_gpiod_get_index_optional(client_dev, "dvs", i,
+                       devm_gpiod_get_index_optional(dev, "dvs", i,
                                                      GPIOD_OUT_LOW);
                if (IS_ERR(pdata->dvs_gpio[i])) {
                        ret = PTR_ERR(pdata->dvs_gpio[i]);
@@ -1292,6 +1291,9 @@ static int rk808_regulator_probe(struct platform_device *pdev)
        struct regmap *regmap;
        int ret, i, nregulators;
 
+       pdev->dev.of_node = pdev->dev.parent->of_node;
+       pdev->dev.of_node_reused = true;
+
        regmap = dev_get_regmap(pdev->dev.parent, NULL);
        if (!regmap)
                return -ENODEV;
@@ -1300,8 +1302,7 @@ static int rk808_regulator_probe(struct platform_device *pdev)
        if (!pdata)
                return -ENOMEM;
 
-       ret = rk808_regulator_dt_parse_pdata(&pdev->dev, pdev->dev.parent,
-                                            regmap, pdata);
+       ret = rk808_regulator_dt_parse_pdata(&pdev->dev, regmap, pdata);
        if (ret < 0)
                return ret;
 
@@ -1335,8 +1336,6 @@ static int rk808_regulator_probe(struct platform_device *pdev)
        }
 
        config.dev = &pdev->dev;
-       config.dev->of_node = pdev->dev.parent->of_node;
-       config.dev->of_node_reused = true;
        config.driver_data = pdata;
        config.regmap = regmap;