static int gsc_probe(struct platform_device *pdev)
 {
        struct gsc_dev *gsc;
-       struct resource *res;
        struct device *dev = &pdev->dev;
        const struct gsc_driverdata *drv_data = of_device_get_match_data(dev);
+       int irq;
        int ret;
        int i;
 
        if (IS_ERR(gsc->regs))
                return PTR_ERR(gsc->regs);
 
-       res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
-       if (!res) {
-               dev_err(dev, "failed to get IRQ resource\n");
-               return -ENXIO;
-       }
+       irq = platform_get_irq(pdev, 0);
+       if (irq < 0)
+               return irq;
 
        for (i = 0; i < gsc->num_clocks; i++) {
                gsc->clock[i] = devm_clk_get(dev, drv_data->clk_names[i]);
                }
        }
 
-       ret = devm_request_irq(dev, res->start, gsc_irq_handler,
-                               0, pdev->name, gsc);
+       ret = devm_request_irq(dev, irq, gsc_irq_handler,
+                              0, pdev->name, gsc);
        if (ret) {
                dev_err(dev, "failed to install irq (%d)\n", ret);
                goto err_clk;