gpiolib: of: Prepare of_gpiochip_add() / of_gpiochip_remove() for fwnode

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>
This commit is contained in:
Andy Shevchenko 2022-11-08 15:38:52 +02:00 committed by Bartosz Golaszewski
parent 2fe8e1dcf9
commit 8afe825502

View 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)