aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3089-drm-amd-display-fix-mpcc-assert-condition.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3089-drm-amd-display-fix-mpcc-assert-condition.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3089-drm-amd-display-fix-mpcc-assert-condition.patch63
1 files changed, 63 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3089-drm-amd-display-fix-mpcc-assert-condition.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3089-drm-amd-display-fix-mpcc-assert-condition.patch
new file mode 100644
index 00000000..a77ad874
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3089-drm-amd-display-fix-mpcc-assert-condition.patch
@@ -0,0 +1,63 @@
+From 5d910719753531aef80d869d66a81e580ca51df3 Mon Sep 17 00:00:00 2001
+From: Eric Yang <Eric.Yang2@amd.com>
+Date: Sat, 29 Jun 2019 16:02:37 -0400
+Subject: [PATCH 3089/4256] drm/amd/display: fix mpcc assert condition
+
+[Why]
+In DCN2x asic, the MPCC status register definition changed, and
+our logic for assert is incorrect. disabled is valid state,
+where we should see idle and not busy, where as in not
+disabled state, we should see not idle.
+
+[How]
+Change assert condition to be more sensible.
+
+Signed-off-by: Eric Yang <Eric.Yang2@amd.com>
+Reviewed-by: Yongqiang Sun <yongqiang.sun@amd.com>
+Acked-by: Leo Li <sunpeng.li@amd.com>
+---
+ .../gpu/drm/amd/display/dc/dcn20/dcn20_mpc.c | 23 +++++++++----------
+ 1 file changed, 11 insertions(+), 12 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_mpc.c b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_mpc.c
+index f4d3008e5efa..67f0128f0b38 100644
+--- a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_mpc.c
++++ b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_mpc.c
+@@ -446,23 +446,22 @@ void mpc2_assert_mpcc_idle_before_connect(struct mpc *mpc, int mpcc_id)
+ {
+ struct dcn20_mpc *mpc20 = TO_DCN20_MPC(mpc);
+ unsigned int top_sel, mpc_busy, mpc_idle, mpc_disabled;
+- REG_GET(MPCC_STATUS[mpcc_id], MPCC_DISABLED, &mpc_disabled);
+-
+- if (mpc_disabled) {
+- ASSERT(0);
+- return;
+- }
+
+ REG_GET(MPCC_TOP_SEL[mpcc_id],
+ MPCC_TOP_SEL, &top_sel);
+
+- if (top_sel == 0xf) {
+- REG_GET_2(MPCC_STATUS[mpcc_id],
+- MPCC_BUSY, &mpc_busy,
+- MPCC_IDLE, &mpc_idle);
++ REG_GET_3(MPCC_STATUS[mpcc_id],
++ MPCC_BUSY, &mpc_busy,
++ MPCC_IDLE, &mpc_idle,
++ MPCC_DISABLED, &mpc_disabled);
+
+- ASSERT(mpc_busy == 0);
+- ASSERT(mpc_idle == 1);
++ if (top_sel == 0xf) {
++ ASSERT(!mpc_busy);
++ ASSERT(mpc_idle);
++ ASSERT(mpc_disabled);
++ } else {
++ ASSERT(!mpc_disabled);
++ ASSERT(!mpc_idle);
+ }
+ }
+
+--
+2.17.1
+