Allow the UMDs to query the current sclk/mclk
for profiling, etc.

Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
---
 drivers/gpu/drm/radeon/radeon_kms.c | 14 ++++++++++++++
 include/uapi/drm/radeon_drm.h       |  2 ++
 2 files changed, 16 insertions(+)

diff --git a/drivers/gpu/drm/radeon/radeon_kms.c 
b/drivers/gpu/drm/radeon/radeon_kms.c
index e0a85dc..f15de68 100644
--- a/drivers/gpu/drm/radeon/radeon_kms.c
+++ b/drivers/gpu/drm/radeon/radeon_kms.c
@@ -547,6 +547,20 @@ static int radeon_info_ioctl(struct drm_device *dev, void 
*data, struct drm_file
                else
                        *value = 0;
                break;
+       case RADEON_INFO_CURRENT_GPU_SCLK:
+               /* get sclk in Mhz */
+               if (rdev->pm.dpm_enabled)
+                       *value = radeon_dpm_get_current_sclk(rdev) / 100;
+               else
+                       *value = rdev->pm.current_sclk / 100;
+               break;
+       case RADEON_INFO_CURRENT_GPU_MCLK:
+               /* get mclk in Mhz */
+               if (rdev->pm.dpm_enabled)
+                       *value = radeon_dpm_get_current_mclk(rdev) / 100;
+               else
+                       *value = rdev->pm.current_mclk / 100;
+               break;
        default:
                DRM_DEBUG_KMS("Invalid request %d\n", info->request);
                return -EINVAL;
diff --git a/include/uapi/drm/radeon_drm.h b/include/uapi/drm/radeon_drm.h
index 66b1131..de7ee21 100644
--- a/include/uapi/drm/radeon_drm.h
+++ b/include/uapi/drm/radeon_drm.h
@@ -1035,6 +1035,8 @@ struct drm_radeon_cs {
 #define RADEON_INFO_GTT_USAGE          0x1f
 #define RADEON_INFO_ACTIVE_CU_COUNT    0x20
 #define RADEON_INFO_CURRENT_GPU_TEMP   0x21
+#define RADEON_INFO_CURRENT_GPU_SCLK   0x22
+#define RADEON_INFO_CURRENT_GPU_MCLK   0x23

 struct drm_radeon_info {
        uint32_t                request;
-- 
1.8.3.1

Reply via email to