aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpio/gpiolib.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpio/gpiolib.c')
-rw-r--r--drivers/gpio/gpiolib.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
index 487afe6f22fc..89c59f5f1924 100644
--- a/drivers/gpio/gpiolib.c
+++ b/drivers/gpio/gpiolib.c
@@ -277,6 +277,9 @@ int gpiochip_add(struct gpio_chip *chip)
277 277
278 spin_unlock_irqrestore(&gpio_lock, flags); 278 spin_unlock_irqrestore(&gpio_lock, flags);
279 279
280 if (status)
281 goto fail;
282
280#ifdef CONFIG_PINCTRL 283#ifdef CONFIG_PINCTRL
281 INIT_LIST_HEAD(&chip->pin_ranges); 284 INIT_LIST_HEAD(&chip->pin_ranges);
282#endif 285#endif
@@ -284,12 +287,12 @@ int gpiochip_add(struct gpio_chip *chip)
284 of_gpiochip_add(chip); 287 of_gpiochip_add(chip);
285 acpi_gpiochip_add(chip); 288 acpi_gpiochip_add(chip);
286 289
287 if (status)
288 goto fail;
289
290 status = gpiochip_export(chip); 290 status = gpiochip_export(chip);
291 if (status) 291 if (status) {
292 acpi_gpiochip_remove(chip);
293 of_gpiochip_remove(chip);
292 goto fail; 294 goto fail;
295 }
293 296
294 pr_debug("%s: registered GPIOs %d to %d on device: %s\n", __func__, 297 pr_debug("%s: registered GPIOs %d to %d on device: %s\n", __func__,
295 chip->base, chip->base + chip->ngpio - 1, 298 chip->base, chip->base + chip->ngpio - 1,