summarylogtreecommitdiffstats
path: root/0041-drm-amd-display-clear-optc-underflow-before-turn-off.patch
diff options
context:
space:
mode:
Diffstat (limited to '0041-drm-amd-display-clear-optc-underflow-before-turn-off.patch')
-rw-r--r--0041-drm-amd-display-clear-optc-underflow-before-turn-off.patch44
1 files changed, 44 insertions, 0 deletions
diff --git a/0041-drm-amd-display-clear-optc-underflow-before-turn-off.patch b/0041-drm-amd-display-clear-optc-underflow-before-turn-off.patch
new file mode 100644
index 000000000000..1eb0e65821bb
--- /dev/null
+++ b/0041-drm-amd-display-clear-optc-underflow-before-turn-off.patch
@@ -0,0 +1,44 @@
+From 3101839b080137c367f3f88c2a040f791de880aa Mon Sep 17 00:00:00 2001
+From: Fudong Wang <Fudong.Wang@amd.com>
+Date: Wed, 27 Jul 2022 12:01:29 +0800
+Subject: [PATCH 41/73] drm/amd/display: clear optc underflow before turn off
+ odm clock
+
+[ Upstream commit b2a93490201300a749ad261b5c5d05cb50179c44 ]
+
+[Why]
+After ODM clock off, optc underflow bit will be kept there always and clear not work.
+We need to clear that before clock off.
+
+[How]
+Clear that if have when clock off.
+
+Reviewed-by: Alvin Lee <alvin.lee2@amd.com>
+Acked-by: Tom Chung <chiahsuan.chung@amd.com>
+Signed-off-by: Fudong Wang <Fudong.Wang@amd.com>
+Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/gpu/drm/amd/display/dc/dcn10/dcn10_optc.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_optc.c b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_optc.c
+index b1671b00ce40..2349977b0abb 100644
+--- a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_optc.c
++++ b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_optc.c
+@@ -464,6 +464,11 @@ void optc1_enable_optc_clock(struct timing_generator *optc, bool enable)
+ OTG_CLOCK_ON, 1,
+ 1, 1000);
+ } else {
++
++ //last chance to clear underflow, otherwise, it will always there due to clock is off.
++ if (optc->funcs->is_optc_underflow_occurred(optc) == true)
++ optc->funcs->clear_optc_underflow(optc);
++
+ REG_UPDATE_2(OTG_CLOCK_CONTROL,
+ OTG_CLOCK_GATE_DIS, 0,
+ OTG_CLOCK_EN, 0);
+--
+2.37.3
+