aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3837-drm-amd-display-Do-not-double-buffer-DTO-adjustments.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3837-drm-amd-display-Do-not-double-buffer-DTO-adjustments.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3837-drm-amd-display-Do-not-double-buffer-DTO-adjustments.patch58
1 files changed, 58 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3837-drm-amd-display-Do-not-double-buffer-DTO-adjustments.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3837-drm-amd-display-Do-not-double-buffer-DTO-adjustments.patch
new file mode 100644
index 00000000..e9d69135
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3837-drm-amd-display-Do-not-double-buffer-DTO-adjustments.patch
@@ -0,0 +1,58 @@
+From 6f2e055fc0eaeed19b9445543d2bcd7dbda2e7e2 Mon Sep 17 00:00:00 2001
+From: Wesley Chalmers <Wesley.Chalmers@amd.com>
+Date: Fri, 23 Aug 2019 10:56:13 -0400
+Subject: [PATCH 3837/4256] drm/amd/display: Do not double-buffer DTO
+ adjustments
+
+[WHY]
+When changing DPP global ref clock, DTO adjustments must take effect
+immediately, or else underflow may occur.
+It appears the original decision to double-buffer DTO adjustments was made to
+prevent underflows that occur when raising DPP ref clock (which is not
+double-buffered), but that same decision causes similar issues when
+lowering DPP global ref clock. The better solution is to order the
+adjustments according to whether clocks are being raised or lowered.
+
+Signed-off-by: Wesley Chalmers <Wesley.Chalmers@amd.com>
+Reviewed-by: Dmytro Laktyushkin <Dmytro.Laktyushkin@amd.com>
+Acked-by: Anthony Koo <Anthony.Koo@amd.com>
+Acked-by: Leo Li <sunpeng.li@amd.com>
+---
+ .../gpu/drm/amd/display/dc/dcn20/dcn20_dccg.c | 21 -------------------
+ 1 file changed, 21 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_dccg.c b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_dccg.c
+index f9b99f8cfc31..313d3793005e 100644
+--- a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_dccg.c
++++ b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_dccg.c
+@@ -117,27 +117,6 @@ void dccg2_get_dccg_ref_freq(struct dccg *dccg,
+
+ void dccg2_init(struct dccg *dccg)
+ {
+- struct dcn_dccg *dccg_dcn = TO_DCN_DCCG(dccg);
+-
+- // Fallthrough intentional to program all available dpp_dto's
+- switch (dccg_dcn->base.ctx->dc->res_pool->pipe_count) {
+- case 6:
+- REG_UPDATE(DPPCLK_DTO_CTRL, DPPCLK_DTO_DB_EN[5], 1);
+- case 5:
+- REG_UPDATE(DPPCLK_DTO_CTRL, DPPCLK_DTO_DB_EN[4], 1);
+- case 4:
+- REG_UPDATE(DPPCLK_DTO_CTRL, DPPCLK_DTO_DB_EN[3], 1);
+- case 3:
+- REG_UPDATE(DPPCLK_DTO_CTRL, DPPCLK_DTO_DB_EN[2], 1);
+- case 2:
+- REG_UPDATE(DPPCLK_DTO_CTRL, DPPCLK_DTO_DB_EN[1], 1);
+- case 1:
+- REG_UPDATE(DPPCLK_DTO_CTRL, DPPCLK_DTO_DB_EN[0], 1);
+- break;
+- default:
+- ASSERT(false);
+- break;
+- }
+ }
+
+ static const struct dccg_funcs dccg2_funcs = {
+--
+2.17.1
+