]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
drm/amd/display: Added disconnect dchub.
authorYongqiang Sun <yongqiang.sun@amd.com>
Sat, 21 Oct 2017 19:52:40 +0000 (15:52 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 4 Dec 2017 21:41:36 +0000 (16:41 -0500)
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
drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c
drivers/gpu/drm/amd/display/dc/inc/hw/hubp.h

index a19fac70b056030188a389dac583629aae50e403..584e82cc5df364a12ce9cecb7330e8b0387b9fa9 100644 (file)
@@ -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,
 };
 
 /*****************************************/
index f7434ae4aec2e79a02afc760db01e024f9c7976f..b3e587f273e820aa11f525b428347f31138b35e3 100644 (file)
@@ -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);
 
index 0d186be24cf4ff0eed6c1ffa52d4e0aa91d121f9..3286585bd6cd270bf229a9a1be3a956cf6bd3a80 100644 (file)
@@ -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