static struct resource *res_irq;
        struct platform_device *pdev_capture, *pdev_display;
        struct device_node *endpoint = NULL;
+       int ret;
 
        vpif_base = devm_platform_ioremap_resource(pdev, 0);
        if (IS_ERR(vpif_base))
        res_irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
        if (!res_irq) {
                dev_warn(&pdev->dev, "Missing IRQ resource.\n");
-               pm_runtime_put(&pdev->dev);
-               return -EINVAL;
+               ret = -EINVAL;
+               goto err_put_rpm;
        }
 
        pdev_capture = devm_kzalloc(&pdev->dev, sizeof(*pdev_capture),
        }
 
        return 0;
+
+err_put_rpm:
+       pm_runtime_put(&pdev->dev);
+       pm_runtime_disable(&pdev->dev);
+
+       return ret;
 }
 
 static int vpif_remove(struct platform_device *pdev)