diff options
author | Roman Li <Roman.Li@amd.com> | 2018-12-19 09:24:06 -0500 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2019-01-14 16:01:32 -0500 |
commit | f5c412ac596fbe1508514257fef3d48e263f40a7 (patch) | |
tree | ebf5af37eb816ac275796b699e4688c30d442a27 | |
parent | 20300db4aec5ba5edf6f0ad6f7111a51fbea7e10 (diff) |
drm/amd/display: fix warning on raven hotplug
[Why]
Hotplug on raven results in REG_WAIT_TIMEOUT warning
due to failing attempt to lock disabled otg for the hubp
interdependent pipes programming.
[How]
Don't setup pipe interdependencies for disabled otg.
Also removed the unnecessary duplicate logic checks.
Signed-off-by: Roman Li <Roman.Li@amd.com>
Reviewed-by: Dmytro Laktyushkin <Dmytro.Laktyushkin@amd.com>
Acked-by: Leo Li <sunpeng.li@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r-- | drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c | 19 |
1 files changed, 6 insertions, 13 deletions
diff --git a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c index 91e015e14355..58a12ddf12f3 100644 --- a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c +++ b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c | |||
@@ -2355,29 +2355,22 @@ static void dcn10_apply_ctx_for_surface( | |||
2355 | top_pipe_to_program->plane_state->update_flags.bits.full_update) | 2355 | top_pipe_to_program->plane_state->update_flags.bits.full_update) |
2356 | for (i = 0; i < dc->res_pool->pipe_count; i++) { | 2356 | for (i = 0; i < dc->res_pool->pipe_count; i++) { |
2357 | struct pipe_ctx *pipe_ctx = &context->res_ctx.pipe_ctx[i]; | 2357 | struct pipe_ctx *pipe_ctx = &context->res_ctx.pipe_ctx[i]; |
2358 | 2358 | tg = pipe_ctx->stream_res.tg; | |
2359 | /* Skip inactive pipes and ones already updated */ | 2359 | /* Skip inactive pipes and ones already updated */ |
2360 | if (!pipe_ctx->stream || pipe_ctx->stream == stream | 2360 | if (!pipe_ctx->stream || pipe_ctx->stream == stream |
2361 | || !pipe_ctx->plane_state) | 2361 | || !pipe_ctx->plane_state |
2362 | || !tg->funcs->is_tg_enabled(tg)) | ||
2362 | continue; | 2363 | continue; |
2363 | 2364 | ||
2364 | pipe_ctx->stream_res.tg->funcs->lock(pipe_ctx->stream_res.tg); | 2365 | tg->funcs->lock(tg); |
2365 | 2366 | ||
2366 | pipe_ctx->plane_res.hubp->funcs->hubp_setup_interdependent( | 2367 | pipe_ctx->plane_res.hubp->funcs->hubp_setup_interdependent( |
2367 | pipe_ctx->plane_res.hubp, | 2368 | pipe_ctx->plane_res.hubp, |
2368 | &pipe_ctx->dlg_regs, | 2369 | &pipe_ctx->dlg_regs, |
2369 | &pipe_ctx->ttu_regs); | 2370 | &pipe_ctx->ttu_regs); |
2370 | } | ||
2371 | |||
2372 | for (i = 0; i < dc->res_pool->pipe_count; i++) { | ||
2373 | struct pipe_ctx *pipe_ctx = &context->res_ctx.pipe_ctx[i]; | ||
2374 | 2371 | ||
2375 | if (!pipe_ctx->stream || pipe_ctx->stream == stream | 2372 | tg->funcs->unlock(tg); |
2376 | || !pipe_ctx->plane_state) | 2373 | } |
2377 | continue; | ||
2378 | |||
2379 | dcn10_pipe_control_lock(dc, pipe_ctx, false); | ||
2380 | } | ||
2381 | 2374 | ||
2382 | if (num_planes == 0) | 2375 | if (num_planes == 0) |
2383 | false_optc_underflow_wa(dc, stream, tg); | 2376 | false_optc_underflow_wa(dc, stream, tg); |