Commit 58c69b53 authored by Felipe Clark's avatar Felipe Clark Committed by Alex Deucher

drm/amd/display: Fix black screen issue on memory clock switch en

[WHY]
With some monitors when multi plane overlay is enabled the memory
clock switching mechanism has to change and, due to an error in the
initialization sequence, it may cause a black screen.

[HOW]
Change the firmware assisted memory clock switch initialization and
tear-down sequence utilizing the prepare_bandwidth and
optimize_bandwidth contexts.
Reviewed-by: default avatarAric Cyr <Aric.Cyr@amd.com>
Acked-by: default avatarWayne Lin <wayne.lin@amd.com>
Signed-off-by: default avatarFelipe Clark <feclark@amd.com>
Tested-by: default avatarDaniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 6421c495
...@@ -355,6 +355,11 @@ void dcn30_prepare_bandwidth(struct dc *dc, ...@@ -355,6 +355,11 @@ void dcn30_prepare_bandwidth(struct dc *dc,
dcn20_prepare_bandwidth(dc, context); dcn20_prepare_bandwidth(dc, context);
} }
void dcn30_optimize_bandwidth(struct dc *dc, struct dc_state *context)
{
dcn20_optimize_bandwidth(dc, context);
}
void dcn30_disable_writeback( void dcn30_disable_writeback(
struct dc *dc, struct dc *dc,
unsigned int dwb_pipe_inst) unsigned int dwb_pipe_inst)
......
...@@ -50,6 +50,9 @@ void dcn30_disable_writeback( ...@@ -50,6 +50,9 @@ void dcn30_disable_writeback(
void dcn30_prepare_bandwidth(struct dc *dc, void dcn30_prepare_bandwidth(struct dc *dc,
struct dc_state *context); struct dc_state *context);
void dcn30_optimize_bandwidth(struct dc *dc,
struct dc_state *context);
bool dcn30_mmhubbub_warmup( bool dcn30_mmhubbub_warmup(
struct dc *dc, struct dc *dc,
unsigned int num_dwb, unsigned int num_dwb,
......
...@@ -60,7 +60,7 @@ static const struct hw_sequencer_funcs dcn30_funcs = { ...@@ -60,7 +60,7 @@ static const struct hw_sequencer_funcs dcn30_funcs = {
.interdependent_update_lock = dcn10_lock_all_pipes, .interdependent_update_lock = dcn10_lock_all_pipes,
.cursor_lock = dcn10_cursor_lock, .cursor_lock = dcn10_cursor_lock,
.prepare_bandwidth = dcn20_prepare_bandwidth, .prepare_bandwidth = dcn20_prepare_bandwidth,
.optimize_bandwidth = dcn20_optimize_bandwidth, .optimize_bandwidth = dcn30_optimize_bandwidth,
.update_bandwidth = dcn20_update_bandwidth, .update_bandwidth = dcn20_update_bandwidth,
.set_drr = dcn10_set_drr, .set_drr = dcn10_set_drr,
.get_position = dcn10_get_position, .get_position = dcn10_get_position,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment