drm/amd/display: Blank phantom OTG before enabling
[platform/kernel/linux-rpi.git] / drivers / gpu / drm / amd / display / dc / core / dc.c
index d08e60d..3b9d6fa 100644 (file)
@@ -1069,53 +1069,6 @@ static void apply_ctx_interdependent_lock(struct dc *dc,
        }
 }
 
-static void phantom_pipe_blank(
-               struct dc *dc,
-               struct timing_generator *tg,
-               int width,
-               int height)
-{
-       struct dce_hwseq *hws = dc->hwseq;
-       enum dc_color_space color_space;
-       struct tg_color black_color = {0};
-       struct output_pixel_processor *opp = NULL;
-       uint32_t num_opps, opp_id_src0, opp_id_src1;
-       uint32_t otg_active_width, otg_active_height;
-       uint32_t i;
-
-       /* program opp dpg blank color */
-       color_space = COLOR_SPACE_SRGB;
-       color_space_to_black_color(dc, color_space, &black_color);
-
-       otg_active_width = width;
-       otg_active_height = height;
-
-       /* get the OPTC source */
-       tg->funcs->get_optc_source(tg, &num_opps, &opp_id_src0, &opp_id_src1);
-       ASSERT(opp_id_src0 < dc->res_pool->res_cap->num_opp);
-
-       for (i = 0; i < dc->res_pool->res_cap->num_opp; i++) {
-               if (dc->res_pool->opps[i] != NULL && dc->res_pool->opps[i]->inst == opp_id_src0) {
-                       opp = dc->res_pool->opps[i];
-                       break;
-               }
-       }
-
-       if (opp && opp->funcs->opp_set_disp_pattern_generator)
-               opp->funcs->opp_set_disp_pattern_generator(
-                               opp,
-                               CONTROLLER_DP_TEST_PATTERN_SOLID_COLOR,
-                               CONTROLLER_DP_COLOR_SPACE_UDEFINED,
-                               COLOR_DEPTH_UNDEFINED,
-                               &black_color,
-                               otg_active_width,
-                               otg_active_height,
-                               0);
-
-       if (tg->funcs->is_tg_enabled(tg))
-               hws->funcs.wait_for_blank_complete(opp);
-}
-
 static void dc_update_viusal_confirm_color(struct dc *dc, struct dc_state *context, struct pipe_ctx *pipe_ctx)
 {
        if (dc->ctx->dce_version >= DCN_VERSION_1_0) {
@@ -1206,7 +1159,8 @@ static void disable_dangling_plane(struct dc *dc, struct dc_state *context)
 
                                        main_pipe_width = old_stream->mall_stream_config.paired_stream->dst.width;
                                        main_pipe_height = old_stream->mall_stream_config.paired_stream->dst.height;
-                                       phantom_pipe_blank(dc, tg, main_pipe_width, main_pipe_height);
+                                       if (dc->hwss.blank_phantom)
+                                               dc->hwss.blank_phantom(dc, tg, main_pipe_width, main_pipe_height);
                                        tg->funcs->enable_crtc(tg);
                                }
                        }