aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.14.71/4943-drm-amd-display-properly-turn-autocal-off.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/4943-drm-amd-display-properly-turn-autocal-off.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.14.71/4943-drm-amd-display-properly-turn-autocal-off.patch54
1 files changed, 54 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/4943-drm-amd-display-properly-turn-autocal-off.patch b/common/recipes-kernel/linux/linux-yocto-4.14.71/4943-drm-amd-display-properly-turn-autocal-off.patch
new file mode 100644
index 00000000..cba005f0
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.14.71/4943-drm-amd-display-properly-turn-autocal-off.patch
@@ -0,0 +1,54 @@
+From 3fc2bd54b9225f4fc156390700ced367144e3be4 Mon Sep 17 00:00:00 2001
+From: Dmytro Laktyushkin <Dmytro.Laktyushkin@amd.com>
+Date: Wed, 4 Jul 2018 11:31:40 -0400
+Subject: [PATCH 4943/5725] drm/amd/display: properly turn autocal off
+
+[why]
+Currently we do not turn off autocal when scaling is in bypass.
+In case vbios enalbes auto scale and our first mode set is a non-scaled
+mode we have autocal on causing screen corruption.
+
+[how]
+moves turning autocal off to be first thing done during scaler setup
+
+Signed-off-by: Dmytro Laktyushkin <Dmytro.Laktyushkin@amd.com>
+Reviewed-by: Tony Cheng <Tony.Cheng@amd.com>
+Acked-by: Harry Wentland <harry.wentland@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ drivers/gpu/drm/amd/display/dc/dcn10/dcn10_dpp_dscl.c | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_dpp_dscl.c b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_dpp_dscl.c
+index f862fd1..f0cc975 100644
+--- a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_dpp_dscl.c
++++ b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_dpp_dscl.c
+@@ -655,6 +655,12 @@ void dpp1_dscl_set_scaler_manual_scale(
+
+ dpp->scl_data = *scl_data;
+
++ /* Autocal off */
++ REG_SET_3(DSCL_AUTOCAL, 0,
++ AUTOCAL_MODE, AUTOCAL_MODE_OFF,
++ AUTOCAL_NUM_PIPE, 0,
++ AUTOCAL_PIPE_ID, 0);
++
+ /* Recout */
+ dpp1_dscl_set_recout(dpp, &scl_data->recout);
+
+@@ -678,12 +684,6 @@ void dpp1_dscl_set_scaler_manual_scale(
+ if (dscl_mode == DSCL_MODE_SCALING_444_BYPASS)
+ return;
+
+- /* Autocal off */
+- REG_SET_3(DSCL_AUTOCAL, 0,
+- AUTOCAL_MODE, AUTOCAL_MODE_OFF,
+- AUTOCAL_NUM_PIPE, 0,
+- AUTOCAL_PIPE_ID, 0);
+-
+ /* Black offsets */
+ if (ycbcr)
+ REG_SET_2(SCL_BLACK_OFFSET, 0,
+--
+2.7.4
+