Commit 65e05ca7 authored by Joshua Aberback's avatar Joshua Aberback Committed by Alex Deucher

drm/amd/display: Create and Destroy PSR resources for DCN302

We need these to support PSR on DCN302
Signed-off-by: default avatarJoshua Aberback <joshua.aberback@amd.com>
Signed-off-by: default avatarBhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
Acked-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 71338cb4
...@@ -53,6 +53,7 @@ ...@@ -53,6 +53,7 @@
#include "dce/dce_i2c_hw.h" #include "dce/dce_i2c_hw.h"
#include "dce/dce_panel_cntl.h" #include "dce/dce_panel_cntl.h"
#include "dce/dmub_abm.h" #include "dce/dmub_abm.h"
#include "dce/dmub_psr.h"
#include "hw_sequencer_private.h" #include "hw_sequencer_private.h"
#include "reg_helper.h" #include "reg_helper.h"
...@@ -238,6 +239,7 @@ static const struct dc_debug_options debug_defaults_diags = { ...@@ -238,6 +239,7 @@ static const struct dc_debug_options debug_defaults_diags = {
.dwb_fi_phase = -1, // -1 = disable .dwb_fi_phase = -1, // -1 = disable
.dmub_command_table = true, .dmub_command_table = true,
.enable_tri_buf = true, .enable_tri_buf = true,
.disable_psr = true,
}; };
enum dcn302_clk_src_array_id { enum dcn302_clk_src_array_id {
...@@ -1213,6 +1215,9 @@ static void dcn302_resource_destruct(struct resource_pool *pool) ...@@ -1213,6 +1215,9 @@ static void dcn302_resource_destruct(struct resource_pool *pool)
dce_abm_destroy(&pool->multiple_abms[i]); dce_abm_destroy(&pool->multiple_abms[i]);
} }
if (pool->psr != NULL)
dmub_psr_destroy(&pool->psr);
if (pool->dccg != NULL) if (pool->dccg != NULL)
dcn_dccg_destroy(&pool->dccg); dcn_dccg_destroy(&pool->dccg);
} }
...@@ -1467,6 +1472,14 @@ static bool dcn302_resource_construct( ...@@ -1467,6 +1472,14 @@ static bool dcn302_resource_construct(
} }
pool->timing_generator_count = i; pool->timing_generator_count = i;
/* PSR */
pool->psr = dmub_psr_create(ctx);
if (pool->psr == NULL) {
dm_error("DC: failed to create psr!\n");
BREAK_TO_DEBUGGER();
goto create_fail;
}
/* ABMs */ /* ABMs */
for (i = 0; i < pool->res_cap->num_timing_generator; i++) { for (i = 0; i < pool->res_cap->num_timing_generator; i++) {
pool->multiple_abms[i] = dmub_abm_create(ctx, &abm_regs[i], &abm_shift, &abm_mask); pool->multiple_abms[i] = dmub_abm_create(ctx, &abm_regs[i], &abm_shift, &abm_mask);
......
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