]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - drivers/gpio/gpiolib-acpi.c
Merge tag 'armsoc-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
[linux.git] / drivers / gpio / gpiolib-acpi.c
index 59ccfd24627d958e2ee99f12be602c0b0512ef94..d30e57dc755cf6114d984b65cf56175e78757bb9 100644 (file)
@@ -194,6 +194,7 @@ static void acpi_gpiochip_request_irqs(struct acpi_gpio_chip *acpi_gpio)
                acpi_gpiochip_request_irq(acpi_gpio, event);
 }
 
+/* Always returns AE_OK so that we keep looping over the resources */
 static acpi_status acpi_gpiochip_alloc_event(struct acpi_resource *ares,
                                             void *context)
 {
@@ -230,19 +231,25 @@ static acpi_status acpi_gpiochip_alloc_event(struct acpi_resource *ares,
        desc = gpiochip_request_own_desc(chip, pin, "ACPI:Event",
                                         GPIO_ACTIVE_HIGH, GPIOD_IN);
        if (IS_ERR(desc)) {
-               dev_err(chip->parent, "Failed to request GPIO\n");
-               return AE_ERROR;
+               dev_err(chip->parent,
+                       "Failed to request GPIO for pin 0x%04X, err %ld\n",
+                       pin, PTR_ERR(desc));
+               return AE_OK;
        }
 
        ret = gpiochip_lock_as_irq(chip, pin);
        if (ret) {
-               dev_err(chip->parent, "Failed to lock GPIO as interrupt\n");
+               dev_err(chip->parent,
+                       "Failed to lock GPIO pin 0x%04X as interrupt, err %d\n",
+                       pin, ret);
                goto fail_free_desc;
        }
 
        irq = gpiod_to_irq(desc);
        if (irq < 0) {
-               dev_err(chip->parent, "Failed to translate GPIO to IRQ\n");
+               dev_err(chip->parent,
+                       "Failed to translate GPIO pin 0x%04X to IRQ, err %d\n",
+                       pin, irq);
                goto fail_unlock_irq;
        }
 
@@ -287,7 +294,7 @@ static acpi_status acpi_gpiochip_alloc_event(struct acpi_resource *ares,
 fail_free_desc:
        gpiochip_free_own_desc(desc);
 
-       return AE_ERROR;
+       return AE_OK;
 }
 
 /**