gpiolib: Unify allocation and initialization of GPIO valid mask
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Sat, 27 May 2023 11:40:57 +0000 (14:40 +0300)
committerBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Thu, 1 Jun 2023 08:00:07 +0000 (10:00 +0200)
Now that the of_gpiochip_add() doesn't use valid mask, we may
unify GPIO valid mask allocation and initialization. With this
it makes a symmetry to the similar which we done for IRQ chip.

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

index 995a468..bb81d94 100644 (file)
@@ -482,18 +482,6 @@ static unsigned int gpiochip_count_reserved_ranges(struct gpio_chip *gc)
        return 0;
 }
 
-static int gpiochip_alloc_valid_mask(struct gpio_chip *gc)
-{
-       if (!(gpiochip_count_reserved_ranges(gc) || gc->init_valid_mask))
-               return 0;
-
-       gc->valid_mask = gpiochip_allocate_mask(gc);
-       if (!gc->valid_mask)
-               return -ENOMEM;
-
-       return 0;
-}
-
 static int gpiochip_apply_reserved_ranges(struct gpio_chip *gc)
 {
        struct device *dev = &gc->gpiodev->dev;
@@ -534,6 +522,13 @@ static int gpiochip_init_valid_mask(struct gpio_chip *gc)
 {
        int ret;
 
+       if (!(gpiochip_count_reserved_ranges(gc) || gc->init_valid_mask))
+               return 0;
+
+       gc->valid_mask = gpiochip_allocate_mask(gc);
+       if (!gc->valid_mask)
+               return -ENOMEM;
+
        ret = gpiochip_apply_reserved_ranges(gc);
        if (ret)
                return ret;
@@ -860,7 +855,7 @@ int gpiochip_add_data_with_key(struct gpio_chip *gc, void *data,
        if (ret)
                goto err_remove_from_list;
 
-       ret = gpiochip_alloc_valid_mask(gc);
+       ret = gpiochip_init_valid_mask(gc);
        if (ret)
                goto err_remove_from_list;
 
@@ -868,10 +863,6 @@ int gpiochip_add_data_with_key(struct gpio_chip *gc, void *data,
        if (ret)
                goto err_free_gpiochip_mask;
 
-       ret = gpiochip_init_valid_mask(gc);
-       if (ret)
-               goto err_remove_of_chip;
-
        for (i = 0; i < gc->ngpio; i++) {
                struct gpio_desc *desc = &gdev->descs[i];