aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpio/gpio-omap.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c
index 405ce6fd2e5c..f46b600e5e56 100644
--- a/drivers/gpio/gpio-omap.c
+++ b/drivers/gpio/gpio-omap.c
@@ -689,7 +689,7 @@ static void gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
689{ 689{
690 void __iomem *isr_reg = NULL; 690 void __iomem *isr_reg = NULL;
691 u32 isr; 691 u32 isr;
692 unsigned int i; 692 unsigned int bit;
693 struct gpio_bank *bank; 693 struct gpio_bank *bank;
694 int unmasked = 0; 694 int unmasked = 0;
695 struct irq_chip *chip = irq_desc_get_chip(desc); 695 struct irq_chip *chip = irq_desc_get_chip(desc);
@@ -730,9 +730,9 @@ static void gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
730 if (!isr) 730 if (!isr)
731 break; 731 break;
732 732
733 for (i = 0; isr != 0; isr >>= 1, i++) { 733 while (isr) {
734 if (!(isr & 1)) 734 bit = __ffs(isr);
735 continue; 735 isr &= ~(1 << bit);
736 736
737 /* 737 /*
738 * Some chips can't respond to both rising and falling 738 * Some chips can't respond to both rising and falling
@@ -741,10 +741,10 @@ static void gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
741 * to respond to the IRQ for the opposite direction. 741 * to respond to the IRQ for the opposite direction.
742 * This will be indicated in the bank toggle_mask. 742 * This will be indicated in the bank toggle_mask.
743 */ 743 */
744 if (bank->toggle_mask & (1 << i)) 744 if (bank->toggle_mask & (1 << bit))
745 _toggle_gpio_edge_triggering(bank, i); 745 _toggle_gpio_edge_triggering(bank, bit);
746 746
747 generic_handle_irq(irq_find_mapping(bank->domain, i)); 747 generic_handle_irq(irq_find_mapping(bank->domain, bit));
748 } 748 }
749 } 749 }
750 /* if bank has any level sensitive GPIO pin interrupt 750 /* if bank has any level sensitive GPIO pin interrupt