drm/amd/pm: Fill pldm version for SMU v13.0.6 SOCs
authorAsad Kamal <asad.kamal@amd.com>
Tue, 29 Apr 2025 16:40:50 +0000 (00:40 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 22 May 2025 16:01:08 +0000 (12:01 -0400)
Fetch pldm version from static metrics table for SMU v13.0.6 SOCs

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

index 7d4ff09..cd9ed3b 100644 (file)
@@ -396,6 +396,8 @@ static void smu_v13_0_6_init_caps(struct smu_context *smu)
                        smu_v13_0_6_cap_set(smu, SMU_CAP(STATIC_METRICS));
                        smu_v13_0_6_cap_set(smu, SMU_CAP(BOARD_VOLTAGE));
                }
+               if (fw_ver >= 0x00558000)
+                       smu_v13_0_6_cap_set(smu, SMU_CAP(PLDM_VERSION));
        }
        if (((pgm == 7) && (fw_ver >= 0x7550700)) ||
            ((pgm == 0) && (fw_ver >= 0x00557900)) ||
@@ -752,6 +754,11 @@ static void smu_v13_0_6_fill_static_metrics_table(struct smu_context *smu,
        }
 
        dpm_context->board_volt = static_metrics->InputTelemetryVoltageInmV;
+
+       if (smu_v13_0_6_cap_supported(smu, SMU_CAP(PLDM_VERSION)) &&
+           static_metrics->pldmVersion[0] != 0xFFFFFFFF)
+               smu->adev->firmware.pldm_version =
+                       static_metrics->pldmVersion[0];
 }
 
 int smu_v13_0_6_get_static_metrics_table(struct smu_context *smu)
index d151bcd..1ccc150 100644 (file)
@@ -67,6 +67,7 @@ enum smu_v13_0_6_caps {
        SMU_CAP(STATIC_METRICS),
        SMU_CAP(HST_LIMIT_METRICS),
        SMU_CAP(BOARD_VOLTAGE),
+       SMU_CAP(PLDM_VERSION),
        SMU_CAP(ALL),
 };