drm/amd/display: Change power gating off sequence to fix hang
authorYongqiang Sun <yongqiang.sun@amd.com>
Fri, 27 Jan 2017 15:29:01 +0000 (10:29 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 26 Sep 2017 21:12:48 +0000 (17:12 -0400)
Power off plane clear all the reg values includes cursor.
When OS call set cursor position, cursor address reg is cleared,
results in system hard hang.

Signed-off-by: Yongqiang Sun <yongqiang.sun@amd.com>
Reviewed-by: Tony Cheng <Tony.Cheng@amd.com>
Acked-by: Harry Wentland <Harry.Wentland@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/core/dc.c

index 7571815..474c2d4 100644 (file)
@@ -1254,9 +1254,12 @@ bool dc_post_update_surfaces_to_stream(struct dc *dc)
        post_surface_trace(dc);
 
        for (i = 0; i < core_dc->current_context->res_ctx.pool->pipe_count; i++)
-               if (core_dc->current_context->res_ctx.pipe_ctx[i].stream == NULL)
+               if (core_dc->current_context->res_ctx.pipe_ctx[i].stream == NULL) {
+                       core_dc->current_context->res_ctx.pipe_ctx[i].pipe_idx = i;
                        core_dc->hwss.power_down_front_end(
-                               core_dc, &core_dc->current_context->res_ctx.pipe_ctx[i]);
+                                                       core_dc, &core_dc->current_context->res_ctx.pipe_ctx[i]);
+               }
+
 
        if (core_dc->res_pool->funcs->validate_bandwidth(core_dc, core_dc->current_context)
                        != DC_OK) {