aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2889-drm-amd-display-MPC-updates.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2889-drm-amd-display-MPC-updates.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2889-drm-amd-display-MPC-updates.patch67
1 files changed, 67 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2889-drm-amd-display-MPC-updates.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2889-drm-amd-display-MPC-updates.patch
new file mode 100644
index 00000000..05e82653
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2889-drm-amd-display-MPC-updates.patch
@@ -0,0 +1,67 @@
+From 5425e74d7f4546da4263bd9a222506c5932a218b Mon Sep 17 00:00:00 2001
+From: Eric Bernstein <eric.bernstein@amd.com>
+Date: Thu, 16 Nov 2017 14:29:10 -0500
+Subject: [PATCH 2889/4131] drm/amd/display: MPC updates
+
+Fix update_mpcc logic to only call assert_mpcc_idle_before_connect
+if mpcc is not already being used (and required removal).
+Update set_out_rate_control to include optional flow control parameter.
+In init_mpcc_from_hw check for case where bot_sel is same as mpcc_id.
+
+Signed-off-by: Eric Bernstein <eric.bernstein@amd.com>
+Reviewed-by: Tony Cheng <Tony.Cheng@amd.com>
+Acked-by: Harry Wentland <harry.wentland@amd.com>
+---
+ drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c | 8 ++++----
+ drivers/gpu/drm/amd/display/dc/dcn10/dcn10_mpc.c | 5 ++++-
+ 2 files changed, 8 insertions(+), 5 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c
+index 3abd6d9..14d1cffa 100644
+--- a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c
++++ b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c
+@@ -1923,10 +1923,10 @@ static void update_mpcc(struct dc *dc, struct pipe_ctx *pipe_ctx)
+ /* remove MPCC if being used */
+ if (new_mpcc != NULL)
+ mpc->funcs->remove_mpcc(mpc, mpc_tree_params, new_mpcc);
+-
+- if (dc->debug.sanity_checks)
+- mpc->funcs->assert_mpcc_idle_before_connect(
+- dc->res_pool->mpc, mpcc_id);
++ else
++ if (dc->debug.sanity_checks)
++ mpc->funcs->assert_mpcc_idle_before_connect(
++ dc->res_pool->mpc, mpcc_id);
+
+ /* Call MPC to insert new plane */
+ new_mpcc = mpc->funcs->insert_plane(dc->res_pool->mpc,
+diff --git a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_mpc.c b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_mpc.c
+index a13d25d..d660618 100644
+--- a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_mpc.c
++++ b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_mpc.c
+@@ -300,11 +300,11 @@ void mpc1_remove_mpcc(
+
+ if (temp_mpcc && temp_mpcc->mpcc_bot == mpcc_to_remove) {
+ found = true;
++ temp_mpcc->mpcc_bot = mpcc_to_remove->mpcc_bot;
+ if (mpcc_to_remove->mpcc_bot) {
+ /* remove MPCC in middle of list */
+ REG_SET(MPCC_BOT_SEL[temp_mpcc->mpcc_id], 0,
+ MPCC_BOT_SEL, mpcc_to_remove->mpcc_bot->mpcc_id);
+- temp_mpcc->mpcc_bot = mpcc_to_remove->mpcc_bot;
+ } else {
+ /* remove MPCC from bottom of list */
+ REG_SET(MPCC_BOT_SEL[temp_mpcc->mpcc_id], 0,
+@@ -374,6 +374,9 @@ void mpc1_init_mpcc_list_from_hw(
+ REG_GET(MPCC_TOP_SEL[mpcc_id], MPCC_TOP_SEL, &top_sel);
+ REG_GET(MPCC_BOT_SEL[mpcc_id], MPCC_BOT_SEL, &bot_sel);
+
++ if (bot_sel == mpcc_id)
++ bot_sel = 0xf;
++
+ if ((opp_id == tree->opp_id) && (top_sel != 0xf)) {
+ mpcc = mpc1_get_mpcc(mpc, mpcc_id);
+ mpcc->dpp_id = top_sel;
+--
+2.7.4
+