diff options
Diffstat (limited to 'drivers/gpio/gpiolib-acpi.c')
| -rw-r--r-- | drivers/gpio/gpiolib-acpi.c | 17 | 
1 files changed, 12 insertions, 5 deletions
diff --git a/drivers/gpio/gpiolib-acpi.c b/drivers/gpio/gpiolib-acpi.c index 59ccfd24627d..d30e57dc755c 100644 --- a/drivers/gpio/gpiolib-acpi.c +++ b/drivers/gpio/gpiolib-acpi.c @@ -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 @@ fail_unlock_irq:  fail_free_desc:  	gpiochip_free_own_desc(desc); -	return AE_ERROR; +	return AE_OK;  }  /**  |