mirror of
https://github.com/torvalds/linux
synced 2024-10-07 20:05:15 +00:00
gpiolib: of: Allow "trigger-sources" to reference a GPIO
The "trigger-sources" phandle used for LED triggers are special: the DT bindings mandate that such triggers have the same phandle references no matter what the trigger is. A GPIO is just another kind of device that can trigger a LED. Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
This commit is contained in:
parent
46d0825104
commit
3bb5c9ddf4
|
@ -620,6 +620,33 @@ static struct gpio_desc *of_find_mt2701_gpio(struct device_node *np,
|
|||
return desc;
|
||||
}
|
||||
|
||||
/*
|
||||
* Trigger sources are special, they allow us to use any GPIO as a LED trigger
|
||||
* and have the name "trigger-sources" no matter which kind of phandle it is
|
||||
* pointing to, whether to a GPIO, a USB host, a network PHY etc. So in this case
|
||||
* we allow looking something up that is not named "foo-gpios".
|
||||
*/
|
||||
static struct gpio_desc *of_find_trigger_gpio(struct device_node *np,
|
||||
const char *con_id,
|
||||
unsigned int idx,
|
||||
enum of_gpio_flags *of_flags)
|
||||
{
|
||||
struct gpio_desc *desc;
|
||||
|
||||
if (!IS_ENABLED(CONFIG_LEDS_TRIGGER_GPIO))
|
||||
return ERR_PTR(-ENOENT);
|
||||
|
||||
if (!con_id || strcmp(con_id, "trigger-sources"))
|
||||
return ERR_PTR(-ENOENT);
|
||||
|
||||
desc = of_get_named_gpiod_flags(np, con_id, idx, of_flags);
|
||||
if (!gpiod_not_found(desc))
|
||||
pr_debug("%s is used as a trigger\n", of_node_full_name(np));
|
||||
|
||||
return desc;
|
||||
}
|
||||
|
||||
|
||||
typedef struct gpio_desc *(*of_find_gpio_quirk)(struct device_node *np,
|
||||
const char *con_id,
|
||||
unsigned int idx,
|
||||
|
@ -627,6 +654,7 @@ typedef struct gpio_desc *(*of_find_gpio_quirk)(struct device_node *np,
|
|||
static const of_find_gpio_quirk of_find_gpio_quirks[] = {
|
||||
of_find_gpio_rename,
|
||||
of_find_mt2701_gpio,
|
||||
of_find_trigger_gpio,
|
||||
NULL
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue