From: Samson Tam <[email protected]>

[Why]
The edge-case DISPCLK WDIVIDER changes call stream_enc functions.
But with MPC pipes, downstream pipes have null stream_enc and will
 cause crash.

[How]
Only call stream_enc functions for pipes that are OTG master.

Reviewed-by: Alvin Lee <[email protected]>
Cc: Mario Limonciello <[email protected]>
Cc: Alex Deucher <[email protected]>
Cc: [email protected]
Acked-by: Aurabindo Pillai <[email protected]>
Signed-off-by: Samson Tam <[email protected]>
---
 drivers/gpu/drm/amd/display/dc/clk_mgr/dcn20/dcn20_clk_mgr.c | 4 ++--
 drivers/gpu/drm/amd/display/dc/clk_mgr/dcn32/dcn32_clk_mgr.c | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn20/dcn20_clk_mgr.c 
b/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn20/dcn20_clk_mgr.c
index c435f7632e8e..5ee87965a078 100644
--- a/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn20/dcn20_clk_mgr.c
+++ b/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn20/dcn20_clk_mgr.c
@@ -157,7 +157,7 @@ void dcn20_update_clocks_update_dentist(struct 
clk_mgr_internal *clk_mgr, struct
                        int32_t N;
                        int32_t j;
 
-                       if (!pipe_ctx->stream)
+                       if (!resource_is_pipe_type(pipe_ctx, OTG_MASTER))
                                continue;
                        /* Virtual encoders don't have this function */
                        if (!stream_enc->funcs->get_fifo_cal_average_level)
@@ -188,7 +188,7 @@ void dcn20_update_clocks_update_dentist(struct 
clk_mgr_internal *clk_mgr, struct
                        int32_t N;
                        int32_t j;
 
-                       if (!pipe_ctx->stream)
+                       if (!resource_is_pipe_type(pipe_ctx, OTG_MASTER))
                                continue;
                        /* Virtual encoders don't have this function */
                        if (!stream_enc->funcs->get_fifo_cal_average_level)
diff --git a/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn32/dcn32_clk_mgr.c 
b/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn32/dcn32_clk_mgr.c
index 37ffa0050e60..a496930b1f9c 100644
--- a/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn32/dcn32_clk_mgr.c
+++ b/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn32/dcn32_clk_mgr.c
@@ -363,7 +363,7 @@ static void dcn32_update_clocks_update_dentist(
                        int32_t N;
                        int32_t j;
 
-                       if (!pipe_ctx->stream)
+                       if (!resource_is_pipe_type(pipe_ctx, OTG_MASTER))
                                continue;
                        /* Virtual encoders don't have this function */
                        if (!stream_enc->funcs->get_fifo_cal_average_level)
@@ -409,7 +409,7 @@ static void dcn32_update_clocks_update_dentist(
                        int32_t N;
                        int32_t j;
 
-                       if (!pipe_ctx->stream)
+                       if (!resource_is_pipe_type(pipe_ctx, OTG_MASTER))
                                continue;
                        /* Virtual encoders don't have this function */
                        if (!stream_enc->funcs->get_fifo_cal_average_level)
-- 
2.42.0

Reply via email to