drm/amd/powerplay: add GPU power display for vega10
authorEric Huang <JinHuiEric.Huang@amd.com>
Thu, 8 Jun 2017 18:39:32 +0000 (14:39 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 15 Jun 2017 15:50:24 +0000 (11:50 -0400)
Signed-off-by: Eric Huang <JinHuiEric.Huang@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c

index d9744b6b5b0e69708ca2fe1396d84e306a1c73c0..e6205a77afa5bd95918343d4ffbcdf587b23b924 100644 (file)
@@ -3824,6 +3824,18 @@ static int vega10_dpm_get_mclk(struct pp_hwmgr *hwmgr, bool low)
                                [vega10_ps->performance_level_count-1].mem_clock;
 }
 
+static int vega10_get_gpu_power(struct pp_hwmgr *hwmgr,
+               struct pp_gpu_power *query)
+{
+       PP_ASSERT_WITH_CODE(!smum_send_msg_to_smc(hwmgr->smumgr,
+                       PPSMC_MSG_GetCurrPkgPwr),
+                       "Failed to get current package power!",
+                       return -EINVAL);
+
+       return vega10_read_arg_from_smc(hwmgr->smumgr,
+                       &query->average_gpu_power);
+}
+
 static int vega10_read_sensor(struct pp_hwmgr *hwmgr, int idx,
                              void *value, int *size)
 {
@@ -3869,6 +3881,14 @@ static int vega10_read_sensor(struct pp_hwmgr *hwmgr, int idx,
                *((uint32_t *)value) = data->vce_power_gated ? 0 : 1;
                *size = 4;
                break;
+       case AMDGPU_PP_SENSOR_GPU_POWER:
+               if (*size < sizeof(struct pp_gpu_power))
+                       ret = -EINVAL;
+               else {
+                       *size = sizeof(struct pp_gpu_power);
+                       ret = vega10_get_gpu_power(hwmgr, (struct pp_gpu_power *)value);
+               }
+               break;
        default:
                ret = -EINVAL;
                break;