gpiolib: use platform GPIO mappings as fallback
For platforms that use device tree or ACPI as the standard way to look GPIOs up, allow the platform-defined GPIO mappings to be used as a fallback. This may be useful for platforms that need extra GPIOs mappings not defined by the firmware. Signed-off-by: Alexandre Courbot <acourbot@nvidia.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
Родитель
56a39aac59
Коммит
35c5d7fdc4
|
@ -2418,7 +2418,7 @@ struct gpio_desc *__must_check gpiod_get_index(struct device *dev,
|
|||
const char *con_id,
|
||||
unsigned int idx)
|
||||
{
|
||||
struct gpio_desc *desc;
|
||||
struct gpio_desc *desc = NULL;
|
||||
int status;
|
||||
enum gpio_lookup_flags flags = 0;
|
||||
|
||||
|
@ -2431,9 +2431,19 @@ struct gpio_desc *__must_check gpiod_get_index(struct device *dev,
|
|||
} else if (IS_ENABLED(CONFIG_ACPI) && dev && ACPI_HANDLE(dev)) {
|
||||
dev_dbg(dev, "using ACPI for GPIO lookup\n");
|
||||
desc = acpi_find_gpio(dev, con_id, idx, &flags);
|
||||
} else {
|
||||
}
|
||||
|
||||
/*
|
||||
* Either we are not using DT or ACPI, or their lookup did not return
|
||||
* a result. In that case, use platform lookup as a fallback.
|
||||
*/
|
||||
if (!desc || IS_ERR(desc)) {
|
||||
struct gpio_desc *pdesc;
|
||||
dev_dbg(dev, "using lookup tables for GPIO lookup");
|
||||
desc = gpiod_find(dev, con_id, idx, &flags);
|
||||
pdesc = gpiod_find(dev, con_id, idx, &flags);
|
||||
/* If used as fallback, do not replace the previous error */
|
||||
if (!IS_ERR(pdesc) || !desc)
|
||||
desc = pdesc;
|
||||
}
|
||||
|
||||
if (IS_ERR(desc)) {
|
||||
|
|
Загрузка…
Ссылка в новой задаче