diff options
author | Sebastian Reichel <sebastian.reichel@collabora.com> | 2023-05-04 19:36:16 +0200 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2023-05-23 19:01:57 +0100 |
commit | 5111c931f36cebe77d4ce66964c348e6eb4afca0 (patch) | |
tree | 26076ec4d4b4e89d5e1a76cf31d4525f63560653 /drivers/regulator | |
parent | 1b9e86d445a0f5c6d8dcbaf11508cb5dfb5848a8 (diff) | |
download | linux-stable-5111c931f36cebe77d4ce66964c348e6eb4afca0.tar.gz linux-stable-5111c931f36cebe77d4ce66964c348e6eb4afca0.tar.bz2 linux-stable-5111c931f36cebe77d4ce66964c348e6eb4afca0.zip |
regulator: rk808: cleanup parent device usage
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>
Diffstat (limited to 'drivers/regulator')
-rw-r--r-- | drivers/regulator/rk808-regulator.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/drivers/regulator/rk808-regulator.c b/drivers/regulator/rk808-regulator.c index 80ba782d8923..71a1ca8b917e 100644 --- a/drivers/regulator/rk808-regulator.c +++ b/drivers/regulator/rk808-regulator.c @@ -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; |