aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.14.71/5500-drm-amd-display-Raise-dispclk-value-for-dce_update_c.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/5500-drm-amd-display-Raise-dispclk-value-for-dce_update_c.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.14.71/5500-drm-amd-display-Raise-dispclk-value-for-dce_update_c.patch50
1 files changed, 50 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/5500-drm-amd-display-Raise-dispclk-value-for-dce_update_c.patch b/common/recipes-kernel/linux/linux-yocto-4.14.71/5500-drm-amd-display-Raise-dispclk-value-for-dce_update_c.patch
new file mode 100644
index 00000000..42eea237
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.14.71/5500-drm-amd-display-Raise-dispclk-value-for-dce_update_c.patch
@@ -0,0 +1,50 @@
+From d408874575d5a406bbbfa8f7e5706fd6891f73b3 Mon Sep 17 00:00:00 2001
+From: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
+Date: Fri, 21 Sep 2018 09:35:24 -0400
+Subject: [PATCH 5500/5725] drm/amd/display: Raise dispclk value for
+ dce_update_clocks
+
+[Why]
+
+The DISPCLK value was previously requested to be 15% higher for all
+ASICS that went through the dce110 bandwidth code path. As part of a
+refactoring of dce_clocks and dce110 set_bandwidth this was removed
+for power saving considerations.
+
+This changed caused corruption under certain display configurations.
+Originally thought to be Vega specific, it was also observed on Polaris.
+
+[How]
+
+The 15% is brought back but its placement differs from the original
+patch. This boost should only be enable while DFS bypass is inactive.
+
+This (like the Vega patch) is also a workaround that should be
+removed after the root cause is identified.
+
+Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
+Reviewed-by: Harry Wentland <Harry.Wentland@amd.com>
+Acked-by: Leo Li <sunpeng.li@amd.com>
+---
+ drivers/gpu/drm/amd/display/dc/dce/dce_clocks.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_clocks.c b/drivers/gpu/drm/amd/display/dc/dce/dce_clocks.c
+index aa6bd41..fb962503 100644
+--- a/drivers/gpu/drm/amd/display/dc/dce/dce_clocks.c
++++ b/drivers/gpu/drm/amd/display/dc/dce/dce_clocks.c
+@@ -658,6 +658,11 @@ static void dce_update_clocks(struct dccg *dccg,
+ bool safe_to_lower)
+ {
+ struct dm_pp_power_level_change_request level_change_req;
++ struct dce_dccg *clk_dce = TO_DCE_CLOCKS(dccg);
++
++ /* TODO: Investigate why this is needed to fix display corruption. */
++ if (!clk_dce->dfs_bypass_active)
++ new_clocks->dispclk_khz = new_clocks->dispclk_khz * 115 / 100;
+
+ level_change_req.power_level = dce_get_required_clocks_state(dccg, new_clocks);
+ /* get max clock state from PPLIB */
+--
+2.7.4
+