aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd
diff options
context:
space:
mode:
authorRex Zhu <Rex.Zhu@amd.com>2018-01-08 00:59:05 -0500
committerAlex Deucher <alexander.deucher@amd.com>2018-02-19 14:17:53 -0500
commit5ed8d656d60fd19d14bed647793eff0913627fd7 (patch)
tree8e6e529fbc691cb0b2c1ea8526b6d0b3b42c863b /drivers/gpu/drm/amd
parentdd70949d9054faf1fb037950b7b17a4b1a5b9669 (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.c4
-rw-r--r--drivers/gpu/drm/amd/include/kgd_pp_interface.h2
-rw-r--r--drivers/gpu/drm/amd/powerplay/amd_powerplay.c23
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
127enum amd_pp_task { 129enum 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
1013static struct amd_vce_state* 1018static struct amd_vce_state*