]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commitdiff
drm/omap: dss: Cleanup error paths in output init functions
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Fri, 2 Mar 2018 19:38:21 +0000 (21:38 +0200)
committerTomi Valkeinen <tomi.valkeinen@ti.com>
Mon, 3 Sep 2018 13:13:27 +0000 (16:13 +0300)
Rename the jump labels according to the cleanup they perform, not the
location they're accessed from, and move functions from error checks to
cleanup paths, and move reference handling to simplify cleanup.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
drivers/gpu/drm/omapdrm/dss/dpi.c
drivers/gpu/drm/omapdrm/dss/dsi.c
drivers/gpu/drm/omapdrm/dss/hdmi4.c
drivers/gpu/drm/omapdrm/dss/hdmi5.c
drivers/gpu/drm/omapdrm/dss/sdi.c
drivers/gpu/drm/omapdrm/dss/venc.c

index 0c11d17f23a4f56cf1a448e69395e812fa38e641..5839009f272e00522940daf03360faafc16c9b22 100644 (file)
@@ -745,15 +745,14 @@ int dpi_init_port(struct dss_device *dss, struct platform_device *pdev,
                return 0;
 
        r = of_property_read_u32(ep, "data-lines", &datalines);
+       of_node_put(ep);
        if (r) {
                DSSERR("failed to parse datalines\n");
-               goto err_datalines;
+               return r;
        }
 
        dpi->data_lines = datalines;
 
-       of_node_put(ep);
-
        dpi->pdev = pdev;
        dpi->dss_model = dss_model;
        dpi->dss = dss;
@@ -764,11 +763,6 @@ int dpi_init_port(struct dss_device *dss, struct platform_device *pdev,
        dpi_init_output_port(dpi, port);
 
        return 0;
-
-err_datalines:
-       of_node_put(ep);
-
-       return r;
 }
 
 void dpi_uninit_port(struct device_node *port)
index ee260353b9ca97855fbcf6547d847b7d74fb873c..173c05a54550596d15f6a70e9b920c2c696624ea 100644 (file)
@@ -5360,7 +5360,7 @@ static int dsi_bind(struct device *dev, struct device *master, void *data)
 
        r = dsi_runtime_get(dsi);
        if (r)
-               goto err_runtime_get;
+               goto err_pm_disable;
 
        rev = dsi_read_reg(dsi, DSI_REVISION);
        dev_dbg(dev, "OMAP DSI rev %d.%d\n",
@@ -5381,7 +5381,7 @@ static int dsi_bind(struct device *dev, struct device *master, void *data)
        r = dsi_probe_of(dsi);
        if (r) {
                DSSERR("Invalid DSI DT data\n");
-               goto err_probe_of;
+               goto err_uninit_output;
        }
 
        r = of_platform_populate(dev->of_node, NULL, NULL, dev);
@@ -5404,11 +5404,10 @@ static int dsi_bind(struct device *dev, struct device *master, void *data)
 
        return 0;
 
-err_probe_of:
+err_uninit_output:
        dsi_uninit_output(dsi);
        dsi_runtime_put(dsi);
-
-err_runtime_get:
+err_pm_disable:
        pm_runtime_disable(dev);
        return r;
 }
index bf800cede2ad5f1f27ae0a3858de3ce93b9659fe..1d1f2e0b2b2a1e479331f6fde5749c9807df85eb 100644 (file)
@@ -780,9 +780,7 @@ static int hdmi4_bind(struct device *dev, struct device *master, void *data)
        r = hdmi_audio_register(hdmi);
        if (r) {
                DSSERR("Registering HDMI audio failed\n");
-               hdmi_uninit_output(hdmi);
-               pm_runtime_disable(&pdev->dev);
-               return r;
+               goto err_uninit_output;
        }
 
        hdmi->debugfs = dss_debugfs_create_file(dss, "hdmi", hdmi_dump_regs,
@@ -790,6 +788,9 @@ static int hdmi4_bind(struct device *dev, struct device *master, void *data)
 
        return 0;
 
+err_uninit_output:
+       hdmi_uninit_output(hdmi);
+       pm_runtime_disable(&pdev->dev);
 err_pll:
        hdmi_pll_uninit(&hdmi->pll);
 err_free:
index e5d23dd19f997747c8cb515a90553db100c5d06b..92ae561bf974e569f2ee7e5f4a89d350c85af7de 100644 (file)
@@ -773,9 +773,7 @@ static int hdmi5_bind(struct device *dev, struct device *master, void *data)
        r = hdmi_audio_register(hdmi);
        if (r) {
                DSSERR("Registering HDMI audio failed %d\n", r);
-               hdmi_uninit_output(hdmi);
-               pm_runtime_disable(&pdev->dev);
-               return r;
+               goto err_uninit_output;
        }
 
        hdmi->debugfs = dss_debugfs_create_file(dss, "hdmi", hdmi_dump_regs,
@@ -783,6 +781,9 @@ static int hdmi5_bind(struct device *dev, struct device *master, void *data)
 
        return 0;
 
+err_uninit_output:
+       hdmi_uninit_output(hdmi);
+       pm_runtime_disable(&pdev->dev);
 err_pll:
        hdmi_pll_uninit(&hdmi->pll);
 err_free:
index 4b70a3044dd64c5c10afe3473e773c7ed64285dd..e9b280784264ac68dd8fdc7bfc3cf74991507593 100644 (file)
@@ -358,16 +358,15 @@ int sdi_init_port(struct dss_device *dss, struct platform_device *pdev,
        }
 
        r = of_property_read_u32(ep, "datapairs", &datapairs);
+       of_node_put(ep);
        if (r) {
                DSSERR("failed to parse datapairs\n");
-               goto err_datapairs;
+               goto err_free;
        }
 
        sdi->datapairs = datapairs;
        sdi->dss = dss;
 
-       of_node_put(ep);
-
        sdi->pdev = pdev;
        port->data = sdi;
 
@@ -375,8 +374,6 @@ int sdi_init_port(struct dss_device *dss, struct platform_device *pdev,
 
        return 0;
 
-err_datapairs:
-       of_node_put(ep);
 err_free:
        kfree(sdi);
 
index dd9af335dba068f262c85d8a90ef8542629625b6..93c3e5250a63ea1e095e638dfb1bf8c4fcd38459 100644 (file)
@@ -867,7 +867,7 @@ static int venc_bind(struct device *dev, struct device *master, void *data)
 
        r = venc_runtime_get(venc);
        if (r)
-               goto err_runtime_get;
+               goto err_pm_disable;
 
        rev_id = (u8)(venc_read_reg(venc, VENC_REV_ID) & 0xff);
        dev_dbg(&pdev->dev, "OMAP VENC rev %d\n", rev_id);
@@ -877,7 +877,7 @@ static int venc_bind(struct device *dev, struct device *master, void *data)
        r = venc_probe_of(venc);
        if (r) {
                DSSERR("Invalid DT data\n");
-               goto err_probe_of;
+               goto err_pm_disable;
        }
 
        venc->debugfs = dss_debugfs_create_file(dss, "venc", venc_dump_regs,
@@ -887,8 +887,7 @@ static int venc_bind(struct device *dev, struct device *master, void *data)
 
        return 0;
 
-err_probe_of:
-err_runtime_get:
+err_pm_disable:
        pm_runtime_disable(&pdev->dev);
 err_free:
        kfree(venc);