summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/tidss/tidss_dispc.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/tidss/tidss_dispc.c')
-rw-r--r--drivers/gpu/drm/tidss/tidss_dispc.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/gpu/drm/tidss/tidss_dispc.c b/drivers/gpu/drm/tidss/tidss_dispc.c
index 079104b03440..109bdf5ae4d3 100644
--- a/drivers/gpu/drm/tidss/tidss_dispc.c
+++ b/drivers/gpu/drm/tidss/tidss_dispc.c
@@ -3357,7 +3357,12 @@ static int dispc_init_hw(struct dispc_device *dispc)
dispc->tidss->boot_enabled_vp_mask = 0;
- if (dispc_is_idle(dispc)) {
+ /* HACK: If simple-framebuffer device is absent, then soft reset dispc even if it is not
+ * idle. This is to avoid powering-off of DSS (which can happen due
+ * to probe deferral waiting for child drivers) while DSS is active thus leading to system
+ * hang.
+ */
+ if (dispc_is_idle(dispc) || !dispc->tidss->simplefb_enabled) {
ret = dispc_softreset(dispc);
if (ret)
goto err_clk_disable;