From: Linus Walleij Date: Sat, 19 Oct 2013 21:24:03 +0000 (+0200) Subject: Merge tag 'v3.12-rc6' into devel X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=b41fb43911b4cb864812adec88d028cc6219f23e;p=linux-beck.git Merge tag 'v3.12-rc6' into devel Linux 3.12-rc6 Conflicts: drivers/gpio/gpio-lynxpoint.c --- b41fb43911b4cb864812adec88d028cc6219f23e diff --cc drivers/gpio/gpio-lynxpoint.c index 21603e6aceaf,41b5913ddabe..a0804740a0b7 --- a/drivers/gpio/gpio-lynxpoint.c +++ b/drivers/gpio/gpio-lynxpoint.c @@@ -248,15 -248,15 +248,16 @@@ static void lp_gpio_irq_handler(unsigne struct lp_gpio *lg = irq_data_get_irq_handler_data(data); struct irq_chip *chip = irq_data_get_irq_chip(data); u32 base, pin, mask; - unsigned long reg, pending; + unsigned long reg, ena, pending; - unsigned virq; /* check from GPIO controller which pin triggered the interrupt */ for (base = 0; base < lg->chip.ngpio; base += 32) { reg = lp_gpio_reg(&lg->chip, base, LP_INT_STAT); + ena = lp_gpio_reg(&lg->chip, base, LP_INT_ENABLE); - while ((pending = inl(reg))) { + while ((pending = (inl(reg) & inl(ena)))) { + unsigned irq; + pin = __ffs(pending); mask = BIT(pin); /* Clear before handling so we don't lose an edge */