drm/amd/display: use encoder type independent hwss instead of accessing enc directly
authorWenjing Liu <wenjing.liu@amd.com>
Thu, 24 Nov 2022 21:40:53 +0000 (16:40 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 15 Dec 2022 17:18:18 +0000 (12:18 -0500)
[why]
in dc_link_dp there still exist a few places where we call dio encoders
without checking current enabled encoder type.
The change is to make these places to call hwss equivalent functions so
it won't mistakenly program a wrong type encoder.

Reviewed-by: George Shen <George.Shen@amd.com>
Acked-by: Jasdeep Dhillon <jdhillon@amd.com>
Signed-off-by: Wenjing Liu <wenjing.liu@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c

index 475ad3e..f283a15 100644 (file)
@@ -6114,7 +6114,7 @@ bool dc_link_dp_set_test_pattern(
                         * MuteAudioEndpoint(pPathMode->pDisplayPath, true);
                         */
                        /* Blank stream */
-                       pipes->stream_res.stream_enc->funcs->dp_blank(link, pipe_ctx->stream_res.stream_enc);
+                       link->dc->hwss.blank_stream(pipe_ctx);
                }
 
                dp_set_hw_test_pattern(link, &pipe_ctx->link_res, test_pattern,
@@ -7260,8 +7260,7 @@ void dp_retrain_link_dp_test(struct dc_link *link,
                        pipes[i].stream->link == link) {
                        udelay(100);
 
-                       pipes[i].stream_res.stream_enc->funcs->dp_blank(link,
-                                       pipes[i].stream_res.stream_enc);
+                       link->dc->hwss.blank_stream(&pipes[i]);
 
                        /* disable any test pattern that might be active */
                        dp_set_hw_test_pattern(link, &pipes[i].link_res,
@@ -7270,17 +7269,10 @@ void dp_retrain_link_dp_test(struct dc_link *link,
                        dp_receiver_power_ctrl(link, false);
 
                        link->dc->hwss.disable_stream(&pipes[i]);
-                       if ((&pipes[i])->stream_res.audio && !link->dc->debug.az_endpoint_mute_only)
-                               (&pipes[i])->stream_res.audio->funcs->az_disable((&pipes[i])->stream_res.audio);
+                       if (pipes[i].stream_res.audio && !link->dc->debug.az_endpoint_mute_only)
+                               pipes[i].stream_res.audio->funcs->az_disable(pipes[i].stream_res.audio);
 
-                       if (link->link_enc)
-                               link->link_enc->funcs->disable_output(
-                                               link->link_enc,
-                                               SIGNAL_TYPE_DISPLAY_PORT);
-
-                       /* Clear current link setting. */
-                       memset(&link->cur_link_settings, 0,
-                               sizeof(link->cur_link_settings));
+                       link->dc->hwss.disable_link_output(link, &pipes[i].link_res, SIGNAL_TYPE_DISPLAY_PORT);
 
                        if (link->ep_type == DISPLAY_ENDPOINT_USB4_DPIA)
                                do_fallback = true;