drm/amd/powerplay: reapply power profile when force dpm level to auto
authorEric Huang <JinHuiEric.Huang@amd.com>
Thu, 6 Oct 2016 21:57:40 +0000 (17:57 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 30 Mar 2017 03:52:49 +0000 (23:52 -0400)
Signed-off-by: Eric Huang <JinHuiEric.Huang@amd.com>
Acked-by: Rex Zhu <Rex.Zhu@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/powerplay/hwmgr/hardwaremanager.c

index 0eb8e886bf354386204da49cf8253c978841413e..6013ef119ffb3cee2eedee6b4adde6e612b1534a 100644 (file)
@@ -146,12 +146,28 @@ int phm_disable_dynamic_state_management(struct pp_hwmgr *hwmgr)
 
 int phm_force_dpm_levels(struct pp_hwmgr *hwmgr, enum amd_dpm_forced_level level)
 {
+       int ret = 0;
+
        PHM_FUNC_CHECK(hwmgr);
 
-       if (hwmgr->hwmgr_func->force_dpm_level != NULL)
-               return hwmgr->hwmgr_func->force_dpm_level(hwmgr, level);
+       if (hwmgr->hwmgr_func->force_dpm_level != NULL) {
+               ret = hwmgr->hwmgr_func->force_dpm_level(hwmgr, level);
+               if (ret)
+                       return ret;
+
+               if (hwmgr->hwmgr_func->set_power_profile_state) {
+                       if (hwmgr->current_power_profile == AMD_PP_GFX_PROFILE)
+                               ret = hwmgr->hwmgr_func->set_power_profile_state(
+                                               hwmgr,
+                                               &hwmgr->gfx_power_profile);
+                       else if (hwmgr->current_power_profile == AMD_PP_COMPUTE_PROFILE)
+                               ret = hwmgr->hwmgr_func->set_power_profile_state(
+                                               hwmgr,
+                                               &hwmgr->compute_power_profile);
+               }
+       }
 
-       return 0;
+       return ret;
 }
 
 int phm_apply_state_adjust_rules(struct pp_hwmgr *hwmgr,