mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-16 06:06:44 +07:00
drm/amd/powerplay: refine the logic of whether need to update power state.
Better handle power state changes. Signed-off-by: Rex Zhu <Rex.Zhu@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Reviewed-by: Jammy Zhou <Jammy.Zhou@amd.com>
This commit is contained in:
parent
e829ecdb15
commit
f4caf3e584
@ -86,9 +86,10 @@ int psm_set_performance_states(struct pp_eventmgr *eventmgr, unsigned long *stat
|
||||
int psm_adjust_power_state_dynamic(struct pp_eventmgr *eventmgr, bool skip)
|
||||
{
|
||||
|
||||
const struct pp_power_state *pcurrent;
|
||||
struct pp_power_state *requested;
|
||||
struct pp_power_state *pcurrent;
|
||||
struct pp_power_state *requested;
|
||||
struct pp_hwmgr *hwmgr;
|
||||
bool equal;
|
||||
|
||||
if (skip)
|
||||
return 0;
|
||||
@ -97,7 +98,13 @@ int psm_adjust_power_state_dynamic(struct pp_eventmgr *eventmgr, bool skip)
|
||||
pcurrent = hwmgr->current_ps;
|
||||
requested = hwmgr->request_ps;
|
||||
|
||||
if ((pcurrent != NULL || requested != NULL) && (pcurrent != requested)) {
|
||||
if (requested == NULL)
|
||||
return 0;
|
||||
|
||||
if (pcurrent == NULL || (0 != phm_check_states_equal(hwmgr, &pcurrent->hardware, &requested->hardware, &equal)))
|
||||
equal = false;
|
||||
|
||||
if (!equal || phm_check_smc_update_required_for_display_configuration(hwmgr)) {
|
||||
phm_apply_state_adjust_rules(hwmgr, requested, pcurrent);
|
||||
phm_set_power_state(hwmgr, &pcurrent->hardware, &requested->hardware);
|
||||
hwmgr->current_ps = requested;
|
||||
|
@ -25,6 +25,7 @@
|
||||
#include "eventmanagement.h"
|
||||
#include "eventmanager.h"
|
||||
#include "power_state.h"
|
||||
#include "hardwaremanager.h"
|
||||
|
||||
int psm_get_ui_state(struct pp_eventmgr *eventmgr, enum PP_StateUILabel ui_label, unsigned long *state_id);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user