return virq;
        }
 
-       ret = devm_request_threaded_irq(dev, virq, NULL,
-               wcove_gpio_irq_handler, IRQF_ONESHOT, pdev->name, wg);
-       if (ret) {
-               dev_err(dev, "Failed to request irq %d\n", virq);
-               return ret;
-       }
-
        girq = &wg->chip.irq;
        girq->chip = &wcove_irqchip;
        /* This will let us handle the parent IRQ in the driver */
        girq->handler = handle_simple_irq;
        girq->threaded = true;
 
+       ret = devm_request_threaded_irq(dev, virq, NULL, wcove_gpio_irq_handler,
+                                       IRQF_ONESHOT, pdev->name, wg);
+       if (ret) {
+               dev_err(dev, "Failed to request irq %d\n", virq);
+               return ret;
+       }
+
        ret = devm_gpiochip_add_data(dev, &wg->chip, wg);
        if (ret) {
                dev_err(dev, "Failed to add gpiochip: %d\n", ret);