mirror of
https://github.com/FEX-Emu/linux.git
synced 2025-01-26 12:47:53 +00:00
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: 3c92db9ac0ca3eee8e46e2424b6c074e2e394ad9 Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl> [Also changed the variable to a bool] Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
parent
df1e76f28f
commit
9e9509e38f
@ -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);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user