diff mbox series

gpio: gpio-xilinx: update on suspend and resume calls

Message ID 20210603164900.46020-1-srinivas.neeli@xilinx.com
State Accepted
Commit be4dc321a55cfee3099a1bd9399d0cd4ac080c23
Headers show
Series gpio: gpio-xilinx: update on suspend and resume calls | expand

Commit Message

Srinivas Neeli June 3, 2021, 4:49 p.m. UTC
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>
---
 drivers/gpio/gpio-xilinx.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

Comments

Bartosz Golaszewski June 14, 2021, 8:13 p.m. UTC | #1
On Thu, Jun 3, 2021 at 6:49 PM Srinivas Neeli <srinivas.neeli@xilinx.com> wrote:
>

> 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>

> ---


Applied, thanks!

Bart
diff mbox series

Patch

diff --git a/drivers/gpio/gpio-xilinx.c b/drivers/gpio/gpio-xilinx.c
index b411d3156e0b..e0681c37f1cb 100644
--- a/drivers/gpio/gpio-xilinx.c
+++ b/drivers/gpio/gpio-xilinx.c
@@ -302,8 +302,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))
@@ -348,8 +348,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))