drm/amd/display: Prevent master programming in multisync
authorMikita Lipski <mikita.lipski@amd.com>
Mon, 18 Dec 2017 15:34:56 +0000 (10:34 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 19 Feb 2018 19:17:21 +0000 (14:17 -0500)
Verify that the stream is master - and program only the slave displays

Signed-off-by: Mikita Lipski <mikita.lipski@amd.com>
Reviewed-by: Tony Cheng <Tony.Cheng@amd.com>
Acked-by: Harry Wentland <harry.wentland@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
drivers/gpu/drm/amd/display/dc/core/dc.c
drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c

index cf3518f9a6ed260ee60a81cbac445a8d651e5e17..bb1872782fb56a825645f58eae88f7ea79548652 100644 (file)
@@ -2348,7 +2348,7 @@ static void set_master_stream(struct dc_stream_state *stream_set[],
                }
        }
        for (j = 0;  j < stream_count; j++) {
-               if (stream_set[j] && j != master_stream)
+               if (stream_set[j])
                        stream_set[j]->triggered_crtc_reset.event_source = stream_set[master_stream];
        }
 }
index 59ad71a8ced0a95bc72fe0d8e4e6efcb06a732cd..7938c17468415acacf55cb7835bf378431496f29 100644 (file)
@@ -521,11 +521,13 @@ static void enable_timing_multisync(
                if (!ctx->res_ctx.pipe_ctx[i].stream ||
                                !ctx->res_ctx.pipe_ctx[i].stream->triggered_crtc_reset.enabled)
                        continue;
+               if (ctx->res_ctx.pipe_ctx[i].stream == ctx->res_ctx.pipe_ctx[i].stream->triggered_crtc_reset.event_source)
+                       continue;
                multisync_pipes[multisync_count] = &ctx->res_ctx.pipe_ctx[i];
                multisync_count++;
        }
 
-       if (multisync_count > 1) {
+       if (multisync_count > 0) {
                dc->hwss.enable_per_frame_crtc_position_reset(
                        dc, multisync_count, multisync_pipes);
        }
index 52e31e798921e96a5a16ce2ccce5353139a26638..0f5a22e3a491c69b7c1f8a25995c5b294daf3eb3 100644 (file)
@@ -1097,7 +1097,7 @@ static void dcn10_enable_per_frame_crtc_position_reset(
 
        DC_SYNC_INFO("Waiting for trigger\n");
 
-       for (i = 1; i < group_size; i++)
+       for (i = 0; i < group_size; i++)
                wait_for_reset_trigger_to_occur(dc_ctx, grouped_pipes[i]->stream_res.tg);
 
        DC_SYNC_INFO("Multi-display sync is complete\n");