devm_gpiod_get_from_of_node() is being retired in favor of
devm_fwnode_gpiod_get_index(), that behaves similar to
devm_gpiod_get_index(), but can work with arbitrary firmware node. It
will also be able to support secondary software nodes.

Let's switch this driver over.

Signed-off-by: Dmitry Torokhov <dmitry.torok...@gmail.com>
---

 drivers/regulator/tps65090-regulator.c | 26 +++++++++++++++-----------
 1 file changed, 15 insertions(+), 11 deletions(-)

diff --git a/drivers/regulator/tps65090-regulator.c 
b/drivers/regulator/tps65090-regulator.c
index 10ea4b5a0f55..f0b660e9f15f 100644
--- a/drivers/regulator/tps65090-regulator.c
+++ b/drivers/regulator/tps65090-regulator.c
@@ -346,16 +346,20 @@ static struct tps65090_platform_data 
*tps65090_parse_dt_reg_data(
        for (idx = 0; idx < ARRAY_SIZE(tps65090_matches); idx++) {
                struct regulator_init_data *ri_data;
                struct tps65090_regulator_plat_data *rpdata;
+               struct device_node *np;
 
                rpdata = &reg_pdata[idx];
                ri_data = tps65090_matches[idx].init_data;
-               if (!ri_data || !tps65090_matches[idx].of_node)
+               if (!ri_data)
+                       continue;
+
+               np = tps65090_matches[idx].of_node;
+               if (!np)
                        continue;
 
                rpdata->reg_init_data = ri_data;
-               rpdata->enable_ext_control = of_property_read_bool(
-                                       tps65090_matches[idx].of_node,
-                                       "ti,enable-ext-control");
+               rpdata->enable_ext_control = of_property_read_bool(np,
+                                               "ti,enable-ext-control");
                if (rpdata->enable_ext_control) {
                        enum gpiod_flags gflags;
 
@@ -366,11 +370,12 @@ static struct tps65090_platform_data 
*tps65090_parse_dt_reg_data(
                                gflags = GPIOD_OUT_LOW;
                        gflags |= GPIOD_FLAGS_BIT_NONEXCLUSIVE;
 
-                       rpdata->gpiod = devm_gpiod_get_from_of_node(&pdev->dev,
-                                                                   
tps65090_matches[idx].of_node,
-                                                                   
"dcdc-ext-control-gpios", 0,
-                                                                   gflags,
-                                                                   "tps65090");
+                       rpdata->gpiod = devm_fwnode_gpiod_get(
+                                                       &pdev->dev,
+                                                       of_fwnode_handle(np),
+                                                       "dcdc-ext-control",
+                                                       gflags,
+                                                       "tps65090");
                        if (PTR_ERR(rpdata->gpiod) == -ENOENT) {
                                dev_err(&pdev->dev,
                                        "could not find DCDC external control 
GPIO\n");
@@ -379,8 +384,7 @@ static struct tps65090_platform_data 
*tps65090_parse_dt_reg_data(
                                return ERR_CAST(rpdata->gpiod);
                }
 
-               if (of_property_read_u32(tps65090_matches[idx].of_node,
-                                        "ti,overcurrent-wait",
+               if (of_property_read_u32(np, "ti,overcurrent-wait",
                                         &rpdata->overcurrent_wait) == 0)
                        rpdata->overcurrent_wait_valid = true;
 
-- 
2.23.0.581.g78d2f28ef7-goog

Reply via email to