OSDN Git Service

drm/amd/pm: Update gfx clock frequency for SMU v13.0.6
authorAsad kamal <asad.kamal@amd.com>
Wed, 8 Feb 2023 15:04:25 +0000 (23:04 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 9 Jun 2023 13:54:21 +0000 (09:54 -0400)
Update gfx clock frequency from metric table for SMU v13.0.6

Signed-off-by: Asad kamal <asad.kamal@amd.com>
Reviewed-by: Lijo Lazar <lijo.lazar@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_6_ppt.c

index 8969b3f..d0c49e8 100644 (file)
@@ -660,7 +660,10 @@ static int smu_v13_0_6_get_smu_metrics_data(struct smu_context *smu,
 {
        struct smu_table_context *smu_table = &smu->smu_table;
        MetricsTable_t *metrics = (MetricsTable_t *)smu_table->metrics_table;
+       struct amdgpu_device *adev = smu->adev;
+       uint32_t smu_version;
        int ret = 0;
+       int xcc_id;
 
        ret = smu_v13_0_6_get_metrics_table(smu, NULL, false);
        if (ret)
@@ -670,7 +673,13 @@ static int smu_v13_0_6_get_smu_metrics_data(struct smu_context *smu,
        switch (member) {
        case METRICS_CURR_GFXCLK:
        case METRICS_AVERAGE_GFXCLK:
-               *value = 0;
+               smu_cmn_get_smc_version(smu, NULL, &smu_version);
+               if (smu_version >= 0x552F00) {
+                       xcc_id = GET_INST(GC, 0);
+                       *value = SMUQ10_TO_UINT(metrics->GfxclkFrequency[xcc_id]);
+               } else {
+                       *value = 0;
+               }
                break;
        case METRICS_CURR_SOCCLK:
        case METRICS_AVERAGE_SOCCLK: