diff options
author | Rex Zhu <Rex.Zhu@amd.com> | 2018-01-08 00:59:05 -0500 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2018-02-19 14:17:53 -0500 |
commit | 5ed8d656d60fd19d14bed647793eff0913627fd7 (patch) | |
tree | 8e6e529fbc691cb0b2c1ea8526b6d0b3b42c863b /drivers/gpu/drm/amd | |
parent | dd70949d9054faf1fb037950b7b17a4b1a5b9669 (diff) |
drm/amd/pp: Add stable Pstate clk display support in debugfs
The additional output are: PSTATE_SCLK and PSTATE_MCLK value
in MHz as:
300 MHz (PSTATE_SCLK)
300 MHz (PSTATE_MCLK)
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Rex Zhu <Rex.Zhu@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/include/kgd_pp_interface.h | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/powerplay/amd_powerplay.c | 23 |
3 files changed, 20 insertions, 9 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c index 662edca5722d..ed9012a903b0 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c | |||
@@ -1591,6 +1591,10 @@ static int amdgpu_debugfs_pm_info_pp(struct seq_file *m, struct amdgpu_device *a | |||
1591 | seq_printf(m, "\t%u MHz (MCLK)\n", value/100); | 1591 | seq_printf(m, "\t%u MHz (MCLK)\n", value/100); |
1592 | if (!amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_GFX_SCLK, (void *)&value, &size)) | 1592 | if (!amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_GFX_SCLK, (void *)&value, &size)) |
1593 | seq_printf(m, "\t%u MHz (SCLK)\n", value/100); | 1593 | seq_printf(m, "\t%u MHz (SCLK)\n", value/100); |
1594 | if (!amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_STABLE_PSTATE_SCLK, (void *)&value, &size)) | ||
1595 | seq_printf(m, "\t%u MHz (PSTATE_SCLK)\n", value/100); | ||
1596 | if (!amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_STABLE_PSTATE_MCLK, (void *)&value, &size)) | ||
1597 | seq_printf(m, "\t%u MHz (PSTATE_MCLK)\n", value/100); | ||
1594 | if (!amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_VDDGFX, (void *)&value, &size)) | 1598 | if (!amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_VDDGFX, (void *)&value, &size)) |
1595 | seq_printf(m, "\t%u mV (VDDGFX)\n", value); | 1599 | seq_printf(m, "\t%u mV (VDDGFX)\n", value); |
1596 | if (!amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_VDDNB, (void *)&value, &size)) | 1600 | if (!amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_VDDNB, (void *)&value, &size)) |
diff --git a/drivers/gpu/drm/amd/include/kgd_pp_interface.h b/drivers/gpu/drm/amd/include/kgd_pp_interface.h index 174618004f2e..68f2c8484187 100644 --- a/drivers/gpu/drm/amd/include/kgd_pp_interface.h +++ b/drivers/gpu/drm/amd/include/kgd_pp_interface.h | |||
@@ -122,6 +122,8 @@ enum amd_pp_sensors { | |||
122 | AMDGPU_PP_SENSOR_VCE_POWER, | 122 | AMDGPU_PP_SENSOR_VCE_POWER, |
123 | AMDGPU_PP_SENSOR_UVD_POWER, | 123 | AMDGPU_PP_SENSOR_UVD_POWER, |
124 | AMDGPU_PP_SENSOR_GPU_POWER, | 124 | AMDGPU_PP_SENSOR_GPU_POWER, |
125 | AMDGPU_PP_SENSOR_STABLE_PSTATE_SCLK, | ||
126 | AMDGPU_PP_SENSOR_STABLE_PSTATE_MCLK, | ||
125 | }; | 127 | }; |
126 | 128 | ||
127 | enum amd_pp_task { | 129 | enum amd_pp_task { |
diff --git a/drivers/gpu/drm/amd/powerplay/amd_powerplay.c b/drivers/gpu/drm/amd/powerplay/amd_powerplay.c index 5e2252127fe5..d9cb424ff7e9 100644 --- a/drivers/gpu/drm/amd/powerplay/amd_powerplay.c +++ b/drivers/gpu/drm/amd/powerplay/amd_powerplay.c | |||
@@ -992,22 +992,27 @@ static int pp_dpm_read_sensor(void *handle, int idx, | |||
992 | int ret = 0; | 992 | int ret = 0; |
993 | 993 | ||
994 | ret = pp_check(pp_handle); | 994 | ret = pp_check(pp_handle); |
995 | |||
996 | if (ret) | 995 | if (ret) |
997 | return ret; | 996 | return ret; |
998 | 997 | ||
998 | if (value == NULL) | ||
999 | return -EINVAL; | ||
1000 | |||
999 | hwmgr = pp_handle->hwmgr; | 1001 | hwmgr = pp_handle->hwmgr; |
1000 | 1002 | ||
1001 | if (hwmgr->hwmgr_func->read_sensor == NULL) { | 1003 | switch (idx) { |
1002 | pr_info("%s was not implemented.\n", __func__); | 1004 | case AMDGPU_PP_SENSOR_STABLE_PSTATE_SCLK: |
1005 | *((uint32_t *)value) = hwmgr->pstate_sclk; | ||
1003 | return 0; | 1006 | return 0; |
1007 | case AMDGPU_PP_SENSOR_STABLE_PSTATE_MCLK: | ||
1008 | *((uint32_t *)value) = hwmgr->pstate_mclk; | ||
1009 | return 0; | ||
1010 | default: | ||
1011 | mutex_lock(&pp_handle->pp_lock); | ||
1012 | ret = hwmgr->hwmgr_func->read_sensor(hwmgr, idx, value, size); | ||
1013 | mutex_unlock(&pp_handle->pp_lock); | ||
1014 | return ret; | ||
1004 | } | 1015 | } |
1005 | |||
1006 | mutex_lock(&pp_handle->pp_lock); | ||
1007 | ret = hwmgr->hwmgr_func->read_sensor(hwmgr, idx, value, size); | ||
1008 | mutex_unlock(&pp_handle->pp_lock); | ||
1009 | |||
1010 | return ret; | ||
1011 | } | 1016 | } |
1012 | 1017 | ||
1013 | static struct amd_vce_state* | 1018 | static struct amd_vce_state* |