mirror of
https://github.com/torvalds/linux.git
synced 2024-11-26 06:02:05 +00:00
gpiolib: Unify allocation and initialization of GPIO valid mask
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>
This commit is contained in:
parent
05a854c565
commit
1a55fc4012
@ -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];
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user