Add interface to get the mm clock, temperature and memory load Signed-off-by: Roy Sun <Roy.Sun@xxxxxxx> --- drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 50 +++++++++++++++++++++++++ include/uapi/drm/amdgpu_drm.h | 12 ++++++ 2 files changed, 62 insertions(+) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c index b2e774aeab45..e5b16e0819ce 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c @@ -971,6 +971,56 @@ int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) } ui32 /= 100; break; + case AMDGPU_INFO_SENSOR_UVD_VCLK: + /* get mm vclk in Mhz */ + if (amdgpu_dpm_read_sensor(adev, + AMDGPU_PP_SENSOR_UVD_VCLK, + (void *)&ui32, &ui32_size)) { + return -EINVAL; + } + ui32 /= 100; + break; + case AMDGPU_INFO_SENSOR_UVD_DCLK: + /* get mm dclk in Mhz */ + if (amdgpu_dpm_read_sensor(adev, + AMDGPU_PP_SENSOR_UVD_DCLK, + (void *)&ui32, &ui32_size)) { + return -EINVAL; + } + ui32 /= 100; + break; + case AMDGPU_INFO_SENSOR_HOTSPOT_TEMP: + /* get junction temperature */ + if (amdgpu_dpm_read_sensor(adev, + AMDGPU_PP_SENSOR_HOTSPOT_TEMP, + (void *)&ui32, &ui32_size)) { + return -EINVAL; + } + break; + case AMDGPU_INFO_SENSOR_EDGE_TEMP: + /* get current edge temperature */ + if (amdgpu_dpm_read_sensor(adev, + AMDGPU_PP_SENSOR_EDGE_TEMP, + (void *)&ui32, &ui32_size)) { + return -EINVAL; + } + break; + case AMDGPU_INFO_SENSOR_MEM_TEMP: + /* get current memory temperature */ + if (amdgpu_dpm_read_sensor(adev, + AMDGPU_PP_SENSOR_MEM_TEMP, + (void *)&ui32, &ui32_size)) { + return -EINVAL; + } + break; + case AMDGPU_INFO_SENSOR_MEM_LOAD: + /* get memory load */ + if (amdgpu_dpm_read_sensor(adev, + AMDGPU_PP_SENSOR_MEM_LOAD, + (void *)&ui32, &ui32_size)) { + return -EINVAL; + } + break; default: DRM_DEBUG_KMS("Invalid request %d\n", info->sensor_info.type); diff --git a/include/uapi/drm/amdgpu_drm.h b/include/uapi/drm/amdgpu_drm.h index 8b832f7458f2..484c72e17c72 100644 --- a/include/uapi/drm/amdgpu_drm.h +++ b/include/uapi/drm/amdgpu_drm.h @@ -780,6 +780,18 @@ struct drm_amdgpu_cs_chunk_data { #define AMDGPU_INFO_SENSOR_STABLE_PSTATE_GFX_SCLK 0x8 /* Subquery id: Query GPU stable pstate memory clock */ #define AMDGPU_INFO_SENSOR_STABLE_PSTATE_GFX_MCLK 0x9 + /* Subquery id: Query GPU mm vclk */ + #define AMDGPU_INFO_SENSOR_UVD_VCLK 0xa + /* Subquery id: Query GPU mm dclk */ + #define AMDGPU_INFO_SENSOR_UVD_DCLK 0xb + /* Subquery id: Query junction temperature */ + #define AMDGPU_INFO_SENSOR_HOTSPOT_TEMP 0xc + /* Subquery id: Query edge temperature */ + #define AMDGPU_INFO_SENSOR_EDGE_TEMP 0xd + /* Subquery id: Query memory temperature */ + #define AMDGPU_INFO_SENSOR_MEM_TEMP 0xe + /* Subquery id: Query Memory load */ + #define AMDGPU_INFO_SENSOR_MEM_LOAD 0xf /* Number of VRAM page faults on CPU access. */ #define AMDGPU_INFO_NUM_VRAM_CPU_PAGE_FAULTS 0x1E #define AMDGPU_INFO_VRAM_LOST_COUNTER 0x1F -- 2.31.1 _______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx