drm/amd/display: Fix null timing generator resource
authorEric Bernstein <eric.bernstein@amd.com>
Mon, 30 Jul 2018 21:43:23 +0000 (17:43 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 5 Jul 2022 20:16:43 +0000 (16:16 -0400)
[Why]
For some customer blending transition cases, the
available pipe for second stream is a pipe index that is
greater than the number of timing generators, which
can cause a problem in acquire_first_free_pipe since it
assumes same index for pipe and timing generator

[How]
Added logic to use last timing generator index
if the pipe index is greater than number of timing generators.

Acked-by: Alan Liu <HaoPing.Liu@amd.com>
Signed-off-by: Eric Bernstein <eric.bernstein@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/core/dc_resource.c

index 3d45f6c..f7b47bf 100644 (file)
@@ -1885,6 +1885,12 @@ static int acquire_first_free_pipe(
                                pipe_ctx->plane_res.mpcc_inst = pool->dpps[i]->inst;
                        pipe_ctx->pipe_idx = i;
 
+                       if (i >= pool->timing_generator_count) {
+                               int tg_inst = pool->timing_generator_count - 1;
+
+                               pipe_ctx->stream_res.tg = pool->timing_generators[tg_inst];
+                               pipe_ctx->stream_res.opp = pool->opps[tg_inst];
+                       }
 
                        pipe_ctx->stream = stream;
                        return i;