Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab...
[firefly-linux-kernel-4.4.55.git] / drivers / uio / uio_dmem_genirq.c
index 125d0e5a68879c2953ce1a595f1f325de5730aad..8d0bba469566e403f7775ba5e1d090cbff1e8ec3 100644 (file)
@@ -146,7 +146,7 @@ static int uio_dmem_genirq_irqcontrol(struct uio_info *dev_info, s32 irq_on)
 
 static int uio_dmem_genirq_probe(struct platform_device *pdev)
 {
-       struct uio_dmem_genirq_pdata *pdata = pdev->dev.platform_data;
+       struct uio_dmem_genirq_pdata *pdata = dev_get_platdata(&pdev->dev);
        struct uio_info *uioinfo = &pdata->uioinfo;
        struct uio_dmem_genirq_platdata *priv;
        struct uio_mem *uiomem;
@@ -204,7 +204,7 @@ static int uio_dmem_genirq_probe(struct platform_device *pdev)
                ret = platform_get_irq(pdev, 0);
                if (ret < 0) {
                        dev_err(&pdev->dev, "failed to get IRQ\n");
-                       goto bad0;
+                       goto bad1;
                }
                uioinfo->irq = ret;
        }
@@ -275,6 +275,7 @@ static int uio_dmem_genirq_probe(struct platform_device *pdev)
        ret = uio_register_device(&pdev->dev, priv->uioinfo);
        if (ret) {
                dev_err(&pdev->dev, "unable to register uio device\n");
+               pm_runtime_disable(&pdev->dev);
                goto bad1;
        }
 
@@ -282,7 +283,6 @@ static int uio_dmem_genirq_probe(struct platform_device *pdev)
        return 0;
  bad1:
        kfree(priv);
-       pm_runtime_disable(&pdev->dev);
  bad0:
        /* kfree uioinfo for OF */
        if (pdev->dev.of_node)