drm/amd/powerplay: enforce display related settings only on needed
No display related settings are needed on dpm level change. Signed-off-by: Evan Quan <evan.quan@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
a0e4fa2f28
commit
921935dc64
@ -273,7 +273,7 @@ int hwmgr_hw_fini(struct pp_hwmgr *hwmgr)
|
||||
|
||||
phm_stop_thermal_controller(hwmgr);
|
||||
psm_set_boot_states(hwmgr);
|
||||
psm_adjust_power_state_dynamic(hwmgr, false, NULL);
|
||||
psm_adjust_power_state_dynamic(hwmgr, true, NULL);
|
||||
phm_disable_dynamic_state_management(hwmgr);
|
||||
phm_disable_clock_power_gatings(hwmgr);
|
||||
|
||||
@ -295,7 +295,7 @@ int hwmgr_suspend(struct pp_hwmgr *hwmgr)
|
||||
ret = psm_set_boot_states(hwmgr);
|
||||
if (ret)
|
||||
return ret;
|
||||
ret = psm_adjust_power_state_dynamic(hwmgr, false, NULL);
|
||||
ret = psm_adjust_power_state_dynamic(hwmgr, true, NULL);
|
||||
if (ret)
|
||||
return ret;
|
||||
ret = phm_power_down_asic(hwmgr);
|
||||
@ -325,7 +325,7 @@ int hwmgr_resume(struct pp_hwmgr *hwmgr)
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = psm_adjust_power_state_dynamic(hwmgr, false, NULL);
|
||||
ret = psm_adjust_power_state_dynamic(hwmgr, true, NULL);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@ -379,12 +379,12 @@ int hwmgr_handle_task(struct pp_hwmgr *hwmgr, enum amd_pp_task task_id,
|
||||
ret = psm_set_user_performance_state(hwmgr, requested_ui_label, &requested_ps);
|
||||
if (ret)
|
||||
return ret;
|
||||
ret = psm_adjust_power_state_dynamic(hwmgr, false, requested_ps);
|
||||
ret = psm_adjust_power_state_dynamic(hwmgr, true, requested_ps);
|
||||
break;
|
||||
}
|
||||
case AMD_PP_TASK_COMPLETE_INIT:
|
||||
case AMD_PP_TASK_READJUST_POWER_STATE:
|
||||
ret = psm_adjust_power_state_dynamic(hwmgr, false, NULL);
|
||||
ret = psm_adjust_power_state_dynamic(hwmgr, true, NULL);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -256,16 +256,14 @@ static void power_state_management(struct pp_hwmgr *hwmgr,
|
||||
}
|
||||
}
|
||||
|
||||
int psm_adjust_power_state_dynamic(struct pp_hwmgr *hwmgr, bool skip,
|
||||
int psm_adjust_power_state_dynamic(struct pp_hwmgr *hwmgr, bool skip_display_settings,
|
||||
struct pp_power_state *new_ps)
|
||||
{
|
||||
uint32_t index;
|
||||
long workload;
|
||||
|
||||
if (skip)
|
||||
return 0;
|
||||
|
||||
phm_display_configuration_changed(hwmgr);
|
||||
if (!skip_display_settings)
|
||||
phm_display_configuration_changed(hwmgr);
|
||||
|
||||
if (hwmgr->ps)
|
||||
power_state_management(hwmgr, new_ps);
|
||||
@ -276,7 +274,8 @@ int psm_adjust_power_state_dynamic(struct pp_hwmgr *hwmgr, bool skip,
|
||||
*/
|
||||
phm_apply_clock_adjust_rules(hwmgr);
|
||||
|
||||
phm_notify_smc_display_config_after_ps_adjustment(hwmgr);
|
||||
if (!skip_display_settings)
|
||||
phm_notify_smc_display_config_after_ps_adjustment(hwmgr);
|
||||
|
||||
if ((hwmgr->request_dpm_level != hwmgr->dpm_level) &&
|
||||
!phm_force_dpm_levels(hwmgr, hwmgr->request_dpm_level))
|
||||
|
@ -34,7 +34,7 @@ int psm_set_user_performance_state(struct pp_hwmgr *hwmgr,
|
||||
enum PP_StateUILabel label_id,
|
||||
struct pp_power_state **state);
|
||||
int psm_adjust_power_state_dynamic(struct pp_hwmgr *hwmgr,
|
||||
bool skip,
|
||||
bool skip_display_settings,
|
||||
struct pp_power_state *new_ps);
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user