aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2654-drm-amd-display-Added-disconnect-dchub.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2654-drm-amd-display-Added-disconnect-dchub.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2654-drm-amd-display-Added-disconnect-dchub.patch83
1 files changed, 83 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2654-drm-amd-display-Added-disconnect-dchub.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2654-drm-amd-display-Added-disconnect-dchub.patch
new file mode 100644
index 00000000..2cc0cae1
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2654-drm-amd-display-Added-disconnect-dchub.patch
@@ -0,0 +1,83 @@
+From bdfe9ceca42e5eb21d0b5112c3c790d6f781e33e Mon Sep 17 00:00:00 2001
+From: Yongqiang Sun <yongqiang.sun@amd.com>
+Date: Sat, 21 Oct 2017 15:52:40 -0400
+Subject: [PATCH 2654/4131] drm/amd/display: Added disconnect dchub.
+
+Add disable ttu interface to dcn10, when remove
+mpc, disable ttu as well.
+
+Signed-off-by: Yongqiang Sun <yongqiang.sun@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_hubp.c | 9 +++++++++
+ drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c | 4 ++++
+ drivers/gpu/drm/amd/display/dc/inc/hw/hubp.h | 2 ++
+ 3 files changed, 15 insertions(+)
+
+diff --git a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hubp.c b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hubp.c
+index a19fac7..584e82c 100644
+--- a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hubp.c
++++ b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hubp.c
+@@ -56,6 +56,14 @@ void hubp1_set_blank(struct hubp *hubp, bool blank)
+ }
+ }
+
++static void hubp1_disconnect(struct hubp *hubp)
++{
++ struct dcn10_hubp *hubp1 = TO_DCN10_HUBP(hubp);
++
++ REG_UPDATE(DCHUBP_CNTL,
++ HUBP_TTU_DISABLE, 1);
++}
++
+ static void hubp1_set_hubp_blank_en(struct hubp *hubp, bool blank)
+ {
+ struct dcn10_hubp *hubp1 = TO_DCN10_HUBP(hubp);
+@@ -933,6 +941,7 @@ static struct hubp_funcs dcn10_hubp_funcs = {
+ .set_hubp_blank_en = hubp1_set_hubp_blank_en,
+ .set_cursor_attributes = hubp1_cursor_set_attributes,
+ .set_cursor_position = hubp1_cursor_set_position,
++ .hubp_disconnect = hubp1_disconnect,
+ };
+
+ /*****************************************/
+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 77ba1bf..4ae0a94 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
+@@ -2019,6 +2019,7 @@ static void dcn10_apply_ctx_for_surface(
+ struct pipe_ctx *pipe_ctx = &context->res_ctx.pipe_ctx[i];
+ struct pipe_ctx *old_pipe_ctx =
+ &dc->current_state->res_ctx.pipe_ctx[i];
++ struct hubp *hubp = dc->res_pool->hubps[i];
+
+ if (!pipe_ctx->plane_state && !old_pipe_ctx->plane_state)
+ continue;
+@@ -2067,6 +2068,9 @@ static void dcn10_apply_ctx_for_surface(
+ "[debug_mpo: apply_ctx disconnect pending on mpcc %d]\n",
+ old_pipe_ctx->mpcc->inst);*/
+
++ if (hubp->funcs->hubp_disconnect)
++ hubp->funcs->hubp_disconnect(hubp);
++
+ if (dc->debug.sanity_checks)
+ verify_allow_pstate_change_high(dc->hwseq);
+
+diff --git a/drivers/gpu/drm/amd/display/dc/inc/hw/hubp.h b/drivers/gpu/drm/amd/display/dc/inc/hw/hubp.h
+index 0d186be..3286585 100644
+--- a/drivers/gpu/drm/amd/display/dc/inc/hw/hubp.h
++++ b/drivers/gpu/drm/amd/display/dc/inc/hw/hubp.h
+@@ -100,6 +100,8 @@ struct hubp_funcs {
+ const struct dc_cursor_position *pos,
+ const struct dc_cursor_mi_param *param);
+
++ void (*hubp_disconnect)(struct hubp *hubp);
++
+ };
+
+ #endif
+--
+2.7.4
+