]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
gpiolib: Extract mask allocation into subroutine
authorStephen Boyd <swboyd@chromium.org>
Fri, 23 Mar 2018 16:34:50 +0000 (09:34 -0700)
committerLinus Walleij <linus.walleij@linaro.org>
Tue, 27 Mar 2018 13:34:07 +0000 (15:34 +0200)
We're going to use similar code to allocate and set all the bits in a
mask for valid gpios to use. Extract the code from the irqchip version
so it can be reused.

Signed-off-by: Stephen Boyd <swboyd@chromium.org>
Tested-by: Timur Tabi <timur@codeaurora.org>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/gpio/gpiolib.c

index d66de67ef307cef79a03fae9fb586fb3f55be0bf..cc0e1519da459bceb11b88e9567b3f4549131868 100644 (file)
@@ -337,6 +337,20 @@ static int gpiochip_set_desc_names(struct gpio_chip *gc)
        return 0;
 }
 
+static unsigned long *gpiochip_allocate_mask(struct gpio_chip *chip)
+{
+       unsigned long *p;
+
+       p = kcalloc(BITS_TO_LONGS(chip->ngpio), sizeof(long), GFP_KERNEL);
+       if (!p)
+               return NULL;
+
+       /* Assume by default all GPIOs are valid */
+       bitmap_fill(p, chip->ngpio);
+
+       return p;
+}
+
 /*
  * GPIO line handle management
  */
@@ -1506,14 +1520,10 @@ static int gpiochip_irqchip_init_valid_mask(struct gpio_chip *gpiochip)
        if (!gpiochip->irq.need_valid_mask)
                return 0;
 
-       gpiochip->irq.valid_mask = kcalloc(BITS_TO_LONGS(gpiochip->ngpio),
-                                          sizeof(long), GFP_KERNEL);
+       gpiochip->irq.valid_mask = gpiochip_allocate_mask(gpiochip);
        if (!gpiochip->irq.valid_mask)
                return -ENOMEM;
 
-       /* Assume by default all GPIOs are valid */
-       bitmap_fill(gpiochip->irq.valid_mask, gpiochip->ngpio);
-
        return 0;
 }