gpiolib: of: Prepare of_gpiochip_add() / of_gpiochip_remove() for fwnode
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Tue, 8 Nov 2022 13:38:52 +0000 (15:38 +0200)
committerBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Wed, 9 Nov 2022 13:10:16 +0000 (14:10 +0100)
GPIO library is getting rid of of_node, fwnode should be utilized instead.
Prepare of_gpiochip_add() / of_gpiochip_remove() for fwnode.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
drivers/gpio/gpiolib-of.c

index be9c34c..000020e 100644 (file)
@@ -1104,9 +1104,11 @@ static int of_gpiochip_add_pin_range(struct gpio_chip *chip) { return 0; }
 
 int of_gpiochip_add(struct gpio_chip *chip)
 {
+       struct device_node *np;
        int ret;
 
-       if (!chip->of_node)
+       np = to_of_node(chip->fwnode);
+       if (!np)
                return 0;
 
        if (!chip->of_xlate) {
@@ -1123,18 +1125,18 @@ int of_gpiochip_add(struct gpio_chip *chip)
        if (ret)
                return ret;
 
-       of_node_get(chip->of_node);
+       fwnode_handle_get(chip->fwnode);
 
        ret = of_gpiochip_scan_gpios(chip);
        if (ret)
-               of_node_put(chip->of_node);
+               fwnode_handle_put(chip->fwnode);
 
        return ret;
 }
 
 void of_gpiochip_remove(struct gpio_chip *chip)
 {
-       of_node_put(chip->of_node);
+       fwnode_handle_put(chip->fwnode);
 }
 
 void of_gpio_dev_init(struct gpio_chip *gc, struct gpio_device *gdev)