drm/rockchip: dw-mipi-dsi: defer probe if panel is not loaded
This ensures that the output resolution is known before fbcon loads. mipi_dsi_host_register() is moved above dw_mipi_dsi_register() to simplify error cleanup since the order of these operations does not matter. Signed-off-by: John Keeping <john@metanate.com> Signed-off-by: Sean Paul <seanpaul@chromium.org> Link: http://patchwork.freedesktop.org/patch/msgid/20170224125506.21533-22-john@metanate.com
This commit is contained in:
Родитель
d790ad03ed
Коммит
2f8f2d2991
|
@ -1189,12 +1189,27 @@ static int dw_mipi_dsi_bind(struct device *dev, struct device *master,
|
|||
goto err_pllref;
|
||||
}
|
||||
|
||||
dev_set_drvdata(dev, dsi);
|
||||
|
||||
dsi->dsi_host.ops = &dw_mipi_dsi_host_ops;
|
||||
dsi->dsi_host.dev = dev;
|
||||
return mipi_dsi_host_register(&dsi->dsi_host);
|
||||
ret = mipi_dsi_host_register(&dsi->dsi_host);
|
||||
if (ret) {
|
||||
dev_err(dev, "Failed to register MIPI host: %d\n", ret);
|
||||
goto err_cleanup;
|
||||
}
|
||||
|
||||
if (!dsi->panel) {
|
||||
ret = -EPROBE_DEFER;
|
||||
goto err_mipi_dsi_host;
|
||||
}
|
||||
|
||||
dev_set_drvdata(dev, dsi);
|
||||
return 0;
|
||||
|
||||
err_mipi_dsi_host:
|
||||
mipi_dsi_host_unregister(&dsi->dsi_host);
|
||||
err_cleanup:
|
||||
drm_encoder_cleanup(&dsi->encoder);
|
||||
drm_connector_cleanup(&dsi->connector);
|
||||
err_pllref:
|
||||
clk_disable_unprepare(dsi->pllref_clk);
|
||||
return ret;
|
||||
|
|
Загрузка…
Ссылка в новой задаче