Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9e9509e3 authored by Michał Mirosław's avatar Michał Mirosław Committed by Linus Walleij
Browse files

gpio: tegra: fix unbalanced chained_irq_enter/exit



When more than one GPIO IRQs are triggered simultaneously,
tegra_gpio_irq_handler() called chained_irq_exit() multiple
times for one chained_irq_enter().

Fixes: 3c92db9a
Signed-off-by: default avatarMichał Mirosław <mirq-linux@rere.qmqm.pl>
[Also changed the variable to a bool]
Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent df1e76f2
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -360,7 +360,7 @@ static void tegra_gpio_irq_handler(struct irq_desc *desc)
{
	int port;
	int pin;
	int unmasked = 0;
	bool unmasked = false;
	int gpio;
	u32 lvl;
	unsigned long sta;
@@ -384,8 +384,8 @@ static void tegra_gpio_irq_handler(struct irq_desc *desc)
			 * before executing the handler so that we don't
			 * miss edges
			 */
			if (lvl & (0x100 << pin)) {
				unmasked = 1;
			if (!unmasked && lvl & (0x100 << pin)) {
				unmasked = true;
				chained_irq_exit(chip, desc);
			}