drm/amd/pm: disable/enable deep sleep features on UMD pstate enter/exit
authorEvan Quan <evan.quan@amd.com>
Mon, 17 Aug 2020 07:52:42 +0000 (15:52 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 18 Aug 2020 22:21:50 +0000 (18:21 -0400)
Add deep sleep disablement/enablement on UMD pstate entering/exiting.

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>
drivers/gpu/drm/amd/pm/inc/amdgpu_smu.h
drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
drivers/gpu/drm/amd/pm/swsmu/smu_internal.h

index 7cc707e..4c5c041 100644 (file)
@@ -597,6 +597,7 @@ struct pptable_funcs {
        ssize_t (*get_gpu_metrics)(struct smu_context *smu, void **table);
        int (*enable_mgpu_fan_boost)(struct smu_context *smu);
        int (*gfx_ulv_control)(struct smu_context *smu, bool enablement);
+       int (*deep_sleep_control)(struct smu_context *smu, bool enablement);
 };
 
 typedef enum {
index 221b5c9..8eb5b92 100644 (file)
@@ -1441,6 +1441,7 @@ static int smu_enable_umd_pstate(void *handle,
                                                               AMD_IP_BLOCK_TYPE_GFX,
                                                               AMD_CG_STATE_UNGATE);
                        smu_gfx_ulv_control(smu, false);
+                       smu_deep_sleep_control(smu, false);
                }
        } else {
                /* exit umd pstate, restore level, enable gfx cg*/
@@ -1448,6 +1449,7 @@ static int smu_enable_umd_pstate(void *handle,
                        if (*level == AMD_DPM_FORCED_LEVEL_PROFILE_EXIT)
                                *level = smu_dpm_ctx->saved_dpm_level;
                        smu_dpm_ctx->enable_umd_pstate = false;
+                       smu_deep_sleep_control(smu, true);
                        smu_gfx_ulv_control(smu, true);
                        amdgpu_device_ip_set_clockgating_state(smu->adev,
                                                               AMD_IP_BLOCK_TYPE_GFX,
index 2fe29c6..c88f8fa 100644 (file)
@@ -93,6 +93,7 @@
 #define smu_get_pp_feature_mask(smu, buf)                              smu_ppt_funcs(get_pp_feature_mask, 0, smu, buf)
 #define smu_set_pp_feature_mask(smu, new_mask)                         smu_ppt_funcs(set_pp_feature_mask, 0, smu, new_mask)
 #define smu_gfx_ulv_control(smu, enablement)                           smu_ppt_funcs(gfx_ulv_control, 0, smu, enablement)
+#define smu_deep_sleep_control(smu, enablement)                                smu_ppt_funcs(deep_sleep_control, 0, smu, enablement)
 
 #endif
 #endif