]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/amd/pm: Fetch SMUv13.0.6 xgmi max speed/width
authorLijo Lazar <lijo.lazar@amd.com>
Fri, 13 Jun 2025 12:34:51 +0000 (18:04 +0530)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 24 Jun 2025 13:55:16 +0000 (09:55 -0400)
On SMUv13.0.6 SOCs, fetch the max values of xgmi speed/width from
firmware.

Signed-off-by: Lijo Lazar <lijo.lazar@amd.com>
Reviewed-by: Asad Kamal <asad.kamal@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 3db3ad4bf26cd8a54e2c56d41f6c9fe767674319..1e0ba0cff923397ddf72c65bfab2c39479aa77ed 100644 (file)
@@ -805,6 +805,8 @@ static int smu_v13_0_6_setup_driver_pptable(struct smu_context *smu)
        int version = smu_v13_0_6_get_metrics_version(smu);
        int ret, i, retry = 100;
        uint32_t table_version;
+       uint16_t max_speed;
+       uint8_t max_width;
 
        if (amdgpu_ip_version(smu->adev, MP1_HWIP, 0) == IP_VERSION(13, 0, 12) &&
            smu_v13_0_6_cap_supported(smu, SMU_CAP(STATIC_METRICS)))
@@ -840,6 +842,9 @@ static int smu_v13_0_6_setup_driver_pptable(struct smu_context *smu)
                        SMUQ10_ROUND(GET_METRIC_FIELD(MaxGfxclkFrequency, version));
                pptable->MinGfxclkFrequency =
                        SMUQ10_ROUND(GET_METRIC_FIELD(MinGfxclkFrequency, version));
+               max_width = (uint8_t)GET_METRIC_FIELD(XgmiWidth, version);
+               max_speed = (uint16_t)GET_METRIC_FIELD(XgmiBitrate, version);
+               amgpu_xgmi_set_max_speed_width(smu->adev, max_speed, max_width);
 
                for (i = 0; i < 4; ++i) {
                        pptable->FclkFrequencyTable[i] =