regulator: tps65090: switch to using devm_fwnode_gpiod_get
authorDmitry Torokhov <dmitry.torokhov@gmail.com>
Fri, 4 Oct 2019 23:10:13 +0000 (16:10 -0700)
committerMark Brown <broonie@kernel.org>
Mon, 7 Oct 2019 13:02:02 +0000 (14:02 +0100)
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.torokhov@gmail.com>
Link: https://lore.kernel.org/r/20191004231017.130290-4-dmitry.torokhov@gmail.com
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/regulator/tps65090-regulator.c

index 10ea4b5a0f55747a45c4a1d7c788b7b2080211bf..f0b660e9f15f059d5624df1e8cd7f75a7320ffca 100644 (file)
@@ -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;