drm/amd/display: Add explicit FIFO disable for DP blank
authorNicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Thu, 8 Sep 2022 15:11:47 +0000 (11:11 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 27 Sep 2022 21:56:51 +0000 (17:56 -0400)
[Why]
We rely on DMCUB to do this when disabling the link but it should
actually come before we disable the DP VID stream.

If we don't then the FIFO can end up with underflow that persists
the next time it's enabled.

[How]
Add a DCN314 specific blank sequence that will disable the DIG FIFO
first.

Reviewed-by: Syed Hassan <Syed.Hassan@amd.com>
Acked-by: Jasdeep Dhillon <jdhillon@amd.com>
Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/dcn314/dcn314_dio_stream_encoder.c

index 52b71b2..8c0ab01 100644 (file)
@@ -262,6 +262,16 @@ static bool is_two_pixels_per_containter(const struct dc_crtc_timing *timing)
        return two_pix;
 }
 
+void enc314_stream_encoder_dp_blank(
+       struct dc_link *link,
+       struct stream_encoder *enc)
+{
+       /* New to DCN314 - disable the FIFO before VID stream disable. */
+       enc314_disable_fifo(enc);
+
+       enc1_stream_encoder_dp_blank(link, enc);
+}
+
 static void enc314_stream_encoder_dp_unblank(
                struct dc_link *link,
                struct stream_encoder *enc,
@@ -411,7 +421,7 @@ static const struct stream_encoder_funcs dcn314_str_enc_funcs = {
        .stop_dp_info_packets =
                enc1_stream_encoder_stop_dp_info_packets,
        .dp_blank =
-               enc1_stream_encoder_dp_blank,
+               enc314_stream_encoder_dp_blank,
        .dp_unblank =
                enc314_stream_encoder_dp_unblank,
        .audio_mute_control = enc3_audio_mute_control,