Skip to content

Commit 121f17a

Browse files
timhuang-amdalexdeucher
authored andcommitted
drm/amd/pm: enable more Pstates profile levels for SMU v13.0.5
This patch enables following UMD stable Pstates profile levels for power_dpm_force_performance_level interface. - profile_peak - profile_min_sclk - profile_standard Signed-off-by: Tim Huang <Tim.Huang@amd.com> Acked-by: Alex Deucher <alexander.deucher@amd.com> Reviewed-by: Yifan Zhang <yifan1.zhang@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
1 parent fdc95df commit 121f17a

2 files changed

Lines changed: 39 additions & 3 deletions

File tree

drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_5_ppt.c

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -978,6 +978,38 @@ static int smu_v13_0_5_force_clk_levels(struct smu_context *smu,
978978
return ret;
979979
}
980980

981+
static int smu_v13_0_5_get_dpm_profile_freq(struct smu_context *smu,
982+
enum amd_dpm_forced_level level,
983+
enum smu_clk_type clk_type,
984+
uint32_t *min_clk,
985+
uint32_t *max_clk)
986+
{
987+
int ret = 0;
988+
uint32_t clk_limit = 0;
989+
990+
switch (clk_type) {
991+
case SMU_GFXCLK:
992+
case SMU_SCLK:
993+
clk_limit = SMU_13_0_5_UMD_PSTATE_GFXCLK;
994+
if (level == AMD_DPM_FORCED_LEVEL_PROFILE_PEAK)
995+
smu_v13_0_5_get_dpm_ultimate_freq(smu, SMU_SCLK, NULL, &clk_limit);
996+
else if (level == AMD_DPM_FORCED_LEVEL_PROFILE_MIN_SCLK)
997+
smu_v13_0_5_get_dpm_ultimate_freq(smu, SMU_SCLK, &clk_limit, NULL);
998+
break;
999+
case SMU_VCLK:
1000+
smu_v13_0_5_get_dpm_ultimate_freq(smu, SMU_VCLK, NULL, &clk_limit);
1001+
break;
1002+
case SMU_DCLK:
1003+
smu_v13_0_5_get_dpm_ultimate_freq(smu, SMU_DCLK, NULL, &clk_limit);
1004+
break;
1005+
default:
1006+
ret = -EINVAL;
1007+
break;
1008+
}
1009+
*min_clk = *max_clk = clk_limit;
1010+
return ret;
1011+
}
1012+
9811013
static int smu_v13_0_5_set_performance_level(struct smu_context *smu,
9821014
enum amd_dpm_forced_level level)
9831015
{
@@ -1011,10 +1043,14 @@ static int smu_v13_0_5_set_performance_level(struct smu_context *smu,
10111043
break;
10121044
case AMD_DPM_FORCED_LEVEL_PROFILE_STANDARD:
10131045
case AMD_DPM_FORCED_LEVEL_PROFILE_MIN_SCLK:
1014-
case AMD_DPM_FORCED_LEVEL_PROFILE_MIN_MCLK:
10151046
case AMD_DPM_FORCED_LEVEL_PROFILE_PEAK:
1016-
/* Temporarily do nothing since the optimal clocks haven't been provided yet */
1047+
smu_v13_0_5_get_dpm_profile_freq(smu, level, SMU_SCLK, &sclk_min, &sclk_max);
1048+
smu_v13_0_5_get_dpm_profile_freq(smu, level, SMU_VCLK, &vclk_min, &vclk_max);
1049+
smu_v13_0_5_get_dpm_profile_freq(smu, level, SMU_DCLK, &dclk_min, &dclk_max);
10171050
break;
1051+
case AMD_DPM_FORCED_LEVEL_PROFILE_MIN_MCLK:
1052+
dev_err(adev->dev, "The performance level profile_min_mclk is not supported.");
1053+
return -EOPNOTSUPP;
10181054
case AMD_DPM_FORCED_LEVEL_MANUAL:
10191055
case AMD_DPM_FORCED_LEVEL_PROFILE_EXIT:
10201056
return 0;

drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_5_ppt.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,6 @@
2424
#define __SMU_V13_0_5_PPT_H__
2525

2626
extern void smu_v13_0_5_set_ppt_funcs(struct smu_context *smu);
27-
#define SMU_13_0_5_UMD_PSTATE_GFXCLK 1100
27+
#define SMU_13_0_5_UMD_PSTATE_GFXCLK 700
2828

2929
#endif

0 commit comments

Comments
 (0)