gpio: pch: Use for_each_set_bit() in IRQ handler
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Tue, 6 Nov 2018 12:38:55 +0000 (14:38 +0200)
committerAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Fri, 7 Dec 2018 14:40:24 +0000 (16:40 +0200)
This simplifies and standardizes the AB IRQ handler by using
the for_each_set_bit() library function.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
drivers/gpio/gpio-pch.c

index 350f95f..ebecb8a 100644 (file)
@@ -313,16 +313,14 @@ static void pch_irq_ack(struct irq_data *d)
 static irqreturn_t pch_gpio_handler(int irq, void *dev_id)
 {
        struct pch_gpio *chip = dev_id;
-       u32 reg_val = ioread32(&chip->reg->istatus);
+       unsigned long reg_val = ioread32(&chip->reg->istatus);
        int i, ret = IRQ_NONE;
 
-       for (i = 0; i < gpio_pins[chip->ioh]; i++) {
-               if (reg_val & BIT(i)) {
-                       dev_dbg(chip->dev, "%s:[%d]:irq=%d  status=0x%x\n",
-                               __func__, i, irq, reg_val);
-                       generic_handle_irq(chip->irq_base + i);
-                       ret = IRQ_HANDLED;
-               }
+       for_each_set_bit(i, &reg_val, gpio_pins[chip->ioh]) {
+               dev_dbg(chip->dev, "%s:[%d]:irq=%d  status=0x%lx\n", __func__,
+                       i, irq, reg_val);
+               generic_handle_irq(chip->irq_base + i);
+               ret = IRQ_HANDLED;
        }
        return ret;
 }