Lines Matching defs:pipe_ctx

150 	struct pipe_ctx *pipes[MAX_PIPES];
171 * in pipe_ctx. Disable link phy here to make sure it is completely off
186 const struct pipe_ctx *pipe)
199 struct pipe_ctx *pipes[MAX_PIPES])
202 struct pipe_ctx *pipe = NULL;
206 pipe = &state->res_ctx.pipe_ctx[i];
215 static bool get_ext_hdmi_settings(struct pipe_ctx *pipe_ctx,
222 pipe_ctx->stream->ctx->dc_bios->integrated_info;
312 static bool write_i2c(struct pipe_ctx *pipe_ctx,
323 cmd.speed = pipe_ctx->stream->ctx->dc->caps.i2c_speed_in_khz;
331 if (dm_helpers_submit_i2c(pipe_ctx->stream->ctx,
332 pipe_ctx->stream->link, &cmd))
339 struct pipe_ctx *pipe_ctx,
351 DC_LOGGER_INIT(pipe_ctx->stream->ctx->logger);
363 i2c_success = write_i2c(pipe_ctx, slave_address,
385 pipe_ctx->stream->link->ddc,
394 i2c_success = write_i2c(pipe_ctx, slave_address,
413 i2c_success = write_i2c(pipe_ctx, slave_address,
435 pipe_ctx->stream->link->ddc,
444 i2c_success = write_i2c(pipe_ctx, slave_address,
462 i2c_success = write_i2c(pipe_ctx, slave_address,
473 i2c_success = write_i2c(pipe_ctx, slave_address,
484 i2c_success = write_i2c(pipe_ctx, slave_address,
501 struct pipe_ctx *pipe_ctx,
508 DC_LOGGER_INIT(pipe_ctx->stream->ctx->logger);
516 i2c_success = write_i2c(pipe_ctx, slave_address,
527 i2c_success = write_i2c(pipe_ctx, slave_address,
538 i2c_success = write_i2c(pipe_ctx, slave_address,
549 i2c_success = write_i2c(pipe_ctx, slave_address,
560 i2c_success = write_i2c(pipe_ctx, slave_address,
571 i2c_success = write_i2c(pipe_ctx, slave_address,
586 i2c_success = write_i2c(pipe_ctx, slave_address,
597 i2c_success = write_i2c(pipe_ctx, slave_address,
608 i2c_success = write_i2c(pipe_ctx, slave_address,
624 struct pipe_ctx *pipe_ctx,
630 DC_LOGGER_INIT(pipe_ctx->stream->ctx->logger);
640 i2c_success = write_i2c(pipe_ctx, slave_address,
652 static void update_psp_stream_config(struct pipe_ctx *pipe_ctx, bool dpms_off)
654 struct cp_psp *cp_psp = &pipe_ctx->stream->ctx->cp_psp;
658 dp_get_panel_mode(pipe_ctx->stream->link);
663 link_enc = link_enc_cfg_get_link_enc(pipe_ctx->stream->link);
669 config.otg_inst = (uint8_t) pipe_ctx->stream_res.tg->inst;
672 config.dig_fe = (uint8_t) pipe_ctx->stream_res.stream_enc->stream_enc_inst;
675 config.stream_enc_idx = pipe_ctx->stream_res.stream_enc->id - ENGINE_ID_DIGA;
676 if (dp_is_128b_132b_signal(pipe_ctx))
678 pipe_ctx->stream_res.hpo_dp_stream_enc->id - ENGINE_ID_HPO_DP_0;
681 config.dig_be = pipe_ctx->stream->link->link_enc_hw_inst;
685 if (dp_is_128b_132b_signal(pipe_ctx))
686 config.link_enc_idx = pipe_ctx->link_res.hpo_dp_link_enc->inst;
689 if (pipe_ctx->stream->link->ep_type == DISPLAY_ENDPOINT_USB4_DPIA)
690 config.dio_output_idx = pipe_ctx->stream->link->link_id.enum_id - ENUM_ID_1;
697 pipe_ctx->stream->link->dc, link_enc->transmitter);
698 if (pipe_ctx->stream->link->ep_type == DISPLAY_ENDPOINT_USB4_DPIA)
704 config.mst_enabled = (pipe_ctx->stream->signal ==
706 config.dp2_enabled = dp_is_128b_132b_signal(pipe_ctx) ? 1 : 0;
707 config.usb4_enabled = (pipe_ctx->stream->link->ep_type == DISPLAY_ENDPOINT_USB4_DPIA) ?
712 config.dm_stream_ctx = pipe_ctx->stream->dm_stream_context;
717 static void set_avmute(struct pipe_ctx *pipe_ctx, bool enable)
719 struct dc *dc = pipe_ctx->stream->ctx->dc;
721 if (!dc_is_hdmi_signal(pipe_ctx->stream->signal))
724 dc->hwss.set_avmute(pipe_ctx, enable);
762 static bool dp_set_dsc_on_rx(struct pipe_ctx *pipe_ctx, bool enable)
764 struct dc *dc = pipe_ctx->stream->ctx->dc;
765 struct dc_stream_state *stream = pipe_ctx->stream;
778 void link_set_dsc_on_stream(struct pipe_ctx *pipe_ctx, bool enable)
783 struct display_stream_compressor *dsc = pipe_ctx->stream_res.dsc;
784 struct dc *dc = pipe_ctx->stream->ctx->dc;
785 struct dc_stream_state *stream = pipe_ctx->stream;
786 struct pipe_ctx *odm_pipe;
802 for (odm_pipe = pipe_ctx->next_odm_pipe; odm_pipe; odm_pipe = odm_pipe->next_odm_pipe)
815 dsc_cfg.is_odm = pipe_ctx->next_odm_pipe ? true : false;
821 dsc->funcs->dsc_enable(dsc, pipe_ctx->stream_res.opp->inst);
824 for (odm_pipe = pipe_ctx->next_odm_pipe; odm_pipe; odm_pipe = odm_pipe->next_odm_pipe) {
838 if (dc_is_dp_signal(stream->signal) && !dp_is_128b_132b_signal(pipe_ctx)) {
839 DC_LOG_DSC("Setting stream encoder DSC config for engine %d:", (int)pipe_ctx->stream_res.stream_enc->id);
841 pipe_ctx->stream_res.stream_enc->funcs->dp_set_dsc_config(pipe_ctx->stream_res.stream_enc,
850 DC_LOG_DSC("Setting optc DSC config for tg instance %d:", pipe_ctx->stream_res.tg->inst);
852 pipe_ctx->stream_res.tg->funcs->set_dsc_config(pipe_ctx->stream_res.tg,
858 pipe_ctx->stream_res.tg->funcs->set_dsc_config(
859 pipe_ctx->stream_res.tg,
864 if (dp_is_128b_132b_signal(pipe_ctx))
865 pipe_ctx->stream_res.hpo_dp_stream_enc->funcs->dp_set_dsc_pps_info_packet(
866 pipe_ctx->stream_res.hpo_dp_stream_enc,
871 pipe_ctx->stream_res.stream_enc->funcs->dp_set_dsc_config(
872 pipe_ctx->stream_res.stream_enc,
874 pipe_ctx->stream_res.stream_enc->funcs->dp_set_dsc_pps_info_packet(
875 pipe_ctx->stream_res.stream_enc, false, NULL, true);
881 dccg->funcs->set_ref_dscclk(dccg, pipe_ctx->stream_res.dsc->inst);
882 pipe_ctx->stream_res.dsc->funcs->dsc_disable(pipe_ctx->stream_res.dsc);
883 for (odm_pipe = pipe_ctx->next_odm_pipe; odm_pipe; odm_pipe = odm_pipe->next_odm_pipe) {
900 bool link_set_dsc_pps_packet(struct pipe_ctx *pipe_ctx, bool enable, bool immediate_update)
902 struct display_stream_compressor *dsc = pipe_ctx->stream_res.dsc;
903 struct dc_stream_state *stream = pipe_ctx->stream;
905 if (!pipe_ctx->stream->timing.flags.DSC)
925 dsc_cfg.is_odm = pipe_ctx->next_odm_pipe ? true : false;
931 DC_LOG_DSC("Setting stream encoder DSC PPS SDP for engine %d\n", (int)pipe_ctx->stream_res.stream_enc->id);
932 if (dp_is_128b_132b_signal(pipe_ctx))
933 pipe_ctx->stream_res.hpo_dp_stream_enc->funcs->dp_set_dsc_pps_info_packet(
934 pipe_ctx->stream_res.hpo_dp_stream_enc,
939 pipe_ctx->stream_res.stream_enc->funcs->dp_set_dsc_pps_info_packet(
940 pipe_ctx->stream_res.stream_enc,
949 if (dp_is_128b_132b_signal(pipe_ctx))
950 pipe_ctx->stream_res.hpo_dp_stream_enc->funcs->dp_set_dsc_pps_info_packet(
951 pipe_ctx->stream_res.hpo_dp_stream_enc,
956 pipe_ctx->stream_res.stream_enc->funcs->dp_set_dsc_pps_info_packet(
957 pipe_ctx->stream_res.stream_enc, false, NULL, true);
964 bool link_set_dsc_enable(struct pipe_ctx *pipe_ctx, bool enable)
966 struct display_stream_compressor *dsc = pipe_ctx->stream_res.dsc;
969 if (!pipe_ctx->stream->timing.flags.DSC)
976 link_set_dsc_on_stream(pipe_ctx, true);
980 dp_set_dsc_on_rx(pipe_ctx, false);
981 link_set_dsc_on_stream(pipe_ctx, false);
988 bool link_update_dsc_config(struct pipe_ctx *pipe_ctx)
990 struct display_stream_compressor *dsc = pipe_ctx->stream_res.dsc;
992 if (!pipe_ctx->stream->timing.flags.DSC)
997 link_set_dsc_on_stream(pipe_ctx, true);
998 link_set_dsc_pps_packet(pipe_ctx, true, false);
1002 static void enable_stream_features(struct pipe_ctx *pipe_ctx)
1004 struct dc_stream_state *stream = pipe_ctx->stream;
1006 if (pipe_ctx->stream->signal != SIGNAL_TYPE_DISPLAY_PORT_MST) {
1111 static struct fixed31_32 get_pbn_from_timing(struct pipe_ctx *pipe_ctx)
1116 if (dp_is_128b_132b_signal(pipe_ctx))
1121 kbps = dc_bandwidth_in_kbps_from_timing(&pipe_ctx->stream->timing, link_encoding);
1283 static enum dc_status deallocate_mst_payload(struct pipe_ctx *pipe_ctx)
1285 struct dc_stream_state *stream = pipe_ctx->stream;
1291 const struct link_hwss *link_hwss = get_link_hwss(link, &pipe_ctx->link_res);
1304 link_hwss->ext.set_throttled_vcp_size(pipe_ctx, avg_time_slots_per_mtp);
1306 link_hwss->ext.set_hblank_min_symbol_width(pipe_ctx,
1321 pipe_ctx->stream_res.stream_enc,
1322 pipe_ctx->stream_res.hpo_dp_stream_enc,
1328 pipe_ctx->pipe_idx);
1333 remove_stream_from_alloc_table(link, pipe_ctx->stream_res.stream_enc,
1334 pipe_ctx->stream_res.hpo_dp_stream_enc);
1364 link_hwss->ext.update_stream_allocation_table(link, &pipe_ctx->link_res,
1382 static enum dc_status allocate_mst_payload(struct pipe_ctx *pipe_ctx)
1384 struct dc_stream_state *stream = pipe_ctx->stream;
1392 const struct link_hwss *link_hwss = get_link_hwss(link, &pipe_ctx->link_res);
1408 pipe_ctx->stream_res.stream_enc,
1409 pipe_ctx->stream_res.hpo_dp_stream_enc,
1415 pipe_ctx->pipe_idx);
1447 &pipe_ctx->link_res,
1466 pbn = get_pbn_from_timing(pipe_ctx);
1472 link_hwss->ext.set_throttled_vcp_size(pipe_ctx, avg_time_slots_per_mtp);
1474 link_hwss->ext.set_hblank_min_symbol_width(pipe_ctx,
1608 static enum dc_status update_sst_payload(struct pipe_ctx *pipe_ctx,
1611 struct dc_stream_state *stream = pipe_ctx->stream;
1616 const struct link_hwss *link_hwss = get_link_hwss(link, &pipe_ctx->link_res);
1626 link_hwss->ext.set_throttled_vcp_size(pipe_ctx,
1629 link_hwss->ext.set_hblank_min_symbol_width(pipe_ctx,
1643 pipe_ctx->pipe_idx);
1647 proposed_table.stream_allocations[0].hpo_dp_stream_enc = pipe_ctx->stream_res.hpo_dp_stream_enc;
1660 link_hwss->ext.update_stream_allocation_table(link, &pipe_ctx->link_res,
1677 link_hwss->ext.set_throttled_vcp_size(pipe_ctx,
1680 link_hwss->ext.set_hblank_min_symbol_width(pipe_ctx,
1691 enum dc_status link_reduce_mst_payload(struct pipe_ctx *pipe_ctx, uint32_t bw_in_kbps)
1693 struct dc_stream_state *stream = pipe_ctx->stream;
1700 const struct link_hwss *link_hwss = get_link_hwss(link, &pipe_ctx->link_res);
1709 link_hwss->ext.set_throttled_vcp_size(pipe_ctx, avg_time_slots_per_mtp);
1711 link_hwss->ext.set_hblank_min_symbol_width(pipe_ctx,
1729 pipe_ctx->stream_res.stream_enc,
1730 pipe_ctx->stream_res.hpo_dp_stream_enc,
1736 pipe_ctx->pipe_idx);
1768 link_hwss->ext.update_stream_allocation_table(link, &pipe_ctx->link_res,
1779 enum dc_status link_increase_mst_payload(struct pipe_ctx *pipe_ctx, uint32_t bw_in_kbps)
1781 struct dc_stream_state *stream = pipe_ctx->stream;
1789 const struct link_hwss *link_hwss = get_link_hwss(link, &pipe_ctx->link_res);
1801 pipe_ctx->stream_res.stream_enc,
1802 pipe_ctx->stream_res.hpo_dp_stream_enc,
1835 link_hwss->ext.update_stream_allocation_table(link, &pipe_ctx->link_res,
1856 link_hwss->ext.set_throttled_vcp_size(pipe_ctx, avg_time_slots_per_mtp);
1858 link_hwss->ext.set_hblank_min_symbol_width(pipe_ctx,
1913 static void enable_link_hdmi(struct pipe_ctx *pipe_ctx)
1915 struct dc_stream_state *stream = pipe_ctx->stream;
1923 struct dc *dc = pipe_ctx->stream->ctx->dc;
1924 const struct link_hwss *link_hwss = get_link_hwss(link, &pipe_ctx->link_res);
1931 if (dc_is_hdmi_signal(pipe_ctx->stream->signal)) {
1932 unsigned short masked_chip_caps = pipe_ctx->stream->link->chip_caps &
1936 eng_id = pipe_ctx->stream_res.stream_enc->id;
1938 if (get_ext_hdmi_settings(pipe_ctx, eng_id, &settings)) {
1939 write_i2c_retimer_setting(pipe_ctx,
1942 write_i2c_default_retimer_setting(pipe_ctx,
1947 write_i2c_redriver_setting(pipe_ctx, is_over_340mhz);
1951 if (dc_is_hdmi_signal(pipe_ctx->stream->signal))
1967 if (dc_is_hdmi_tmds_signal(pipe_ctx->stream->signal))
1968 link_hwss->setup_stream_encoder(pipe_ctx);
1972 &pipe_ctx->link_res,
1973 pipe_ctx->stream->signal,
1974 pipe_ctx->clock_source->id,
1978 if (dc_is_hdmi_signal(pipe_ctx->stream->signal))
1983 struct pipe_ctx *pipe_ctx)
1985 struct dc_stream_state *stream = pipe_ctx->stream;
1990 &pipe_ctx->link_config.dp_link_settings;
2024 pipe_ctx->stream->signal == SIGNAL_TYPE_DISPLAY_PORT &&
2028 if (pipe_ctx->stream->signal == SIGNAL_TYPE_EDP) {
2038 pipe_ctx->stream_res.pix_clk_params.requested_sym_clk =
2063 pipe_ctx,
2064 pipe_ctx->stream->signal,
2094 struct pipe_ctx *pipe_ctx)
2096 return enable_link_dp(state, pipe_ctx);
2099 static void enable_link_lvds(struct pipe_ctx *pipe_ctx)
2101 struct dc_stream_state *stream = pipe_ctx->stream;
2112 &pipe_ctx->link_res,
2113 pipe_ctx->clock_source->id,
2120 struct pipe_ctx *pipe_ctx)
2122 struct dc_link *link = pipe_ctx->stream->link;
2144 return enable_link_dp(state, pipe_ctx);
2149 struct pipe_ctx *pipe_ctx)
2152 struct dc_stream_state *stream = pipe_ctx->stream;
2162 disable_link(link, &pipe_ctx->link_res, pipe_ctx->stream->signal);
2164 switch (pipe_ctx->stream->signal) {
2166 status = enable_link_dp(state, pipe_ctx);
2169 status = enable_link_edp(state, pipe_ctx);
2172 status = enable_link_dp_mst(state, pipe_ctx);
2178 enable_link_hdmi(pipe_ctx);
2182 enable_link_lvds(pipe_ctx);
2193 pipe_ctx->stream->link->link_status.link_active = true;
2283 void link_set_dpms_off(struct pipe_ctx *pipe_ctx)
2285 struct dc *dc = pipe_ctx->stream->ctx->dc;
2286 struct dc_stream_state *stream = pipe_ctx->stream;
2288 struct vpg *vpg = pipe_ctx->stream_res.stream_enc->vpg;
2291 DC_LOGGER_INIT(pipe_ctx->stream->ctx->logger);
2293 ASSERT(is_master_pipe_for_link(link, pipe_ctx));
2295 if (dp_is_128b_132b_signal(pipe_ctx))
2296 vpg = pipe_ctx->stream_res.hpo_dp_stream_enc->vpg;
2297 if (dc_is_virtual_signal(pipe_ctx->stream->signal))
2300 if (pipe_ctx->stream->sink) {
2301 if (pipe_ctx->stream->sink->sink_signal != SIGNAL_TYPE_VIRTUAL &&
2302 pipe_ctx->stream->sink->sink_signal != SIGNAL_TYPE_NONE) {
2303 DC_LOG_DC("%s pipe_ctx dispname=%s signal=%x\n", __func__,
2304 pipe_ctx->stream->sink->edid_caps.display_name,
2305 pipe_ctx->stream->signal);
2309 if (!pipe_ctx->stream->sink->edid_caps.panel_patch.skip_avmute) {
2310 if (dc_is_hdmi_signal(pipe_ctx->stream->signal))
2311 set_avmute(pipe_ctx, true);
2314 dc->hwss.disable_audio_stream(pipe_ctx);
2316 edp_set_panel_assr(link, pipe_ctx, &panel_mode_dp, false);
2318 update_psp_stream_config(pipe_ctx, true);
2319 dc->hwss.blank_stream(pipe_ctx);
2321 if (pipe_ctx->stream->link->ep_type == DISPLAY_ENDPOINT_USB4_DPIA)
2322 deallocate_usb4_bandwidth(pipe_ctx->stream);
2324 if (pipe_ctx->stream->signal == SIGNAL_TYPE_DISPLAY_PORT_MST)
2325 deallocate_mst_payload(pipe_ctx);
2326 else if (pipe_ctx->stream->signal == SIGNAL_TYPE_DISPLAY_PORT &&
2327 dp_is_128b_132b_signal(pipe_ctx))
2328 update_sst_payload(pipe_ctx, false);
2330 if (dc_is_hdmi_signal(pipe_ctx->stream->signal)) {
2332 enum engine_id eng_id = pipe_ctx->stream_res.stream_enc->id;
2343 if (get_ext_hdmi_settings(pipe_ctx, eng_id, &settings))
2344 write_i2c_retimer_setting(pipe_ctx,
2347 write_i2c_default_retimer_setting(pipe_ctx,
2351 write_i2c_redriver_setting(pipe_ctx, false);
2355 if (pipe_ctx->stream->signal == SIGNAL_TYPE_DISPLAY_PORT &&
2356 !dp_is_128b_132b_signal(pipe_ctx)) {
2365 disable_link(pipe_ctx->stream->link, &pipe_ctx->link_res, pipe_ctx->stream->signal);
2366 dc->hwss.disable_stream(pipe_ctx);
2368 dc->hwss.disable_stream(pipe_ctx);
2369 disable_link(pipe_ctx->stream->link, &pipe_ctx->link_res, pipe_ctx->stream->signal);
2372 if (pipe_ctx->stream->timing.flags.DSC) {
2373 if (dc_is_dp_signal(pipe_ctx->stream->signal))
2374 link_set_dsc_enable(pipe_ctx, false);
2376 if (dp_is_128b_132b_signal(pipe_ctx)) {
2377 if (pipe_ctx->stream_res.tg->funcs->set_out_mux)
2378 pipe_ctx->stream_res.tg->funcs->set_out_mux(pipe_ctx->stream_res.tg, OUT_MUX_DIO);
2387 enum dp_panel_mode panel_mode = dp_get_panel_mode(pipe_ctx->stream->link);
2395 struct pipe_ctx *pipe_ctx)
2397 struct dc *dc = pipe_ctx->stream->ctx->dc;
2398 struct dc_stream_state *stream = pipe_ctx->stream;
2403 struct vpg *vpg = pipe_ctx->stream_res.stream_enc->vpg;
2404 const struct link_hwss *link_hwss = get_link_hwss(link, &pipe_ctx->link_res);
2406 pipe_ctx->stream->apply_edp_fast_boot_optimization;
2408 DC_LOGGER_INIT(pipe_ctx->stream->ctx->logger);
2410 ASSERT(is_master_pipe_for_link(link, pipe_ctx));
2412 if (dp_is_128b_132b_signal(pipe_ctx))
2413 vpg = pipe_ctx->stream_res.hpo_dp_stream_enc->vpg;
2414 if (dc_is_virtual_signal(pipe_ctx->stream->signal))
2417 if (pipe_ctx->stream->sink) {
2418 if (pipe_ctx->stream->sink->sink_signal != SIGNAL_TYPE_VIRTUAL &&
2419 pipe_ctx->stream->sink->sink_signal != SIGNAL_TYPE_NONE) {
2420 DC_LOG_DC("%s pipe_ctx dispname=%s signal=%x\n", __func__,
2421 pipe_ctx->stream->sink->edid_caps.display_name,
2422 pipe_ctx->stream->signal);
2429 if (!dc_is_virtual_signal(pipe_ctx->stream->signal)
2430 && !dp_is_128b_132b_signal(pipe_ctx)) {
2431 struct stream_encoder *stream_enc = pipe_ctx->stream_res.stream_enc;
2436 pipe_ctx->stream->signal);
2441 pipe_ctx->stream->signal, 1);
2444 pipe_ctx->stream->link->link_state_valid = true;
2446 if (pipe_ctx->stream_res.tg->funcs->set_out_mux) {
2447 if (dp_is_128b_132b_signal(pipe_ctx))
2451 pipe_ctx->stream_res.tg->funcs->set_out_mux(pipe_ctx->stream_res.tg, otg_out_dest);
2454 link_hwss->setup_stream_attribute(pipe_ctx);
2456 pipe_ctx->stream->apply_edp_fast_boot_optimization = false;
2462 resource_build_info_frame(pipe_ctx);
2463 dc->hwss.update_info_frame(pipe_ctx);
2465 if (dc_is_dp_signal(pipe_ctx->stream->signal))
2469 if (pipe_ctx->stream->apply_seamless_boot_optimization) {
2470 pipe_ctx->stream->dpms_off = false;
2473 if (pipe_ctx->stream->signal == SIGNAL_TYPE_DISPLAY_PORT) {
2474 enable_stream_features(pipe_ctx);
2475 dc->hwss.enable_audio_stream(pipe_ctx);
2478 update_psp_stream_config(pipe_ctx, false);
2483 if (pipe_ctx->stream->signal == SIGNAL_TYPE_EDP &&
2485 !pipe_ctx->stream->timing.flags.DSC &&
2486 !pipe_ctx->next_odm_pipe) {
2487 pipe_ctx->stream->dpms_off = false;
2488 update_psp_stream_config(pipe_ctx, false);
2492 if (pipe_ctx->stream->dpms_off)
2501 if (pipe_ctx->stream->timing.flags.DSC) {
2502 if (dc_is_dp_signal(pipe_ctx->stream->signal) ||
2503 dc_is_virtual_signal(pipe_ctx->stream->signal))
2504 link_set_dsc_enable(pipe_ctx, true);
2507 status = enable_link(state, pipe_ctx);
2511 pipe_ctx->stream->link->link_index,
2520 pipe_ctx->stream->signal == SIGNAL_TYPE_DISPLAY_PORT_MST) {
2522 disable_link(stream->link, &pipe_ctx->link_res,
2523 pipe_ctx->stream->signal);
2530 if (pipe_ctx->stream_res.tg->funcs->set_test_pattern)
2531 pipe_ctx->stream_res.tg->funcs->set_test_pattern(pipe_ctx->stream_res.tg,
2539 if (!(dc_is_virtual_signal(pipe_ctx->stream->signal) ||
2540 dp_is_128b_132b_signal(pipe_ctx))) {
2541 struct stream_encoder *stream_enc = pipe_ctx->stream_res.stream_enc;
2546 pipe_ctx->stream->signal);
2551 pipe_ctx->stream->signal, 1);
2555 dc->hwss.enable_stream(pipe_ctx);
2558 if (pipe_ctx->stream->timing.flags.DSC) {
2559 if (dc_is_dp_signal(pipe_ctx->stream->signal) ||
2560 dc_is_virtual_signal(pipe_ctx->stream->signal)) {
2561 dp_set_dsc_on_rx(pipe_ctx, true);
2562 link_set_dsc_pps_packet(pipe_ctx, true, true);
2566 if (pipe_ctx->stream->link->ep_type == DISPLAY_ENDPOINT_USB4_DPIA)
2567 allocate_usb4_bandwidth(pipe_ctx->stream);
2569 if (pipe_ctx->stream->signal == SIGNAL_TYPE_DISPLAY_PORT_MST)
2570 allocate_mst_payload(pipe_ctx);
2571 else if (pipe_ctx->stream->signal == SIGNAL_TYPE_DISPLAY_PORT &&
2572 dp_is_128b_132b_signal(pipe_ctx))
2573 update_sst_payload(pipe_ctx, true);
2575 dc->hwss.unblank_stream(pipe_ctx,
2576 &pipe_ctx->stream->link->cur_link_settings);
2581 if (dc_is_dp_signal(pipe_ctx->stream->signal))
2582 enable_stream_features(pipe_ctx);
2583 update_psp_stream_config(pipe_ctx, false);
2585 dc->hwss.enable_audio_stream(pipe_ctx);
2587 if (dc_is_hdmi_signal(pipe_ctx->stream->signal)) {
2588 set_avmute(pipe_ctx, false);