gpio: gpio-xilinx: update on suspend and resume calls
authorSrinivas Neeli <srinivas.neeli@xilinx.com>
Thu, 3 Jun 2021 16:49:00 +0000 (22:19 +0530)
committerBartosz Golaszewski <bgolaszewski@baylibre.com>
Mon, 14 Jun 2021 20:13:23 +0000 (22:13 +0200)
Current AXI GPIO driver checking for interrupt data in suspend and
resume path and reporting as error in case of no interrupt connection.
As per AXI GPIO IP specification interrupt connection is optional,
driver logic is updated in suspend and resume calls by reporting
debug message and enable/disable clock in case of no connection.

Signed-off-by: Srinivas Neeli <srinivas.neeli@xilinx.com>
Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
drivers/gpio/gpio-xilinx.c

index 0c43baa54b5b327ef0c6167c46ce669238c02510..e10e7752460a06e24deb076e6d43adff373c5422 100644 (file)
@@ -313,8 +313,8 @@ static int __maybe_unused xgpio_suspend(struct device *dev)
        struct irq_data *data = irq_get_irq_data(gpio->irq);
 
        if (!data) {
-               dev_err(dev, "irq_get_irq_data() failed\n");
-               return -EINVAL;
+               dev_dbg(dev, "IRQ not connected\n");
+               return pm_runtime_force_suspend(dev);
        }
 
        if (!irqd_is_wakeup_set(data))
@@ -359,8 +359,8 @@ static int __maybe_unused xgpio_resume(struct device *dev)
        struct irq_data *data = irq_get_irq_data(gpio->irq);
 
        if (!data) {
-               dev_err(dev, "irq_get_irq_data() failed\n");
-               return -EINVAL;
+               dev_dbg(dev, "IRQ not connected\n");
+               return pm_runtime_force_resume(dev);
        }
 
        if (!irqd_is_wakeup_set(data))