- of_node_put(chip->of_node);
- gpiochip_remove_pin_ranges(chip);
+ if (!chip->request) {
-+ status = of_gpiochip_scan_gpios(chip);
++ status = of_gpiochip_scan_gpios(chip, 0, chip->ngpio);
+ if (status) {
+ of_node_put(chip->of_node);
+ gpiochip_remove_pin_ranges(chip);
--- a/drivers/gpio/gpiolib.c
+++ b/drivers/gpio/gpiolib.c
-@@ -1938,7 +1938,8 @@ int gpiochip_add_pingroup_range(struct g
+@@ -1958,7 +1958,8 @@ int gpiochip_add_pingroup_range(struct g
list_add_tail(&pin_range->node, &gdev->pin_ranges);
}
EXPORT_SYMBOL_GPL(gpiochip_add_pingroup_range);
-@@ -1990,7 +1991,7 @@ int gpiochip_add_pin_range(struct gpio_c
+@@ -2010,7 +2011,7 @@ int gpiochip_add_pin_range(struct gpio_c
list_add_tail(&pin_range->node, &gdev->pin_ranges);