Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c6ca5b22 authored by Tomi Valkeinen's avatar Tomi Valkeinen
Browse files

OMAPDSS: only probe pdata if there's one



omapdss output drivers always read the platform data. This crashes when
there's no platform data when using DT.

Add a check to read the platform data only if it exists.

Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
parent 0a200126
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -706,13 +706,17 @@ static int omap_dpi_probe(struct platform_device *pdev)

	dpi_init_output(pdev);

	if (pdev->dev.platform_data) {
		r = dpi_probe_pdata(pdev);
	if (r) {
		dpi_uninit_output(pdev);
		return r;
		if (r)
			goto err_probe;
	}

	return 0;

err_probe:
	dpi_uninit_output(pdev);
	return r;
}

static int __exit omap_dpi_remove(struct platform_device *pdev)
+7 −6
Original line number Diff line number Diff line
@@ -5563,12 +5563,10 @@ static int omap_dsihw_probe(struct platform_device *dsidev)

	dsi_init_output(dsidev);

	if (dsidev->dev.platform_data) {
		r = dsi_probe_pdata(dsidev);
	if (r) {
		dsi_runtime_put(dsidev);
		dsi_uninit_output(dsidev);
		pm_runtime_disable(&dsidev->dev);
		return r;
		if (r)
			goto err_probe;
	}

	dsi_runtime_put(dsidev);
@@ -5586,6 +5584,9 @@ static int omap_dsihw_probe(struct platform_device *dsidev)
#endif
	return 0;

err_probe:
	dsi_runtime_put(dsidev);
	dsi_uninit_output(dsidev);
err_runtime_get:
	pm_runtime_disable(&dsidev->dev);
	return r;
+10 −6
Original line number Diff line number Diff line
@@ -1094,17 +1094,21 @@ static int omapdss_hdmihw_probe(struct platform_device *pdev)

	dss_debugfs_create_file("hdmi", hdmi_dump_regs);

	if (pdev->dev.platform_data) {
		r = hdmi_probe_pdata(pdev);
	if (r) {
		if (r)
			goto err_probe;
	}

	return 0;

err_probe:
	hdmi_panel_exit();
	hdmi_uninit_output(pdev);
	pm_runtime_disable(&pdev->dev);
	return r;
}

	return 0;
}

static int __exit hdmi_remove_child(struct device *dev, void *data)
{
	struct omap_dss_device *dssdev = to_dss_device(dev);
+6 −5
Original line number Diff line number Diff line
@@ -1093,15 +1093,16 @@ static int omap_rfbihw_probe(struct platform_device *pdev)

	rfbi_init_output(pdev);

	if (pdev->dev.platform_data) {
		r = rfbi_probe_pdata(pdev);
	if (r) {
		rfbi_uninit_output(pdev);
		pm_runtime_disable(&pdev->dev);
		return r;
		if (r)
			goto err_probe;
	}

	return 0;

err_probe:
	rfbi_uninit_output(pdev);
err_runtime_get:
	pm_runtime_disable(&pdev->dev);
	return r;
+8 −4
Original line number Diff line number Diff line
@@ -365,13 +365,17 @@ static int omap_sdi_probe(struct platform_device *pdev)

	sdi_init_output(pdev);

	if (pdev->dev.platform_data) {
		r = sdi_probe_pdata(pdev);
	if (r) {
		sdi_uninit_output(pdev);
		return r;
		if (r)
			goto err_probe;
	}

	return 0;

err_probe:
	sdi_uninit_output(pdev);
	return r;
}

static int __exit omap_sdi_remove(struct platform_device *pdev)
Loading