From: Nicholas Susanto <nicholas.susa...@amd.com>

[ Upstream commit 2ce156482a6fef349d2eba98e5070c412d3af662 ]

[Why]
When switching to another HDMI mode, we are unnecesarilly
disabling/enabling FIFO causing both HPO and DIG registers to be set at
the same time when only HPO is supposed to be set.

This can lead to a system hang the next time we change refresh rates as
there are cases when we don't disable OTG/FIFO but FIFO is enabled when
it isn't supposed to be.

[How]
Removing the enable/disable FIFO entirely.

Tested-by: Daniel Wheeler <daniel.whee...@amd.com>
Reviewed-by: Nicholas Kazlauskas <nicholas.kazlaus...@amd.com>
Acked-by: Rodrigo Siqueira <rodrigo.sique...@amd.com>
Signed-off-by: Nicholas Susanto <nicholas.susa...@amd.com>
Signed-off-by: Alex Deucher <alexander.deuc...@amd.com>
Signed-off-by: Sasha Levin <sas...@kernel.org>
---
 .../gpu/drm/amd/display/dc/clk_mgr/dcn35/dcn35_clk_mgr.c  | 8 --------
 1 file changed, 8 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn35/dcn35_clk_mgr.c 
b/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn35/dcn35_clk_mgr.c
index d5fde7d23fbf..f3b0af2c0295 100644
--- a/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn35/dcn35_clk_mgr.c
+++ b/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn35/dcn35_clk_mgr.c
@@ -126,21 +126,13 @@ static void dcn35_disable_otg_wa(struct clk_mgr 
*clk_mgr_base, struct dc_state *
                        continue;
                if (pipe->stream && (pipe->stream->dpms_off || 
dc_is_virtual_signal(pipe->stream->signal) ||
                                     !pipe->stream->link_enc)) {
-                       struct stream_encoder *stream_enc = 
pipe->stream_res.stream_enc;
-
                        if (disable) {
-                               if (stream_enc && 
stream_enc->funcs->disable_fifo)
-                                       
pipe->stream_res.stream_enc->funcs->disable_fifo(stream_enc);
-
                                if (pipe->stream_res.tg && 
pipe->stream_res.tg->funcs->immediate_disable_crtc)
                                        
pipe->stream_res.tg->funcs->immediate_disable_crtc(pipe->stream_res.tg);
 
                                reset_sync_context_for_pipe(dc, context, i);
                        } else {
                                
pipe->stream_res.tg->funcs->enable_crtc(pipe->stream_res.tg);
-
-                               if (stream_enc && 
stream_enc->funcs->enable_fifo)
-                                       
pipe->stream_res.stream_enc->funcs->enable_fifo(stream_enc);
                        }
                }
        }
-- 
2.43.0

Reply via email to