diff mbox

[1/2] gpio/mxc: mask gpio interrupts in suspend

Message ID 1438795388-22743-2-git-send-email-edubezval@gmail.com
State New
Headers show

Commit Message

Eduardo Valentin Aug. 5, 2015, 5:23 p.m. UTC
From: Ulises Brindis <ubrindis56@gmail.com>

Currently in the FSL platform all GPIO interrupts in a bank are muxed
into two GPIO lines to the GPC interrupt controller. In each GPIO bank
GPIOs 0-15 are OR'ed into one GPC interrupt controller interrupt and 16-31
are OR'ed into another. With the current code, if any of the 0-15 or
16-31 interrupts are marked as wakeup capable, all interrupts belonging
to that sub-bank (either 0-15 or 16-31) will wake up the device. This is
because interrupts are only being masked at the interrupt controller
and not at the GPIO controller.

This patch allows masking of GPIO interrupts at the GPIO controller during
suspend if they have not been labeled wakeup capable. This patch uses
preexisting IRQCHIP_MASK_ON_SUSPEND flag while initializing the GPIO
interrupts to get the desired behavior.

Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: Alexandre Courbot <gnurou@gmail.com>
Cc: linux-gpio@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
Signed-off-by: Ulises Brindis <ubrindis56@gmail.com>
---
 drivers/gpio/gpio-mxc.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Linus Walleij Aug. 13, 2015, 12:47 p.m. UTC | #1
On Wed, Aug 5, 2015 at 7:23 PM, Eduardo Valentin <edubezval@gmail.com> wrote:

> From: Ulises Brindis <ubrindis56@gmail.com>
>
> Currently in the FSL platform all GPIO interrupts in a bank are muxed
> into two GPIO lines to the GPC interrupt controller. In each GPIO bank
> GPIOs 0-15 are OR'ed into one GPC interrupt controller interrupt and 16-31
> are OR'ed into another. With the current code, if any of the 0-15 or
> 16-31 interrupts are marked as wakeup capable, all interrupts belonging
> to that sub-bank (either 0-15 or 16-31) will wake up the device. This is
> because interrupts are only being masked at the interrupt controller
> and not at the GPIO controller.
>
> This patch allows masking of GPIO interrupts at the GPIO controller during
> suspend if they have not been labeled wakeup capable. This patch uses
> preexisting IRQCHIP_MASK_ON_SUSPEND flag while initializing the GPIO
> interrupts to get the desired behavior.
>
> Cc: Linus Walleij <linus.walleij@linaro.org>
> Cc: Alexandre Courbot <gnurou@gmail.com>
> Cc: linux-gpio@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org
> Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
> Signed-off-by: Ulises Brindis <ubrindis56@gmail.com>

Patch applied.

Yours,
Linus Walleij
--
To unsubscribe from this list: send the line "unsubscribe linux-gpio" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/gpio/gpio-mxc.c b/drivers/gpio/gpio-mxc.c
index ec1eb1b..9e5bdbd 100644
--- a/drivers/gpio/gpio-mxc.c
+++ b/drivers/gpio/gpio-mxc.c
@@ -354,6 +354,7 @@  static void __init mxc_gpio_init_gc(struct mxc_gpio_port *port, int irq_base)
 	ct->chip.irq_unmask = irq_gc_mask_set_bit;
 	ct->chip.irq_set_type = gpio_set_irq_type;
 	ct->chip.irq_set_wake = gpio_set_wake_irq;
+	ct->chip.flags = IRQCHIP_MASK_ON_SUSPEND;
 	ct->regs.ack = GPIO_ISR;
 	ct->regs.mask = GPIO_IMR;