1234567891011121314151617181920212223242526272829303132333435363738394041 |
- From e8287ec10f21877eb0ac4c1fb4e89e42d8bc10da Mon Sep 17 00:00:00 2001
- From: Tim Harvey <[email protected]>
- Date: Wed, 11 Mar 2020 08:19:45 -0700
- Subject: [PATCH 2/7] gpio: thunderx: fix irq_request_resources
- If there are no parent resources do not call irq_chip_request_resources_parent
- at all as this will return an error.
- This resolves a regression where devices using a thunderx gpio as an interrupt
- would fail probing.
- Fixes: 0d04d0c ("gpio: thunderx: Use the default parent apis for {request,release}_resources")
- Signed-off-by: Tim Harvey <[email protected]>
- ---
- drivers/gpio/gpio-thunderx.c | 9 ++++++---
- 1 file changed, 6 insertions(+), 3 deletions(-)
- --- a/drivers/gpio/gpio-thunderx.c
- +++ b/drivers/gpio/gpio-thunderx.c
- @@ -363,15 +363,18 @@ static int thunderx_gpio_irq_request_res
- {
- struct thunderx_line *txline = irq_data_get_irq_chip_data(data);
- struct thunderx_gpio *txgpio = txline->txgpio;
- + struct irq_data *parent_data = data->parent_data;
- int r;
-
- r = gpiochip_lock_as_irq(&txgpio->chip, txline->line);
- if (r)
- return r;
-
- - r = irq_chip_request_resources_parent(data);
- - if (r)
- - gpiochip_unlock_as_irq(&txgpio->chip, txline->line);
- + if (parent_data && parent_data->chip->irq_request_resources) {
- + r = irq_chip_request_resources_parent(data);
- + if (r)
- + gpiochip_unlock_as_irq(&txgpio->chip, txline->line);
- + }
-
- return r;
- }
|