|
@@ -794,15 +794,18 @@ static const ATOM_PPLIB_STATE_V2 *get_state_entry_v2(
|
|
|
static const ATOM_PPLIB_POWERPLAYTABLE *get_powerplay_table(
|
|
|
struct pp_hwmgr *hwmgr)
|
|
|
{
|
|
|
- const void *table_addr = NULL;
|
|
|
+ const void *table_addr = hwmgr->soft_pp_table;
|
|
|
uint8_t frev, crev;
|
|
|
uint16_t size;
|
|
|
|
|
|
- table_addr = cgs_atom_get_data_table(hwmgr->device,
|
|
|
- GetIndexIntoMasterTable(DATA, PowerPlayInfo),
|
|
|
- &size, &frev, &crev);
|
|
|
+ if (!table_addr) {
|
|
|
+ table_addr = cgs_atom_get_data_table(hwmgr->device,
|
|
|
+ GetIndexIntoMasterTable(DATA, PowerPlayInfo),
|
|
|
+ &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;
|
|
|
}
|
|
@@ -1589,11 +1592,6 @@ static int pp_tables_initialize(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) {
|
|
|
kfree(hwmgr->dyn_state.vddc_dependency_on_sclk);
|
|
|
hwmgr->dyn_state.vddc_dependency_on_sclk = NULL;
|