static int __maybe_unused zynq_gpio_suspend(struct device *dev)
 {
        struct platform_device *pdev = to_platform_device(dev);
-       int irq = platform_get_irq(pdev, 0);
-       struct irq_data *data = irq_get_irq_data(irq);
        struct zynq_gpio *gpio = platform_get_drvdata(pdev);
+       struct irq_data *data = irq_get_irq_data(gpio->irq);
 
        if (!irqd_is_wakeup_set(data)) {
                zynq_gpio_save_context(gpio);
 static int __maybe_unused zynq_gpio_resume(struct device *dev)
 {
        struct platform_device *pdev = to_platform_device(dev);
-       int irq = platform_get_irq(pdev, 0);
-       struct irq_data *data = irq_get_irq_data(irq);
        struct zynq_gpio *gpio = platform_get_drvdata(pdev);
+       struct irq_data *data = irq_get_irq_data(gpio->irq);
        int ret;
 
        if (!irqd_is_wakeup_set(data)) {