Commit 540c1229 authored by Tao.Huang's avatar Tao.Huang Committed by Alex Deucher

drm/amd/display: fix resource saving missing when power state switch

Signed-off-by: default avatarTao.Huang <Tao.Huang@amd.com>
Reviewed-by: default avatarJun Lei <Jun.Lei@amd.com>
Acked-by: default avatarBhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent c3e50f89
...@@ -1930,6 +1930,12 @@ void dc_set_power_state( ...@@ -1930,6 +1930,12 @@ void dc_set_power_state(
enum dc_acpi_cm_power_state power_state) enum dc_acpi_cm_power_state power_state)
{ {
struct kref refcount; struct kref refcount;
struct display_mode_lib *dml = kzalloc(sizeof(struct display_mode_lib),
GFP_KERNEL);
ASSERT(dml);
if (!dml)
return;
switch (power_state) { switch (power_state) {
case DC_ACPI_CM_POWER_STATE_D0: case DC_ACPI_CM_POWER_STATE_D0:
...@@ -1946,15 +1952,20 @@ void dc_set_power_state( ...@@ -1946,15 +1952,20 @@ void dc_set_power_state(
/* Preserve refcount */ /* Preserve refcount */
refcount = dc->current_state->refcount; refcount = dc->current_state->refcount;
/* Preserve display mode lib */
memcpy(dml, &dc->current_state->bw_ctx.dml, sizeof(struct display_mode_lib));
dc_resource_state_destruct(dc->current_state); dc_resource_state_destruct(dc->current_state);
memset(dc->current_state, 0, memset(dc->current_state, 0,
sizeof(*dc->current_state)); sizeof(*dc->current_state));
dc->current_state->refcount = refcount; dc->current_state->refcount = refcount;
dc->current_state->bw_ctx.dml = *dml;
break; break;
} }
kfree(dml);
} }
void dc_resume(struct dc *dc) void dc_resume(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