Re: [PATCH 5/9] gpio: vf610: Extend with wakeup support
From: Stefan Agner <stefan@agner.ch>
Date: 2014-09-24 16:51:57
Also in:
linux-arm-kernel, lkml
Am 2014-09-24 12:06, schrieb Lucas Stach:
Hi Stefan, Am Montag, den 22.09.2014, 19:09 +0200 schrieb Stefan Agner:quoted
Support Vybrid GPIO's as wakeup source by requesting the parent IRQ as wakeup IRQ. Signed-off-by: Stefan Agner <stefan@agner.ch> --- drivers/gpio/gpio-vf610.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+)diff --git a/drivers/gpio/gpio-vf610.c b/drivers/gpio/gpio-vf610.c index 5f59424..50326af 100644 --- a/drivers/gpio/gpio-vf610.c +++ b/drivers/gpio/gpio-vf610.c@@ -196,12 +196,28 @@ static void vf610_gpio_irq_unmask(struct irq_data *d) pcr_base); } +static int vf610_gpio_irq_set_wake(struct irq_data *d, u32 enable) +{ + struct vf610_gpio_port *port = irq_data_get_irq_chip_data(d); + + if (enable) + enable_irq_wake(port->irq); + else + disable_irq_wake(port->irq); + + return 0; +} + + static struct irq_chip vf610_gpio_irq_chip = { .name = "gpio-vf610", .irq_ack = vf610_gpio_irq_ack, .irq_mask = vf610_gpio_irq_mask, .irq_unmask = vf610_gpio_irq_unmask, .irq_set_type = vf610_gpio_irq_set_type, +#ifdef CONFIG_PM_SLEEP + .irq_set_wake = vf610_gpio_irq_set_wake, +#endifEither you need to get rid of this #ifdef and always assign this function or you need to wrap the function itself into the same #ifdef. Otherwise you provoke a unused function warning with !CONFIG_PM_SLEEP. Given that this function isn't really that big I would argue to just drop the #ifdef.
Good point, thx! I will drop the #ifdef when including that patch to the GPIO driver (as Linus Walleij suggested). -- Stefan