@@ -915,29 +915,41 @@ static int smu_v13_0_4_set_performance_level(struct smu_context *smu,
915915 uint32_t sclk_min = 0 , sclk_max = 0 ;
916916 uint32_t fclk_min = 0 , fclk_max = 0 ;
917917 uint32_t socclk_min = 0 , socclk_max = 0 ;
918+ uint32_t vclk_min = 0 , vclk_max = 0 ;
919+ uint32_t dclk_min = 0 , dclk_max = 0 ;
918920 int ret = 0 ;
919921
920922 switch (level ) {
921923 case AMD_DPM_FORCED_LEVEL_HIGH :
922924 smu_v13_0_4_get_dpm_ultimate_freq (smu , SMU_SCLK , NULL , & sclk_max );
923925 smu_v13_0_4_get_dpm_ultimate_freq (smu , SMU_FCLK , NULL , & fclk_max );
924926 smu_v13_0_4_get_dpm_ultimate_freq (smu , SMU_SOCCLK , NULL , & socclk_max );
927+ smu_v13_0_4_get_dpm_ultimate_freq (smu , SMU_VCLK , NULL , & vclk_max );
928+ smu_v13_0_4_get_dpm_ultimate_freq (smu , SMU_DCLK , NULL , & dclk_max );
925929 sclk_min = sclk_max ;
926930 fclk_min = fclk_max ;
927931 socclk_min = socclk_max ;
932+ vclk_min = vclk_max ;
933+ dclk_min = dclk_max ;
928934 break ;
929935 case AMD_DPM_FORCED_LEVEL_LOW :
930936 smu_v13_0_4_get_dpm_ultimate_freq (smu , SMU_SCLK , & sclk_min , NULL );
931937 smu_v13_0_4_get_dpm_ultimate_freq (smu , SMU_FCLK , & fclk_min , NULL );
932938 smu_v13_0_4_get_dpm_ultimate_freq (smu , SMU_SOCCLK , & socclk_min , NULL );
939+ smu_v13_0_4_get_dpm_ultimate_freq (smu , SMU_VCLK , & vclk_min , NULL );
940+ smu_v13_0_4_get_dpm_ultimate_freq (smu , SMU_DCLK , & dclk_min , NULL );
933941 sclk_max = sclk_min ;
934942 fclk_max = fclk_min ;
935943 socclk_max = socclk_min ;
944+ vclk_max = vclk_min ;
945+ dclk_max = dclk_min ;
936946 break ;
937947 case AMD_DPM_FORCED_LEVEL_AUTO :
938948 smu_v13_0_4_get_dpm_ultimate_freq (smu , SMU_SCLK , & sclk_min , & sclk_max );
939949 smu_v13_0_4_get_dpm_ultimate_freq (smu , SMU_FCLK , & fclk_min , & fclk_max );
940950 smu_v13_0_4_get_dpm_ultimate_freq (smu , SMU_SOCCLK , & socclk_min , & socclk_max );
951+ smu_v13_0_4_get_dpm_ultimate_freq (smu , SMU_VCLK , & vclk_min , & vclk_max );
952+ smu_v13_0_4_get_dpm_ultimate_freq (smu , SMU_DCLK , & dclk_min , & dclk_max );
941953 break ;
942954 case AMD_DPM_FORCED_LEVEL_PROFILE_STANDARD :
943955 case AMD_DPM_FORCED_LEVEL_PROFILE_MIN_SCLK :
@@ -983,6 +995,23 @@ static int smu_v13_0_4_set_performance_level(struct smu_context *smu,
983995 return ret ;
984996 }
985997
998+ if (vclk_min && vclk_max ) {
999+ ret = smu_v13_0_4_set_soft_freq_limited_range (smu ,
1000+ SMU_VCLK ,
1001+ vclk_min ,
1002+ vclk_max );
1003+ if (ret )
1004+ return ret ;
1005+ }
1006+
1007+ if (dclk_min && dclk_max ) {
1008+ ret = smu_v13_0_4_set_soft_freq_limited_range (smu ,
1009+ SMU_DCLK ,
1010+ dclk_min ,
1011+ dclk_max );
1012+ if (ret )
1013+ return ret ;
1014+ }
9861015 return ret ;
9871016}
9881017
0 commit comments