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;
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;
#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);