mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-26 10:49:33 +00:00
gpiolib: request the gpio before querying its direction
Before querying a GPIO to determine its direction, the GPIO should be formally requested. This allows the GPIO driver to block access to unavailable GPIOs, which makes it easier for some drivers to support sparse GPIO maps. Signed-off-by: Timur Tabi <timur@codeaurora.org> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
parent
b2dc4110cb
commit
108d23e322
1 changed files with 11 additions and 0 deletions
|
@ -1201,6 +1201,14 @@ int gpiochip_add_data(struct gpio_chip *chip, void *data)
|
|||
struct gpio_desc *desc = &gdev->descs[i];
|
||||
|
||||
desc->gdev = gdev;
|
||||
|
||||
if (chip->request) {
|
||||
status = chip->request(chip, i);
|
||||
if (status < 0)
|
||||
/* The GPIO is unavailable, so skip it */
|
||||
continue;
|
||||
}
|
||||
|
||||
/*
|
||||
* REVISIT: most hardware initializes GPIOs as inputs
|
||||
* (often with pullups enabled) so power usage is
|
||||
|
@ -1226,6 +1234,9 @@ int gpiochip_add_data(struct gpio_chip *chip, void *data)
|
|||
*/
|
||||
set_bit(FLAG_IS_OUT, &desc->flags);
|
||||
}
|
||||
|
||||
if (chip->free)
|
||||
chip->free(chip, i);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PINCTRL
|
||||
|
|
Loading…
Reference in a new issue