aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3170-drm-amd-pp-Add-stable-Pstate-clk-display-support-in-.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3170-drm-amd-pp-Add-stable-Pstate-clk-display-support-in-.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3170-drm-amd-pp-Add-stable-Pstate-clk-display-support-in-.patch93
1 files changed, 93 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3170-drm-amd-pp-Add-stable-Pstate-clk-display-support-in-.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3170-drm-amd-pp-Add-stable-Pstate-clk-display-support-in-.patch
new file mode 100644
index 00000000..b3b3b2cd
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3170-drm-amd-pp-Add-stable-Pstate-clk-display-support-in-.patch
@@ -0,0 +1,93 @@
+From c6311b12307ff05f636636f67b0ca0429817fbe7 Mon Sep 17 00:00:00 2001
+From: Rex Zhu <Rex.Zhu@amd.com>
+Date: Mon, 8 Jan 2018 13:59:05 +0800
+Subject: [PATCH 3170/4131] 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)
+
+Change-Id: Id38e214153d54943edc8f4c56d110ecdb470ae55
+Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Rex Zhu <Rex.Zhu@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c | 4 ++++
+ drivers/gpu/drm/amd/include/kgd_pp_interface.h | 2 ++
+ 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 45e9119..6b70160 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
+@@ -1588,6 +1588,10 @@ static int amdgpu_debugfs_pm_info_pp(struct seq_file *m, struct amdgpu_device *a
+ seq_printf(m, "\t%u MHz (MCLK)\n", value/100);
+ if (!amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_GFX_SCLK, (void *)&value, &size))
+ seq_printf(m, "\t%u MHz (SCLK)\n", value/100);
++ if (!amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_STABLE_PSTATE_SCLK, (void *)&value, &size))
++ seq_printf(m, "\t%u MHz (PSTATE_SCLK)\n", value/100);
++ if (!amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_STABLE_PSTATE_MCLK, (void *)&value, &size))
++ seq_printf(m, "\t%u MHz (PSTATE_MCLK)\n", value/100);
+ if (!amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_VDDGFX, (void *)&value, &size))
+ seq_printf(m, "\t%u mV (VDDGFX)\n", value);
+ 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 1746180..68f2c84 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 {
+ AMDGPU_PP_SENSOR_VCE_POWER,
+ AMDGPU_PP_SENSOR_UVD_POWER,
+ AMDGPU_PP_SENSOR_GPU_POWER,
++ AMDGPU_PP_SENSOR_STABLE_PSTATE_SCLK,
++ AMDGPU_PP_SENSOR_STABLE_PSTATE_MCLK,
+ };
+
+ 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 4131180..be7bd86 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,
+ int ret = 0;
+
+ ret = pp_check(pp_handle);
+-
+ if (ret)
+ return ret;
+
++ if (value == NULL)
++ return -EINVAL;
++
+ hwmgr = pp_handle->hwmgr;
+
+- if (hwmgr->hwmgr_func->read_sensor == NULL) {
+- pr_info("%s was not implemented.\n", __func__);
++ switch (idx) {
++ case AMDGPU_PP_SENSOR_STABLE_PSTATE_SCLK:
++ *((uint32_t *)value) = hwmgr->pstate_sclk;
+ return 0;
++ case AMDGPU_PP_SENSOR_STABLE_PSTATE_MCLK:
++ *((uint32_t *)value) = hwmgr->pstate_mclk;
++ return 0;
++ default:
++ mutex_lock(&pp_handle->pp_lock);
++ ret = hwmgr->hwmgr_func->read_sensor(hwmgr, idx, value, size);
++ mutex_unlock(&pp_handle->pp_lock);
++ return ret;
+ }
+-
+- mutex_lock(&pp_handle->pp_lock);
+- ret = hwmgr->hwmgr_func->read_sensor(hwmgr, idx, value, size);
+- mutex_unlock(&pp_handle->pp_lock);
+-
+- return ret;
+ }
+
+ static struct amd_vce_state*
+--
+2.7.4
+