Commit 6bf52028 authored by Hersen Wu's avatar Hersen Wu Committed by Alex Deucher

drm/amd/display: Driver message to SMU to indicate display off

Signed-off-by: default avatarHersen Wu <hersenxs.wu@amd.com>
Reviewed-by: default avatarTony Cheng <Tony.Cheng@amd.com>
Acked-by: default avatarHarry Wentland <Harry.Wentland@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 2a0b4d85
...@@ -763,7 +763,7 @@ static bool dc_commit_state_no_check(struct dc *dc, struct dc_state *context) ...@@ -763,7 +763,7 @@ static bool dc_commit_state_no_check(struct dc *dc, struct dc_state *context)
if (!dcb->funcs->is_accelerated_mode(dcb)) if (!dcb->funcs->is_accelerated_mode(dcb))
dc->hwss.enable_accelerated_mode(dc); dc->hwss.enable_accelerated_mode(dc);
dc->hwss.ready_shared_resources(dc); dc->hwss.ready_shared_resources(dc, context);
for (i = 0; i < dc->res_pool->pipe_count; i++) { for (i = 0; i < dc->res_pool->pipe_count; i++) {
pipe = &context->res_ctx.pipe_ctx[i]; pipe = &context->res_ctx.pipe_ctx[i];
......
...@@ -1889,6 +1889,7 @@ enum dc_status dce110_apply_ctx_to_hw( ...@@ -1889,6 +1889,7 @@ enum dc_status dce110_apply_ctx_to_hw(
return status; return status;
} }
/* pplib is notified if disp_num changed */
dc->hwss.set_bandwidth(dc, context, true); dc->hwss.set_bandwidth(dc, context, true);
/* to save power */ /* to save power */
...@@ -2683,7 +2684,7 @@ static void program_csc_matrix(struct pipe_ctx *pipe_ctx, ...@@ -2683,7 +2684,7 @@ static void program_csc_matrix(struct pipe_ctx *pipe_ctx,
} }
} }
static void ready_shared_resources(struct dc *dc) {} static void ready_shared_resources(struct dc *dc, struct dc_state *context) {}
static void optimize_shared_resources(struct dc *dc) {} static void optimize_shared_resources(struct dc *dc) {}
......
...@@ -802,18 +802,14 @@ static void undo_DEGVIDCN10_253_wa(struct dc *dc) ...@@ -802,18 +802,14 @@ static void undo_DEGVIDCN10_253_wa(struct dc *dc)
IP_REQUEST_EN, 0); IP_REQUEST_EN, 0);
} }
static void ready_shared_resources(struct dc *dc)
{
if (dc->current_state->stream_count == 0 &&
!dc->debug.disable_stutter)
undo_DEGVIDCN10_253_wa(dc);
}
static void apply_DEGVIDCN10_253_wa(struct dc *dc) static void apply_DEGVIDCN10_253_wa(struct dc *dc)
{ {
struct dce_hwseq *hws = dc->hwseq; struct dce_hwseq *hws = dc->hwseq;
struct mem_input *mi = dc->res_pool->mis[0]; struct mem_input *mi = dc->res_pool->mis[0];
if (dc->debug.disable_stutter)
return;
REG_SET(DC_IP_REQUEST_CNTL, 0, REG_SET(DC_IP_REQUEST_CNTL, 0,
IP_REQUEST_EN, 1); IP_REQUEST_EN, 1);
...@@ -824,13 +820,6 @@ static void apply_DEGVIDCN10_253_wa(struct dc *dc) ...@@ -824,13 +820,6 @@ static void apply_DEGVIDCN10_253_wa(struct dc *dc)
mi->funcs->set_hubp_blank_en(mi, false); mi->funcs->set_hubp_blank_en(mi, false);
} }
static void optimize_shared_resources(struct dc *dc)
{
if (dc->current_state->stream_count == 0 &&
!dc->debug.disable_stutter)
apply_DEGVIDCN10_253_wa(dc);
}
static void bios_golden_init(struct dc *dc) static void bios_golden_init(struct dc *dc)
{ {
struct dc_bios *bp = dc->ctx->dc_bios; struct dc_bios *bp = dc->ctx->dc_bios;
...@@ -2445,6 +2434,27 @@ static void dcn10_pplib_apply_display_requirements( ...@@ -2445,6 +2434,27 @@ static void dcn10_pplib_apply_display_requirements(
dc->prev_display_config = *pp_display_cfg; dc->prev_display_config = *pp_display_cfg;
} }
static void optimize_shared_resources(struct dc *dc)
{
if (dc->current_state->stream_count == 0) {
apply_DEGVIDCN10_253_wa(dc);
/* S0i2 message */
dcn10_pplib_apply_display_requirements(dc, dc->current_state);
}
}
static void ready_shared_resources(struct dc *dc, struct dc_state *context)
{
if (dc->current_state->stream_count == 0 &&
!dc->debug.disable_stutter)
undo_DEGVIDCN10_253_wa(dc);
/* S0i2 message */
if (dc->current_state->stream_count == 0 &&
context->stream_count != 0)
dcn10_pplib_apply_display_requirements(dc, context);
}
static void dcn10_apply_ctx_for_surface( static void dcn10_apply_ctx_for_surface(
struct dc *dc, struct dc *dc,
const struct dc_stream_state *stream, const struct dc_stream_state *stream,
......
...@@ -174,7 +174,7 @@ struct hw_sequencer_funcs { ...@@ -174,7 +174,7 @@ struct hw_sequencer_funcs {
struct resource_pool *res_pool, struct resource_pool *res_pool,
struct pipe_ctx *pipe_ctx); struct pipe_ctx *pipe_ctx);
void (*ready_shared_resources)(struct dc *dc); void (*ready_shared_resources)(struct dc *dc, struct dc_state *context);
void (*optimize_shared_resources)(struct dc *dc); void (*optimize_shared_resources)(struct dc *dc);
}; };
......
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