aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3008-drm-amd-powerplay-report-bootup-clock-as-max-support.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3008-drm-amd-powerplay-report-bootup-clock-as-max-support.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3008-drm-amd-powerplay-report-bootup-clock-as-max-support.patch62
1 files changed, 62 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3008-drm-amd-powerplay-report-bootup-clock-as-max-support.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3008-drm-amd-powerplay-report-bootup-clock-as-max-support.patch
new file mode 100644
index 00000000..49b79822
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3008-drm-amd-powerplay-report-bootup-clock-as-max-support.patch
@@ -0,0 +1,62 @@
+From da07e7120d9105561fcfac24b5518d9cb8800cad Mon Sep 17 00:00:00 2001
+From: Evan Quan <evan.quan@amd.com>
+Date: Wed, 17 Jul 2019 16:32:27 +0800
+Subject: [PATCH 3008/4256] drm/amd/powerplay: report bootup clock as max
+ supported on dpm disabled
+
+With gfxclk or uclk dpm disabled, it's reasonable to report bootup clock
+as the max supported.
+
+Change-Id: If8aa7a912e8a34414b0e9c2b46de9b6e316fd9d7
+Signed-off-by: Evan Quan <evan.quan@amd.com>
+Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ drivers/gpu/drm/amd/powerplay/amdgpu_smu.c | 27 +++++++++++++++++++++-
+ 1 file changed, 26 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
+index f67206c607ca..416f9a837fa8 100644
+--- a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
++++ b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
+@@ -137,12 +137,37 @@ int smu_get_dpm_freq_range(struct smu_context *smu, enum smu_clk_type clk_type,
+ {
+ int ret = 0, clk_id = 0;
+ uint32_t param = 0;
++ uint32_t clock_limit;
+
+ if (!min && !max)
+ return -EINVAL;
+
+- if (!smu_clk_dpm_is_enabled(smu, clk_type))
++ if (!smu_clk_dpm_is_enabled(smu, clk_type)) {
++ switch (clk_type) {
++ case SMU_MCLK:
++ case SMU_UCLK:
++ clock_limit = smu->smu_table.boot_values.uclk;
++ break;
++ case SMU_GFXCLK:
++ case SMU_SCLK:
++ clock_limit = smu->smu_table.boot_values.gfxclk;
++ break;
++ case SMU_SOCCLK:
++ clock_limit = smu->smu_table.boot_values.socclk;
++ break;
++ default:
++ clock_limit = 0;
++ break;
++ }
++
++ /* clock in Mhz unit */
++ if (min)
++ *min = clock_limit / 100;
++ if (max)
++ *max = clock_limit / 100;
++
+ return 0;
++ }
+
+ mutex_lock(&smu->mutex);
+ clk_id = smu_clk_get_index(smu, clk_type);
+--
+2.17.1
+