]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commitdiff
drm/amdgpu/swsmu/vangogh: use metrics table for voltages (v2)
authorAlex Deucher <alexander.deucher@amd.com>
Tue, 1 Dec 2020 15:42:49 +0000 (10:42 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 2 Dec 2020 22:37:18 +0000 (17:37 -0500)
Fixes voltage reading for vddgfx and adds support for vddsoc.

v2: use new voltage enum

Reviewed-by: Evan Quan <evan.quan@amd.com>
Reviewed-by: Huang Rui <ray.huang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/pm/swsmu/smu11/vangogh_ppt.c

index a1c582395c6747ab5a58e7b6997813ca860a0bd1..ddaa6a705fa6baf82659ec010825d83c79d81935 100644 (file)
@@ -265,6 +265,12 @@ static int vangogh_get_smu_metrics_data(struct smu_context *smu,
        case METRICS_THROTTLER_STATUS:
                *value = metrics->ThrottlerStatus;
                break;
+       case METRICS_VOLTAGE_VDDGFX:
+               *value = metrics->Voltage[2];
+               break;
+       case METRICS_VOLTAGE_VDDSOC:
+               *value = metrics->Voltage[1];
+               break;
        default:
                *value = UINT_MAX;
                break;
@@ -469,13 +475,21 @@ static int vangogh_read_sensor(struct smu_context *smu,
                break;
        case AMDGPU_PP_SENSOR_GFX_SCLK:
                ret = vangogh_get_smu_metrics_data(smu,
-                                                   METRICS_AVERAGE_GFXCLK,
-                                                   (uint32_t *)data);
+                                                  METRICS_AVERAGE_GFXCLK,
+                                                  (uint32_t *)data);
                *(uint32_t *)data *= 100;
                *size = 4;
                break;
        case AMDGPU_PP_SENSOR_VDDGFX:
-               ret = smu_v11_0_get_gfx_vdd(smu, (uint32_t *)data);
+               ret = vangogh_get_smu_metrics_data(smu,
+                                                  METRICS_VOLTAGE_VDDGFX,
+                                                  (uint32_t *)data);
+               *size = 4;
+               break;
+       case AMDGPU_PP_SENSOR_VDDNB:
+               ret = vangogh_get_smu_metrics_data(smu,
+                                                  METRICS_VOLTAGE_VDDSOC,
+                                                  (uint32_t *)data);
                *size = 4;
                break;
        default: