aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.14.71/4641-drm-amd-pp-Fix-OD-feature-enable-failed-on-Vega10-wo.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/4641-drm-amd-pp-Fix-OD-feature-enable-failed-on-Vega10-wo.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.14.71/4641-drm-amd-pp-Fix-OD-feature-enable-failed-on-Vega10-wo.patch53
1 files changed, 53 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/4641-drm-amd-pp-Fix-OD-feature-enable-failed-on-Vega10-wo.patch b/common/recipes-kernel/linux/linux-yocto-4.14.71/4641-drm-amd-pp-Fix-OD-feature-enable-failed-on-Vega10-wo.patch
new file mode 100644
index 00000000..aa6d7eb0
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.14.71/4641-drm-amd-pp-Fix-OD-feature-enable-failed-on-Vega10-wo.patch
@@ -0,0 +1,53 @@
+From 1572dafa69d7c575e814487ce37498d857eace05 Mon Sep 17 00:00:00 2001
+From: Rex Zhu <Rex.Zhu@amd.com>
+Date: Tue, 12 Jun 2018 14:26:00 +0800
+Subject: [PATCH 4641/5725] drm/amd/pp: Fix OD feature enable failed on Vega10
+ workstation cards
+
+As hw required, soc clock must large than mclk, So we set max soc
+clock to OD Max Memory clk.
+But on workstation, vbios do not support OD feature, the OD max memory
+clock is equal to 0. In this case, driver can support underclocking.
+and set od max memory clock to the value in highest memory dpm level.
+So the od max memory clock should be less than highest soc clock.
+and driver should not change the soc clock.
+
+caused by commit ca57b9b0a156
+("drm/amd/pp: Allow underclocking when od table is empty in vbios")
+
+Reviewed-by: Evan Quan <evan.quan@amd.com>
+Signed-off-by: Rex Zhu <Rex.Zhu@amd.com>
+---
+ drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c | 9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c
+index 896c10b..f49e0d3 100644
+--- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c
++++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c
+@@ -321,8 +321,12 @@ static int vega10_odn_initial_default_setting(struct pp_hwmgr *hwmgr)
+ odn_table->min_vddc = dep_table[0]->entries[0].vddc;
+
+ i = od_table[2]->count - 1;
+- od_table[2]->entries[i].clk = hwmgr->platform_descriptor.overdriveLimit.memoryClock;
+- od_table[2]->entries[i].vddc = odn_table->max_vddc;
++ od_table[2]->entries[i].clk = hwmgr->platform_descriptor.overdriveLimit.memoryClock > od_table[2]->entries[i].clk ?
++ hwmgr->platform_descriptor.overdriveLimit.memoryClock :
++ od_table[2]->entries[i].clk;
++ od_table[2]->entries[i].vddc = odn_table->max_vddc > od_table[2]->entries[i].vddc ?
++ odn_table->max_vddc :
++ od_table[2]->entries[i].vddc;
+
+ return 0;
+ }
+@@ -1325,6 +1329,7 @@ static int vega10_setup_default_dpm_tables(struct pp_hwmgr *hwmgr)
+ if (hwmgr->platform_descriptor.overdriveLimit.memoryClock == 0)
+ hwmgr->platform_descriptor.overdriveLimit.memoryClock =
+ dpm_table->dpm_levels[dpm_table->count-1].value;
++
+ vega10_init_dpm_state(&(dpm_table->dpm_state));
+
+ data->dpm_table.eclk_table.count = 0;
+--
+2.7.4
+