Re: [PATCH 5/7] drm/rockchip: dw-mipi: support HPD poll
From: John Keeping
Date: Fri Jul 08 2016 - 10:13:31 EST
On Fri, 8 Jul 2016 17:04:59 +0800, Chris Zhong wrote:
> At the first time of bind, there is no any panel attach in mipi. Add a
> DRM_CONNECTOR_POLL_HPD porperty to detect the panel status, when panel
> probe, the dw_mipi_dsi_host_attach would be called, then mipi-dsi will
> trigger a event to notify the drm framework.
>
> Signed-off-by: Chris Zhong <zyw@xxxxxxxxxxxxxx>
Can we do something like this instead? We know that the panel must
always be attached and this has the advantage that the display size will
be known when the framebuffer console loads.
-- >8 --
Subject: [PATCH] drm/rockchip: dw-mipi-dsi: defer probe if panel is not loaded
This ensures that the output resolution is known before fbcon loads.
Signed-off-by: John Keeping <john@xxxxxxxxxxxx>
---
drivers/gpu/drm/rockchip/dw-mipi-dsi.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/rockchip/dw-mipi-dsi.c b/drivers/gpu/drm/rockchip/dw-mipi-dsi.c
index 6ef5f3be8468..c0499266d116 100644
--- a/drivers/gpu/drm/rockchip/dw-mipi-dsi.c
+++ b/drivers/gpu/drm/rockchip/dw-mipi-dsi.c
@@ -1154,10 +1154,17 @@ static int dw_mipi_dsi_bind(struct device *dev, struct device *master,
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 && !dsi->panel) {
+ mipi_dsi_host_unregister(&dsi->dsi_host);
+ drm_encoder_cleanup(&dsi->encoder);
+ drm_connector_cleanup(&dsi->connector);
+ ret = -EPROBE_DEFER;
+ }
err_pllref:
- clk_disable_unprepare(dsi->pllref_clk);
+ if (ret)
+ clk_disable_unprepare(dsi->pllref_clk);
return ret;
}