]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - drivers/gpio/gpiolib.c
gpiolib: fix incorrect IRQ requesting of an active-low lineevent
[linux.git] / drivers / gpio / gpiolib.c
index 3ee99d070608240914f64839c7ab36336caabe21..bf05c29b53be925110c7d4179af277dc403713fc 100644 (file)
@@ -956,9 +956,11 @@ static int lineevent_create(struct gpio_device *gdev, void __user *ip)
        }
 
        if (eflags & GPIOEVENT_REQUEST_RISING_EDGE)
-               irqflags |= IRQF_TRIGGER_RISING;
+               irqflags |= test_bit(FLAG_ACTIVE_LOW, &desc->flags) ?
+                       IRQF_TRIGGER_FALLING : IRQF_TRIGGER_RISING;
        if (eflags & GPIOEVENT_REQUEST_FALLING_EDGE)
-               irqflags |= IRQF_TRIGGER_FALLING;
+               irqflags |= test_bit(FLAG_ACTIVE_LOW, &desc->flags) ?
+                       IRQF_TRIGGER_RISING : IRQF_TRIGGER_FALLING;
        irqflags |= IRQF_ONESHOT;
 
        INIT_KFIFO(le->events);