Skip to content

Commit

Permalink
drm/omap: dss: Cleanup error paths in output init functions
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Laurent Pinchart authored and Tomi Valkeinen committed Sep 3, 2018
1 parent a25edf0 commit 66aacfe
Show file tree
Hide file tree
Showing 6 changed files with 19 additions and 28 deletions.
10 changes: 2 additions & 8 deletions drivers/gpu/drm/omapdrm/dss/dpi.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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)
Expand Down
9 changes: 4 additions & 5 deletions drivers/gpu/drm/omapdrm/dss/dsi.c
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand All @@ -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);
Expand All @@ -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;
}
Expand Down
7 changes: 4 additions & 3 deletions drivers/gpu/drm/omapdrm/dss/hdmi4.c
Original file line number Diff line number Diff line change
Expand Up @@ -780,16 +780,17 @@ 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,
hdmi);

return 0;

err_uninit_output:
hdmi_uninit_output(hdmi);
pm_runtime_disable(&pdev->dev);
err_pll:
hdmi_pll_uninit(&hdmi->pll);
err_free:
Expand Down
7 changes: 4 additions & 3 deletions drivers/gpu/drm/omapdrm/dss/hdmi5.c
Original file line number Diff line number Diff line change
Expand Up @@ -773,16 +773,17 @@ 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,
hdmi);

return 0;

err_uninit_output:
hdmi_uninit_output(hdmi);
pm_runtime_disable(&pdev->dev);
err_pll:
hdmi_pll_uninit(&hdmi->pll);
err_free:
Expand Down
7 changes: 2 additions & 5 deletions drivers/gpu/drm/omapdrm/dss/sdi.c
Original file line number Diff line number Diff line change
Expand Up @@ -358,25 +358,22 @@ 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;

sdi_init_output(sdi);

return 0;

err_datapairs:
of_node_put(ep);
err_free:
kfree(sdi);

Expand Down
7 changes: 3 additions & 4 deletions drivers/gpu/drm/omapdrm/dss/venc.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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,
Expand All @@ -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);
Expand Down

0 comments on commit 66aacfe

Please sign in to comment.