@@ -881,51 +881,51 @@ static int smu_v13_0_6_get_dpm_ultimate_freq(struct smu_context *smu,
881
881
enum smu_clk_type clk_type ,
882
882
uint32_t * min , uint32_t * max )
883
883
{
884
+ struct smu_13_0_dpm_context * dpm_context = smu -> smu_dpm .dpm_context ;
884
885
struct smu_table_context * smu_table = & smu -> smu_table ;
885
886
struct PPTable_t * pptable =
886
887
(struct PPTable_t * )smu_table -> driver_pptable ;
887
- uint32_t clock_limit = 0 , param ;
888
+ struct smu_13_0_dpm_table * dpm_table ;
889
+ uint32_t min_clk , max_clk , param ;
888
890
int ret = 0 , clk_id = 0 ;
889
891
890
- if (!smu_cmn_clk_dpm_is_enabled (smu , clk_type )) {
892
+ /* Use dpm tables, if data is already fetched */
893
+ if (pptable -> Init ) {
891
894
switch (clk_type ) {
892
895
case SMU_MCLK :
893
896
case SMU_UCLK :
894
- if (pptable -> Init )
895
- clock_limit = pptable -> UclkFrequencyTable [0 ];
897
+ dpm_table = & dpm_context -> dpm_tables .uclk_table ;
896
898
break ;
897
899
case SMU_GFXCLK :
898
900
case SMU_SCLK :
899
- if (pptable -> Init )
900
- clock_limit = pptable -> MinGfxclkFrequency ;
901
+ dpm_table = & dpm_context -> dpm_tables .gfx_table ;
901
902
break ;
902
903
case SMU_SOCCLK :
903
- if (pptable -> Init )
904
- clock_limit = pptable -> SocclkFrequencyTable [0 ];
904
+ dpm_table = & dpm_context -> dpm_tables .soc_table ;
905
905
break ;
906
906
case SMU_FCLK :
907
- if (pptable -> Init )
908
- clock_limit = pptable -> FclkFrequencyTable [0 ];
907
+ dpm_table = & dpm_context -> dpm_tables .fclk_table ;
909
908
break ;
910
909
case SMU_VCLK :
911
- if (pptable -> Init )
912
- clock_limit = pptable -> VclkFrequencyTable [0 ];
910
+ dpm_table = & dpm_context -> dpm_tables .vclk_table ;
913
911
break ;
914
912
case SMU_DCLK :
915
- if (pptable -> Init )
916
- clock_limit = pptable -> DclkFrequencyTable [0 ];
913
+ dpm_table = & dpm_context -> dpm_tables .dclk_table ;
917
914
break ;
918
915
default :
919
- break ;
916
+ return - EINVAL ;
920
917
}
921
918
922
- if ( min )
923
- * min = clock_limit ;
919
+ min_clk = dpm_table -> min ;
920
+ max_clk = dpm_table -> max ;
924
921
922
+ if (min )
923
+ * min = min_clk ;
925
924
if (max )
926
- * max = clock_limit ;
925
+ * max = max_clk ;
927
926
928
- return 0 ;
927
+ if (min_clk && max_clk )
928
+ return 0 ;
929
929
}
930
930
931
931
if (!(clk_type == SMU_GFXCLK || clk_type == SMU_SCLK )) {
0 commit comments