forked from luck/tmp_suning_uos_patched
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: Tomi Valkeinen <tomi.valkeinen@ti.com>
This commit is contained in:
parent
0a20012605
commit
c6ca5b2201
|
@ -706,13 +706,17 @@ static int omap_dpi_probe(struct platform_device *pdev)
|
|||
|
||||
dpi_init_output(pdev);
|
||||
|
||||
r = dpi_probe_pdata(pdev);
|
||||
if (r) {
|
||||
dpi_uninit_output(pdev);
|
||||
return r;
|
||||
if (pdev->dev.platform_data) {
|
||||
r = dpi_probe_pdata(pdev);
|
||||
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)
|
||||
|
|
|
@ -5563,12 +5563,10 @@ static int omap_dsihw_probe(struct platform_device *dsidev)
|
|||
|
||||
dsi_init_output(dsidev);
|
||||
|
||||
r = dsi_probe_pdata(dsidev);
|
||||
if (r) {
|
||||
dsi_runtime_put(dsidev);
|
||||
dsi_uninit_output(dsidev);
|
||||
pm_runtime_disable(&dsidev->dev);
|
||||
return r;
|
||||
if (dsidev->dev.platform_data) {
|
||||
r = dsi_probe_pdata(dsidev);
|
||||
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;
|
||||
|
|
|
@ -1094,15 +1094,19 @@ static int omapdss_hdmihw_probe(struct platform_device *pdev)
|
|||
|
||||
dss_debugfs_create_file("hdmi", hdmi_dump_regs);
|
||||
|
||||
r = hdmi_probe_pdata(pdev);
|
||||
if (r) {
|
||||
hdmi_panel_exit();
|
||||
hdmi_uninit_output(pdev);
|
||||
pm_runtime_disable(&pdev->dev);
|
||||
return r;
|
||||
if (pdev->dev.platform_data) {
|
||||
r = hdmi_probe_pdata(pdev);
|
||||
if (r)
|
||||
goto err_probe;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
err_probe:
|
||||
hdmi_panel_exit();
|
||||
hdmi_uninit_output(pdev);
|
||||
pm_runtime_disable(&pdev->dev);
|
||||
return r;
|
||||
}
|
||||
|
||||
static int __exit hdmi_remove_child(struct device *dev, void *data)
|
||||
|
|
|
@ -1093,15 +1093,16 @@ static int omap_rfbihw_probe(struct platform_device *pdev)
|
|||
|
||||
rfbi_init_output(pdev);
|
||||
|
||||
r = rfbi_probe_pdata(pdev);
|
||||
if (r) {
|
||||
rfbi_uninit_output(pdev);
|
||||
pm_runtime_disable(&pdev->dev);
|
||||
return r;
|
||||
if (pdev->dev.platform_data) {
|
||||
r = rfbi_probe_pdata(pdev);
|
||||
if (r)
|
||||
goto err_probe;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
err_probe:
|
||||
rfbi_uninit_output(pdev);
|
||||
err_runtime_get:
|
||||
pm_runtime_disable(&pdev->dev);
|
||||
return r;
|
||||
|
|
|
@ -365,13 +365,17 @@ static int omap_sdi_probe(struct platform_device *pdev)
|
|||
|
||||
sdi_init_output(pdev);
|
||||
|
||||
r = sdi_probe_pdata(pdev);
|
||||
if (r) {
|
||||
sdi_uninit_output(pdev);
|
||||
return r;
|
||||
if (pdev->dev.platform_data) {
|
||||
r = sdi_probe_pdata(pdev);
|
||||
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)
|
||||
|
|
|
@ -866,16 +866,17 @@ static int omap_venchw_probe(struct platform_device *pdev)
|
|||
|
||||
venc_init_output(pdev);
|
||||
|
||||
r = venc_probe_pdata(pdev);
|
||||
if (r) {
|
||||
venc_panel_exit();
|
||||
venc_uninit_output(pdev);
|
||||
pm_runtime_disable(&pdev->dev);
|
||||
return r;
|
||||
if (pdev->dev.platform_data) {
|
||||
r = venc_probe_pdata(pdev);
|
||||
if (r)
|
||||
goto err_probe;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
err_probe:
|
||||
venc_panel_exit();
|
||||
venc_uninit_output(pdev);
|
||||
err_panel_init:
|
||||
err_runtime_get:
|
||||
pm_runtime_disable(&pdev->dev);
|
||||
|
|
Loading…
Reference in New Issue
Block a user