gpiolib: of: Use correct fwnode for DT-probed chips
authorThierry Reding <treding@nvidia.com>
Fri, 11 Nov 2022 11:37:32 +0000 (12:37 +0100)
committerBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Tue, 15 Nov 2022 14:38:18 +0000 (15:38 +0100)
The OF node store in chip->fwnode is used to explicitly override the FW
node for a GPIO chip. For chips that use the default FW node (i.e. that
of their parent device), this will be NULL and cause the chip not to be
fully registered.

Instead, use the GPIO device's FW node, which is set to either the node
of the parent device or the explicit override in chip->fwnode.

Fixes: 8afe82550240 ("gpiolib: of: Prepare of_gpiochip_add() / of_gpiochip_remove() for fwnode")
Tested-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Tested-by: Robert Marko <robimarko@gmail.com>
Tested-by: Andrew Halaney <ahalaney@redhat.com>
Reviewed-by: Brian Masney <bmasney@redhat.com>
Tested-by: Brian Masney <bmasney@redhat.com>
Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
drivers/gpio/gpiolib-of.c

index a6871859a59de35a9e3837080a08a598cf2bb69d..4fff7258ee41a6f511d303ff4e5f364ee7a71c80 100644 (file)
@@ -1063,7 +1063,7 @@ int of_gpiochip_add(struct gpio_chip *chip)
        struct device_node *np;
        int ret;
 
-       np = to_of_node(chip->fwnode);
+       np = to_of_node(dev_fwnode(&chip->gpiodev->dev));
        if (!np)
                return 0;