staging: wilc1000: avoid twice IRQ handler execution for each single interrupt
authorAjay Singh <ajay.kathat@microchip.com>
Tue, 10 Sep 2019 07:46:07 +0000 (07:46 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 12 Sep 2019 09:37:26 +0000 (10:37 +0100)
The IRQ handler(isr_bh_routine()) was called twice for each interrupt
from firmware. The data was read completely during the first call and
the second call was doing nothing.
Now changed the IRQ flag from ‘level’ to ‘edge’ trigger i.e
IRQF_TRIGGER_LOW to IRQF_TRIGGER_FALLING to avoid extra interrupt
trigger.

Signed-off-by: Ajay Singh <ajay.kathat@microchip.com>
Link: https://lore.kernel.org/r/20190910074514.3073-2-ajay.kathat@microchip.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/wilc1000/wilc_netdev.c

index cd11c35adcfe21b1e6f3ec8e7e341edc6799be43..508acb8bb089fa6642a8851e7f4fb3151db7bf8c 100644 (file)
@@ -60,7 +60,7 @@ static int init_irq(struct net_device *dev)
 
        ret = request_threaded_irq(wl->dev_irq_num, isr_uh_routine,
                                   isr_bh_routine,
-                                  IRQF_TRIGGER_LOW | IRQF_ONESHOT,
+                                  IRQF_TRIGGER_FALLING | IRQF_ONESHOT,
                                   "WILC_IRQ", dev);
        if (ret < 0)
                netdev_err(dev, "Failed to request IRQ\n");