Skip to content

Commit 921935d

Browse files
Evan Quanalexdeucher
authored andcommitted
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 <[email protected]> Reviewed-by: Alex Deucher <[email protected]> Signed-off-by: Alex Deucher <[email protected]>
1 parent a0e4fa2 commit 921935d

File tree

3 files changed

+11
-12
lines changed

3 files changed

+11
-12
lines changed

drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,7 @@ int hwmgr_hw_fini(struct pp_hwmgr *hwmgr)
273273

274274
phm_stop_thermal_controller(hwmgr);
275275
psm_set_boot_states(hwmgr);
276-
psm_adjust_power_state_dynamic(hwmgr, false, NULL);
276+
psm_adjust_power_state_dynamic(hwmgr, true, NULL);
277277
phm_disable_dynamic_state_management(hwmgr);
278278
phm_disable_clock_power_gatings(hwmgr);
279279

@@ -295,7 +295,7 @@ int hwmgr_suspend(struct pp_hwmgr *hwmgr)
295295
ret = psm_set_boot_states(hwmgr);
296296
if (ret)
297297
return ret;
298-
ret = psm_adjust_power_state_dynamic(hwmgr, false, NULL);
298+
ret = psm_adjust_power_state_dynamic(hwmgr, true, NULL);
299299
if (ret)
300300
return ret;
301301
ret = phm_power_down_asic(hwmgr);
@@ -325,7 +325,7 @@ int hwmgr_resume(struct pp_hwmgr *hwmgr)
325325
if (ret)
326326
return ret;
327327

328-
ret = psm_adjust_power_state_dynamic(hwmgr, false, NULL);
328+
ret = psm_adjust_power_state_dynamic(hwmgr, true, NULL);
329329

330330
return ret;
331331
}
@@ -379,12 +379,12 @@ int hwmgr_handle_task(struct pp_hwmgr *hwmgr, enum amd_pp_task task_id,
379379
ret = psm_set_user_performance_state(hwmgr, requested_ui_label, &requested_ps);
380380
if (ret)
381381
return ret;
382-
ret = psm_adjust_power_state_dynamic(hwmgr, false, requested_ps);
382+
ret = psm_adjust_power_state_dynamic(hwmgr, true, requested_ps);
383383
break;
384384
}
385385
case AMD_PP_TASK_COMPLETE_INIT:
386386
case AMD_PP_TASK_READJUST_POWER_STATE:
387-
ret = psm_adjust_power_state_dynamic(hwmgr, false, NULL);
387+
ret = psm_adjust_power_state_dynamic(hwmgr, true, NULL);
388388
break;
389389
default:
390390
break;

drivers/gpu/drm/amd/powerplay/hwmgr/pp_psm.c

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -256,16 +256,14 @@ static void power_state_management(struct pp_hwmgr *hwmgr,
256256
}
257257
}
258258

259-
int psm_adjust_power_state_dynamic(struct pp_hwmgr *hwmgr, bool skip,
259+
int psm_adjust_power_state_dynamic(struct pp_hwmgr *hwmgr, bool skip_display_settings,
260260
struct pp_power_state *new_ps)
261261
{
262262
uint32_t index;
263263
long workload;
264264

265-
if (skip)
266-
return 0;
267-
268-
phm_display_configuration_changed(hwmgr);
265+
if (!skip_display_settings)
266+
phm_display_configuration_changed(hwmgr);
269267

270268
if (hwmgr->ps)
271269
power_state_management(hwmgr, new_ps);
@@ -276,7 +274,8 @@ int psm_adjust_power_state_dynamic(struct pp_hwmgr *hwmgr, bool skip,
276274
*/
277275
phm_apply_clock_adjust_rules(hwmgr);
278276

279-
phm_notify_smc_display_config_after_ps_adjustment(hwmgr);
277+
if (!skip_display_settings)
278+
phm_notify_smc_display_config_after_ps_adjustment(hwmgr);
280279

281280
if ((hwmgr->request_dpm_level != hwmgr->dpm_level) &&
282281
!phm_force_dpm_levels(hwmgr, hwmgr->request_dpm_level))

drivers/gpu/drm/amd/powerplay/hwmgr/pp_psm.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ int psm_set_user_performance_state(struct pp_hwmgr *hwmgr,
3434
enum PP_StateUILabel label_id,
3535
struct pp_power_state **state);
3636
int psm_adjust_power_state_dynamic(struct pp_hwmgr *hwmgr,
37-
bool skip,
37+
bool skip_display_settings,
3838
struct pp_power_state *new_ps);
3939

4040
#endif

0 commit comments

Comments
 (0)