Commit cf17039f authored by Eric Huang's avatar Eric Huang Committed by Alex Deucher

drm/amd/powerplay: keep soft_pp_table pointer value for re-uploading

Necessary for updating pptables at runtime.
Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Signed-off-by: default avatarEric Huang <JinHuiEric.Huang@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 50ab2533
...@@ -794,15 +794,18 @@ static const ATOM_PPLIB_STATE_V2 *get_state_entry_v2( ...@@ -794,15 +794,18 @@ static const ATOM_PPLIB_STATE_V2 *get_state_entry_v2(
static const ATOM_PPLIB_POWERPLAYTABLE *get_powerplay_table( static const ATOM_PPLIB_POWERPLAYTABLE *get_powerplay_table(
struct pp_hwmgr *hwmgr) struct pp_hwmgr *hwmgr)
{ {
const void *table_addr = NULL; const void *table_addr = hwmgr->soft_pp_table;
uint8_t frev, crev; uint8_t frev, crev;
uint16_t size; uint16_t size;
if (!table_addr) {
table_addr = cgs_atom_get_data_table(hwmgr->device, table_addr = cgs_atom_get_data_table(hwmgr->device,
GetIndexIntoMasterTable(DATA, PowerPlayInfo), GetIndexIntoMasterTable(DATA, PowerPlayInfo),
&size, &frev, &crev); &size, &frev, &crev);
hwmgr->soft_pp_table = table_addr; hwmgr->soft_pp_table = table_addr;
hwmgr->soft_pp_table_size = size;
}
return (const ATOM_PPLIB_POWERPLAYTABLE *)table_addr; return (const ATOM_PPLIB_POWERPLAYTABLE *)table_addr;
} }
...@@ -1589,11 +1592,6 @@ static int pp_tables_initialize(struct pp_hwmgr *hwmgr) ...@@ -1589,11 +1592,6 @@ static int pp_tables_initialize(struct pp_hwmgr *hwmgr)
static int pp_tables_uninitialize(struct pp_hwmgr *hwmgr) static int pp_tables_uninitialize(struct pp_hwmgr *hwmgr)
{ {
if (NULL != hwmgr->soft_pp_table) {
kfree(hwmgr->soft_pp_table);
hwmgr->soft_pp_table = NULL;
}
if (NULL != hwmgr->dyn_state.vddc_dependency_on_sclk) { if (NULL != hwmgr->dyn_state.vddc_dependency_on_sclk) {
kfree(hwmgr->dyn_state.vddc_dependency_on_sclk); kfree(hwmgr->dyn_state.vddc_dependency_on_sclk);
hwmgr->dyn_state.vddc_dependency_on_sclk = NULL; hwmgr->dyn_state.vddc_dependency_on_sclk = NULL;
......
...@@ -1077,9 +1077,6 @@ int tonga_pp_tables_uninitialize(struct pp_hwmgr *hwmgr) ...@@ -1077,9 +1077,6 @@ int tonga_pp_tables_uninitialize(struct pp_hwmgr *hwmgr)
struct phm_ppt_v1_information *pp_table_information = struct phm_ppt_v1_information *pp_table_information =
(struct phm_ppt_v1_information *)(hwmgr->pptable); (struct phm_ppt_v1_information *)(hwmgr->pptable);
if (NULL != hwmgr->soft_pp_table)
hwmgr->soft_pp_table = NULL;
kfree(pp_table_information->vdd_dep_on_sclk); kfree(pp_table_information->vdd_dep_on_sclk);
pp_table_information->vdd_dep_on_sclk = NULL; pp_table_information->vdd_dep_on_sclk = NULL;
......
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