From: Hugo Hu Date: Wed, 13 May 2020 08:36:28 +0000 (+0800) Subject: drm/amd/display: enable plane if container of plane_status changed X-Git-Tag: v5.9-rc1~134^2~19^2~436 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=fd0293dd5b68a67a8731d54a6b334945e4e95757;p=thirdparty%2Fkernel%2Flinux.git drm/amd/display: enable plane if container of plane_status changed [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 Reviewed-by: Tony Cheng Acked-by: Qingqing Zhuo Signed-off-by: Alex Deucher --- 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 223e314d26b4d..13183bd7ea0ff 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;