diff options
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.patch | 63 |
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 + |