OSDN Git Service

Merge tag 'gpio-v4.12-4' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw...
authorLinus Torvalds <torvalds@linux-foundation.org>
Sat, 1 Jul 2017 15:24:54 +0000 (08:24 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 1 Jul 2017 15:24:54 +0000 (08:24 -0700)
Pull last minute fixes for GPIO from Linus Walleij:

 - Fix another ACPI problem with broken BIOSes.

 - Filter out the right GPIO events, making a very user-visible bug go
   away.

* tag 'gpio-v4.12-4' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio:
  gpio: acpi: Skip _AEI entries without a handler rather then aborting the scan
  gpiolib: fix filtering out unwanted events

drivers/gpio/gpiolib-acpi.c
drivers/gpio/gpiolib.c

index 2185232..8fa5fcd 100644 (file)
@@ -201,7 +201,7 @@ static acpi_status acpi_gpiochip_request_interrupt(struct acpi_resource *ares,
                        handler = acpi_gpio_irq_handler_evt;
        }
        if (!handler)
-               return AE_BAD_PARAMETER;
+               return AE_OK;
 
        pin = acpi_gpiochip_pin_to_gpio_offset(chip->gpiodev, pin);
        if (pin < 0)
index 5db4413..a42a1ee 100644 (file)
@@ -708,7 +708,8 @@ static irqreturn_t lineevent_irq_thread(int irq, void *p)
 
        ge.timestamp = ktime_get_real_ns();
 
-       if (le->eflags & GPIOEVENT_REQUEST_BOTH_EDGES) {
+       if (le->eflags & GPIOEVENT_REQUEST_RISING_EDGE
+           && le->eflags & GPIOEVENT_REQUEST_FALLING_EDGE) {
                int level = gpiod_get_value_cansleep(le->desc);
 
                if (level)