From: Hugo Hu <hugo.hu@xxxxxxx> [why] We hit an issue which driver reallocate a pipe from desktop bottom pipe to video bottom pipe. In this case, driver need to re-enable plane. [how] Enable plane if container of plane status changed. Signed-off-by: Hugo Hu <hugo.hu@xxxxxxx> Reviewed-by: Tony Cheng <Tony.Cheng@xxxxxxx> Acked-by: Qingqing Zhuo <qingqing.zhuo@xxxxxxx> --- drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c index 223e314d26b4..13183bd7ea0f 100644 --- a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c +++ b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c @@ -1160,13 +1160,20 @@ void dcn20_pipe_control_lock( static void dcn20_detect_pipe_changes(struct pipe_ctx *old_pipe, struct pipe_ctx *new_pipe) { + bool plane_state_update = false; new_pipe->update_flags.raw = 0; /* Exit on unchanged, unused pipe */ if (!old_pipe->plane_state && !new_pipe->plane_state) return; + + /* Detect plane state update */ + if (old_pipe->plane_state && new_pipe->plane_state + && (old_pipe->plane_state != new_pipe->plane_state)) { + plane_state_update = true; + } /* Detect pipe enable/disable */ - if (!old_pipe->plane_state && new_pipe->plane_state) { + if ((!old_pipe->plane_state && new_pipe->plane_state) || plane_state_update) { new_pipe->update_flags.bits.enable = 1; new_pipe->update_flags.bits.mpcc = 1; new_pipe->update_flags.bits.dppclk = 1; -- 2.17.1 _______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx