Message ID | 20240301143600.1334-2-ville.syrjala@linux.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/i915: Bigjoiner stuff | expand |
On Fri, Mar 01, 2024 at 04:35:53PM +0200, Ville Syrjala wrote: > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > In preparation for doing a more sensible pipe vs. transcoder > handling for bigjoiner let's rename the crtc/crtc_state in the > top level crtc_enable/disable and the DDI encoder hooks to > include "master" in the name. This way they won't collide with > the per-pipe stuff. > > Note that at this point this is (at least partially) telling > lies as we still run through some of these for slave pipes as > well. But I wanted to get the huge rename out of the way so > it won't clutter the functional patches so much. > > TODO: or perhaps use some other names for the per-pipe stuff instead? > > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> I will then review now the patches which you could merge before the bigjoiner stuff could be finished. Checked this patch I guess, you were also talking that this renaming might be not the best idea. I also wonder whether should we really emphasize things like "master"/"slave" in function names. I thought that one idea in our refactoring was to unify joined pipes handling so that there are no(or at least almost no) explicit code paths/function names for masters/slaves. Stan > --- > drivers/gpu/drm/i915/display/intel_ddi.c | 326 +++++++++---------- > drivers/gpu/drm/i915/display/intel_display.c | 100 +++--- > drivers/gpu/drm/i915/display/intel_dp_mst.c | 91 +++--- > 3 files changed, 258 insertions(+), 259 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c > index c587a8efeafc..6287629f9e77 100644 > --- a/drivers/gpu/drm/i915/display/intel_ddi.c > +++ b/drivers/gpu/drm/i915/display/intel_ddi.c > @@ -2490,21 +2490,21 @@ static void mtl_port_buf_ctl_io_selection(struct intel_encoder *encoder) > > static void mtl_ddi_pre_enable_dp(struct intel_atomic_state *state, > struct intel_encoder *encoder, > - const struct intel_crtc_state *crtc_state, > + const struct intel_crtc_state *master_crtc_state, > const struct drm_connector_state *conn_state) > { > struct intel_dp *intel_dp = enc_to_intel_dp(encoder); > - bool is_mst = intel_crtc_has_type(crtc_state, INTEL_OUTPUT_DP_MST); > + bool is_mst = intel_crtc_has_type(master_crtc_state, INTEL_OUTPUT_DP_MST); > > intel_dp_set_link_params(intel_dp, > - crtc_state->port_clock, > - crtc_state->lane_count); > + master_crtc_state->port_clock, > + master_crtc_state->lane_count); > > /* > * We only configure what the register value will be here. Actual > * enabling happens during link training farther down. > */ > - intel_ddi_init_dp_buf_reg(encoder, crtc_state); > + intel_ddi_init_dp_buf_reg(encoder, master_crtc_state); > > /* > * 1. Enable Power Wells > @@ -2522,48 +2522,48 @@ static void mtl_ddi_pre_enable_dp(struct intel_atomic_state *state, > intel_pps_on(intel_dp); > > /* 5. Enable the port PLL */ > - intel_ddi_enable_clock(encoder, crtc_state); > + intel_ddi_enable_clock(encoder, master_crtc_state); > > /* > * 6.a Configure Transcoder Clock Select to direct the Port clock to the > * Transcoder. > */ > - intel_ddi_enable_transcoder_clock(encoder, crtc_state); > + intel_ddi_enable_transcoder_clock(encoder, master_crtc_state); > > /* > * 6.b If DP v2.0/128b mode - Configure TRANS_DP2_CTL register settings. > */ > - intel_ddi_config_transcoder_dp2(encoder, crtc_state); > + intel_ddi_config_transcoder_dp2(encoder, master_crtc_state); > > /* > * 6.c Configure TRANS_DDI_FUNC_CTL DDI Select, DDI Mode Select & MST > * Transport Select > */ > - intel_ddi_config_transcoder_func(encoder, crtc_state); > + intel_ddi_config_transcoder_func(encoder, master_crtc_state); > > /* > * 6.e Program CoG/MSO configuration bits in DSS_CTL1 if selected. > */ > - intel_ddi_mso_configure(crtc_state); > + intel_ddi_mso_configure(master_crtc_state); > > if (!is_mst) > intel_dp_set_power(intel_dp, DP_SET_POWER_D0); > > - intel_dp_configure_protocol_converter(intel_dp, crtc_state); > + intel_dp_configure_protocol_converter(intel_dp, master_crtc_state); > if (!is_mst) > intel_dp_sink_enable_decompression(state, > to_intel_connector(conn_state->connector), > - crtc_state); > + master_crtc_state); > > /* > * DDI FEC: "anticipates enabling FEC encoding sets the FEC_READY bit > * in the FEC_CONFIGURATION register to 1 before initiating link > * training > */ > - intel_dp_sink_set_fec_ready(intel_dp, crtc_state, true); > + intel_dp_sink_set_fec_ready(intel_dp, master_crtc_state, true); > > intel_dp_check_frl_training(intel_dp); > - intel_dp_pcon_dsc_configure(intel_dp, crtc_state); > + intel_dp_pcon_dsc_configure(intel_dp, master_crtc_state); > > /* > * 6. The rest of the below are substeps under the bspec's "Enable and > @@ -2584,38 +2584,38 @@ static void mtl_ddi_pre_enable_dp(struct intel_atomic_state *state, > * Pattern, wait for 5 idle patterns (DP_TP_STATUS Min_Idles_Sent) > * (timeout after 800 us) > */ > - intel_dp_start_link_train(intel_dp, crtc_state); > + intel_dp_start_link_train(intel_dp, master_crtc_state); > > /* 6.n Set DP_TP_CTL link training to Normal */ > - if (!is_trans_port_sync_mode(crtc_state)) > - intel_dp_stop_link_train(intel_dp, crtc_state); > + if (!is_trans_port_sync_mode(master_crtc_state)) > + intel_dp_stop_link_train(intel_dp, master_crtc_state); > > /* 6.o Configure and enable FEC if needed */ > - intel_ddi_enable_fec(encoder, crtc_state); > + intel_ddi_enable_fec(encoder, master_crtc_state); > > if (!is_mst) > - intel_dsc_dp_pps_write(encoder, crtc_state); > + intel_dsc_dp_pps_write(encoder, master_crtc_state); > } > > static void tgl_ddi_pre_enable_dp(struct intel_atomic_state *state, > struct intel_encoder *encoder, > - const struct intel_crtc_state *crtc_state, > + const struct intel_crtc_state *master_crtc_state, > const struct drm_connector_state *conn_state) > { > struct intel_dp *intel_dp = enc_to_intel_dp(encoder); > struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); > struct intel_digital_port *dig_port = enc_to_dig_port(encoder); > - bool is_mst = intel_crtc_has_type(crtc_state, INTEL_OUTPUT_DP_MST); > + bool is_mst = intel_crtc_has_type(master_crtc_state, INTEL_OUTPUT_DP_MST); > > intel_dp_set_link_params(intel_dp, > - crtc_state->port_clock, > - crtc_state->lane_count); > + master_crtc_state->port_clock, > + master_crtc_state->lane_count); > > /* > * We only configure what the register value will be here. Actual > * enabling happens during link training farther down. > */ > - intel_ddi_init_dp_buf_reg(encoder, crtc_state); > + intel_ddi_init_dp_buf_reg(encoder, master_crtc_state); > > /* > * 1. Enable Power Wells > @@ -2642,7 +2642,7 @@ static void tgl_ddi_pre_enable_dp(struct intel_atomic_state *state, > * hsw_crtc_enable()->intel_enable_shared_dpll(). We need only > * configure the PLL to port mapping here. > */ > - intel_ddi_enable_clock(encoder, crtc_state); > + intel_ddi_enable_clock(encoder, master_crtc_state); > > /* 5. If IO power is controlled through PWR_WELL_CTL, Enable IO Power */ > if (!intel_tc_port_in_tbt_alt_mode(dig_port)) { > @@ -2652,7 +2652,7 @@ static void tgl_ddi_pre_enable_dp(struct intel_atomic_state *state, > } > > /* 6. Program DP_MODE */ > - icl_program_mg_dp_mode(dig_port, crtc_state); > + icl_program_mg_dp_mode(dig_port, master_crtc_state); > > /* > * 7. The rest of the below are substeps under the bspec's "Enable and > @@ -2668,16 +2668,16 @@ static void tgl_ddi_pre_enable_dp(struct intel_atomic_state *state, > * 7.a Configure Transcoder Clock Select to direct the Port clock to the > * Transcoder. > */ > - intel_ddi_enable_transcoder_clock(encoder, crtc_state); > + intel_ddi_enable_transcoder_clock(encoder, master_crtc_state); > > if (HAS_DP20(dev_priv)) > - intel_ddi_config_transcoder_dp2(encoder, crtc_state); > + intel_ddi_config_transcoder_dp2(encoder, master_crtc_state); > > /* > * 7.b Configure TRANS_DDI_FUNC_CTL DDI Select, DDI Mode Select & MST > * Transport Select > */ > - intel_ddi_config_transcoder_func(encoder, crtc_state); > + intel_ddi_config_transcoder_func(encoder, master_crtc_state); > > /* > * 7.c Configure & enable DP_TP_CTL with link training pattern 1 > @@ -2688,36 +2688,36 @@ static void tgl_ddi_pre_enable_dp(struct intel_atomic_state *state, > */ > > /* 7.e Configure voltage swing and related IO settings */ > - encoder->set_signal_levels(encoder, crtc_state); > + encoder->set_signal_levels(encoder, master_crtc_state); > > /* > * 7.f Combo PHY: Configure PORT_CL_DW10 Static Power Down to power up > * the used lanes of the DDI. > */ > - intel_ddi_power_up_lanes(encoder, crtc_state); > + intel_ddi_power_up_lanes(encoder, master_crtc_state); > > /* > * 7.g Program CoG/MSO configuration bits in DSS_CTL1 if selected. > */ > - intel_ddi_mso_configure(crtc_state); > + intel_ddi_mso_configure(master_crtc_state); > > if (!is_mst) > intel_dp_set_power(intel_dp, DP_SET_POWER_D0); > > - intel_dp_configure_protocol_converter(intel_dp, crtc_state); > + intel_dp_configure_protocol_converter(intel_dp, master_crtc_state); > if (!is_mst) > intel_dp_sink_enable_decompression(state, > to_intel_connector(conn_state->connector), > - crtc_state); > + master_crtc_state); > /* > * DDI FEC: "anticipates enabling FEC encoding sets the FEC_READY bit > * in the FEC_CONFIGURATION register to 1 before initiating link > * training > */ > - intel_dp_sink_set_fec_ready(intel_dp, crtc_state, true); > + intel_dp_sink_set_fec_ready(intel_dp, master_crtc_state, true); > > intel_dp_check_frl_training(intel_dp); > - intel_dp_pcon_dsc_configure(intel_dp, crtc_state); > + intel_dp_pcon_dsc_configure(intel_dp, master_crtc_state); > > /* > * 7.i Follow DisplayPort specification training sequence (see notes for > @@ -2726,29 +2726,29 @@ static void tgl_ddi_pre_enable_dp(struct intel_atomic_state *state, > * Pattern, wait for 5 idle patterns (DP_TP_STATUS Min_Idles_Sent) > * (timeout after 800 us) > */ > - intel_dp_start_link_train(intel_dp, crtc_state); > + intel_dp_start_link_train(intel_dp, master_crtc_state); > > /* 7.k Set DP_TP_CTL link training to Normal */ > - if (!is_trans_port_sync_mode(crtc_state)) > - intel_dp_stop_link_train(intel_dp, crtc_state); > + if (!is_trans_port_sync_mode(master_crtc_state)) > + intel_dp_stop_link_train(intel_dp, master_crtc_state); > > /* 7.l Configure and enable FEC if needed */ > - intel_ddi_enable_fec(encoder, crtc_state); > + intel_ddi_enable_fec(encoder, master_crtc_state); > > if (!is_mst) > - intel_dsc_dp_pps_write(encoder, crtc_state); > + intel_dsc_dp_pps_write(encoder, master_crtc_state); > } > > static void hsw_ddi_pre_enable_dp(struct intel_atomic_state *state, > struct intel_encoder *encoder, > - const struct intel_crtc_state *crtc_state, > + const struct intel_crtc_state *master_crtc_state, > const struct drm_connector_state *conn_state) > { > struct intel_dp *intel_dp = enc_to_intel_dp(encoder); > struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); > enum port port = encoder->port; > struct intel_digital_port *dig_port = enc_to_dig_port(encoder); > - bool is_mst = intel_crtc_has_type(crtc_state, INTEL_OUTPUT_DP_MST); > + bool is_mst = intel_crtc_has_type(master_crtc_state, INTEL_OUTPUT_DP_MST); > > if (DISPLAY_VER(dev_priv) < 11) > drm_WARN_ON(&dev_priv->drm, > @@ -2757,18 +2757,18 @@ static void hsw_ddi_pre_enable_dp(struct intel_atomic_state *state, > drm_WARN_ON(&dev_priv->drm, is_mst && port == PORT_A); > > intel_dp_set_link_params(intel_dp, > - crtc_state->port_clock, > - crtc_state->lane_count); > + master_crtc_state->port_clock, > + master_crtc_state->lane_count); > > /* > * We only configure what the register value will be here. Actual > * enabling happens during link training farther down. > */ > - intel_ddi_init_dp_buf_reg(encoder, crtc_state); > + intel_ddi_init_dp_buf_reg(encoder, master_crtc_state); > > intel_pps_on(intel_dp); > > - intel_ddi_enable_clock(encoder, crtc_state); > + intel_ddi_enable_clock(encoder, master_crtc_state); > > if (!intel_tc_port_in_tbt_alt_mode(dig_port)) { > drm_WARN_ON(&dev_priv->drm, dig_port->ddi_io_wakeref); > @@ -2776,39 +2776,39 @@ static void hsw_ddi_pre_enable_dp(struct intel_atomic_state *state, > dig_port->ddi_io_power_domain); > } > > - icl_program_mg_dp_mode(dig_port, crtc_state); > + icl_program_mg_dp_mode(dig_port, master_crtc_state); > > if (has_buf_trans_select(dev_priv)) > - hsw_prepare_dp_ddi_buffers(encoder, crtc_state); > + hsw_prepare_dp_ddi_buffers(encoder, master_crtc_state); > > - encoder->set_signal_levels(encoder, crtc_state); > + encoder->set_signal_levels(encoder, master_crtc_state); > > - intel_ddi_power_up_lanes(encoder, crtc_state); > + intel_ddi_power_up_lanes(encoder, master_crtc_state); > > if (!is_mst) > intel_dp_set_power(intel_dp, DP_SET_POWER_D0); > - intel_dp_configure_protocol_converter(intel_dp, crtc_state); > + intel_dp_configure_protocol_converter(intel_dp, master_crtc_state); > if (!is_mst) > intel_dp_sink_enable_decompression(state, > to_intel_connector(conn_state->connector), > - crtc_state); > - intel_dp_sink_set_fec_ready(intel_dp, crtc_state, true); > - intel_dp_start_link_train(intel_dp, crtc_state); > + master_crtc_state); > + intel_dp_sink_set_fec_ready(intel_dp, master_crtc_state, true); > + intel_dp_start_link_train(intel_dp, master_crtc_state); > if ((port != PORT_A || DISPLAY_VER(dev_priv) >= 9) && > - !is_trans_port_sync_mode(crtc_state)) > - intel_dp_stop_link_train(intel_dp, crtc_state); > + !is_trans_port_sync_mode(master_crtc_state)) > + intel_dp_stop_link_train(intel_dp, master_crtc_state); > > - intel_ddi_enable_fec(encoder, crtc_state); > + intel_ddi_enable_fec(encoder, master_crtc_state); > > if (!is_mst) { > - intel_ddi_enable_transcoder_clock(encoder, crtc_state); > - intel_dsc_dp_pps_write(encoder, crtc_state); > + intel_ddi_enable_transcoder_clock(encoder, master_crtc_state); > + intel_dsc_dp_pps_write(encoder, master_crtc_state); > } > } > > static void intel_ddi_pre_enable_dp(struct intel_atomic_state *state, > struct intel_encoder *encoder, > - const struct intel_crtc_state *crtc_state, > + const struct intel_crtc_state *master_crtc_state, > const struct drm_connector_state *conn_state) > { > struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); > @@ -2816,29 +2816,29 @@ static void intel_ddi_pre_enable_dp(struct intel_atomic_state *state, > > if (HAS_DP20(dev_priv)) { > intel_dp_128b132b_sdp_crc16(enc_to_intel_dp(encoder), > - crtc_state); > - if (crtc_state->has_panel_replay) > + master_crtc_state); > + if (master_crtc_state->has_panel_replay) > drm_dp_dpcd_writeb(&intel_dp->aux, PANEL_REPLAY_CONFIG, > DP_PANEL_REPLAY_ENABLE); > } > > if (DISPLAY_VER(dev_priv) >= 14) > - mtl_ddi_pre_enable_dp(state, encoder, crtc_state, conn_state); > + mtl_ddi_pre_enable_dp(state, encoder, master_crtc_state, conn_state); > else if (DISPLAY_VER(dev_priv) >= 12) > - tgl_ddi_pre_enable_dp(state, encoder, crtc_state, conn_state); > + tgl_ddi_pre_enable_dp(state, encoder, master_crtc_state, conn_state); > else > - hsw_ddi_pre_enable_dp(state, encoder, crtc_state, conn_state); > + hsw_ddi_pre_enable_dp(state, encoder, master_crtc_state, conn_state); > > /* MST will call a setting of MSA after an allocating of Virtual Channel > * from MST encoder pre_enable callback. > */ > - if (!intel_crtc_has_type(crtc_state, INTEL_OUTPUT_DP_MST)) > - intel_ddi_set_dp_msa(crtc_state, conn_state); > + if (!intel_crtc_has_type(master_crtc_state, INTEL_OUTPUT_DP_MST)) > + intel_ddi_set_dp_msa(master_crtc_state, conn_state); > } > > static void intel_ddi_pre_enable_hdmi(struct intel_atomic_state *state, > struct intel_encoder *encoder, > - const struct intel_crtc_state *crtc_state, > + const struct intel_crtc_state *master_crtc_state, > const struct drm_connector_state *conn_state) > { > struct intel_digital_port *dig_port = enc_to_dig_port(encoder); > @@ -2846,27 +2846,27 @@ static void intel_ddi_pre_enable_hdmi(struct intel_atomic_state *state, > struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); > > intel_dp_dual_mode_set_tmds_output(intel_hdmi, true); > - intel_ddi_enable_clock(encoder, crtc_state); > + intel_ddi_enable_clock(encoder, master_crtc_state); > > drm_WARN_ON(&dev_priv->drm, dig_port->ddi_io_wakeref); > dig_port->ddi_io_wakeref = intel_display_power_get(dev_priv, > dig_port->ddi_io_power_domain); > > - icl_program_mg_dp_mode(dig_port, crtc_state); > + icl_program_mg_dp_mode(dig_port, master_crtc_state); > > - intel_ddi_enable_transcoder_clock(encoder, crtc_state); > + intel_ddi_enable_transcoder_clock(encoder, master_crtc_state); > > dig_port->set_infoframes(encoder, > - crtc_state->has_infoframe, > - crtc_state, conn_state); > + master_crtc_state->has_infoframe, > + master_crtc_state, conn_state); > } > > static void intel_ddi_pre_enable(struct intel_atomic_state *state, > struct intel_encoder *encoder, > - const struct intel_crtc_state *crtc_state, > + const struct intel_crtc_state *master_crtc_state, > const struct drm_connector_state *conn_state) > { > - struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); > + struct intel_crtc *crtc = to_intel_crtc(master_crtc_state->uapi.crtc); > struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); > enum pipe pipe = crtc->pipe; > > @@ -2876,32 +2876,32 @@ static void intel_ddi_pre_enable(struct intel_atomic_state *state, > * - encoder will be the main encoder (ie. mst->primary) > * - the main connector associated with this port > * won't be active or linked to a crtc > - * - crtc_state will be the state of the first stream to > + * - master_crtc_state will be the state of the first stream to > * be activated on this port, and it may not be the same > * stream that will be deactivated last, but each stream > * should have a state that is identical when it comes to > * the DP link parameteres > */ > > - drm_WARN_ON(&dev_priv->drm, crtc_state->has_pch_encoder); > + drm_WARN_ON(&dev_priv->drm, master_crtc_state->has_pch_encoder); > > intel_set_cpu_fifo_underrun_reporting(dev_priv, pipe, true); > > - if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_HDMI)) { > - intel_ddi_pre_enable_hdmi(state, encoder, crtc_state, > + if (intel_crtc_has_type(master_crtc_state, INTEL_OUTPUT_HDMI)) { > + intel_ddi_pre_enable_hdmi(state, encoder, master_crtc_state, > conn_state); > } else { > struct intel_digital_port *dig_port = enc_to_dig_port(encoder); > > - intel_ddi_pre_enable_dp(state, encoder, crtc_state, > + intel_ddi_pre_enable_dp(state, encoder, master_crtc_state, > conn_state); > > /* FIXME precompute everything properly */ > /* FIXME how do we turn infoframes off again? */ > if (dig_port->lspcon.active && intel_dp_has_hdmi_sink(&dig_port->dp)) > dig_port->set_infoframes(encoder, > - crtc_state->has_infoframe, > - crtc_state, conn_state); > + master_crtc_state->has_infoframe, > + master_crtc_state, conn_state); > } > } > > @@ -3000,19 +3000,19 @@ static void intel_disable_ddi_buf(struct intel_encoder *encoder, > > static void intel_ddi_post_disable_dp(struct intel_atomic_state *state, > struct intel_encoder *encoder, > - const struct intel_crtc_state *old_crtc_state, > + const struct intel_crtc_state *old_master_crtc_state, > const struct drm_connector_state *old_conn_state) > { > struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); > struct intel_digital_port *dig_port = enc_to_dig_port(encoder); > struct intel_dp *intel_dp = &dig_port->dp; > intel_wakeref_t wakeref; > - bool is_mst = intel_crtc_has_type(old_crtc_state, > + bool is_mst = intel_crtc_has_type(old_master_crtc_state, > INTEL_OUTPUT_DP_MST); > > if (!is_mst) > intel_dp_set_infoframes(encoder, false, > - old_crtc_state, old_conn_state); > + old_master_crtc_state, old_conn_state); > > /* > * Power down sink before disabling the port, otherwise we end > @@ -3022,7 +3022,7 @@ static void intel_ddi_post_disable_dp(struct intel_atomic_state *state, > > if (DISPLAY_VER(dev_priv) >= 12) { > if (is_mst) { > - enum transcoder cpu_transcoder = old_crtc_state->cpu_transcoder; > + enum transcoder cpu_transcoder = old_master_crtc_state->cpu_transcoder; > > intel_de_rmw(dev_priv, TRANS_DDI_FUNC_CTL(cpu_transcoder), > TGL_TRANS_DDI_PORT_MASK | TRANS_DDI_MODE_SELECT_MASK, > @@ -3030,12 +3030,12 @@ static void intel_ddi_post_disable_dp(struct intel_atomic_state *state, > } > } else { > if (!is_mst) > - intel_ddi_disable_transcoder_clock(old_crtc_state); > + intel_ddi_disable_transcoder_clock(old_master_crtc_state); > } > > - intel_disable_ddi_buf(encoder, old_crtc_state); > + intel_disable_ddi_buf(encoder, old_master_crtc_state); > > - intel_dp_sink_set_fec_ready(intel_dp, old_crtc_state, false); > + intel_dp_sink_set_fec_ready(intel_dp, old_master_crtc_state, false); > > /* > * From TGL spec: "If single stream or multi-stream master transcoder: > @@ -3043,7 +3043,7 @@ static void intel_ddi_post_disable_dp(struct intel_atomic_state *state, > * transcoder" > */ > if (DISPLAY_VER(dev_priv) >= 12) > - intel_ddi_disable_transcoder_clock(old_crtc_state); > + intel_ddi_disable_transcoder_clock(old_master_crtc_state); > > intel_pps_vdd_on(intel_dp); > intel_pps_off(intel_dp); > @@ -3065,7 +3065,7 @@ static void intel_ddi_post_disable_dp(struct intel_atomic_state *state, > > static void intel_ddi_post_disable_hdmi(struct intel_atomic_state *state, > struct intel_encoder *encoder, > - const struct intel_crtc_state *old_crtc_state, > + const struct intel_crtc_state *old_master_crtc_state, > const struct drm_connector_state *old_conn_state) > { > struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); > @@ -3074,15 +3074,15 @@ static void intel_ddi_post_disable_hdmi(struct intel_atomic_state *state, > intel_wakeref_t wakeref; > > dig_port->set_infoframes(encoder, false, > - old_crtc_state, old_conn_state); > + old_master_crtc_state, old_conn_state); > > if (DISPLAY_VER(dev_priv) < 12) > - intel_ddi_disable_transcoder_clock(old_crtc_state); > + intel_ddi_disable_transcoder_clock(old_master_crtc_state); > > - intel_disable_ddi_buf(encoder, old_crtc_state); > + intel_disable_ddi_buf(encoder, old_master_crtc_state); > > if (DISPLAY_VER(dev_priv) >= 12) > - intel_ddi_disable_transcoder_clock(old_crtc_state); > + intel_ddi_disable_transcoder_clock(old_master_crtc_state); > > wakeref = fetch_and_zero(&dig_port->ddi_io_wakeref); > if (wakeref) > @@ -3097,29 +3097,29 @@ static void intel_ddi_post_disable_hdmi(struct intel_atomic_state *state, > > static void intel_ddi_post_disable(struct intel_atomic_state *state, > struct intel_encoder *encoder, > - const struct intel_crtc_state *old_crtc_state, > + const struct intel_crtc_state *old_master_crtc_state, > const struct drm_connector_state *old_conn_state) > { > struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); > struct intel_crtc *slave_crtc; > > - if (!intel_crtc_has_type(old_crtc_state, INTEL_OUTPUT_DP_MST)) { > - intel_crtc_vblank_off(old_crtc_state); > + if (!intel_crtc_has_type(old_master_crtc_state, INTEL_OUTPUT_DP_MST)) { > + intel_crtc_vblank_off(old_master_crtc_state); > > - intel_disable_transcoder(old_crtc_state); > + intel_disable_transcoder(old_master_crtc_state); > > - intel_ddi_disable_transcoder_func(old_crtc_state); > + intel_ddi_disable_transcoder_func(old_master_crtc_state); > > - intel_dsc_disable(old_crtc_state); > + intel_dsc_disable(old_master_crtc_state); > > if (DISPLAY_VER(dev_priv) >= 9) > - skl_scaler_disable(old_crtc_state); > + skl_scaler_disable(old_master_crtc_state); > else > - ilk_pfit_disable(old_crtc_state); > + ilk_pfit_disable(old_master_crtc_state); > } > > for_each_intel_crtc_in_pipe_mask(&dev_priv->drm, slave_crtc, > - intel_crtc_bigjoiner_slave_pipes(old_crtc_state)) { > + intel_crtc_bigjoiner_slave_pipes(old_master_crtc_state)) { > const struct intel_crtc_state *old_slave_crtc_state = > intel_atomic_get_old_crtc_state(state, slave_crtc); > > @@ -3142,17 +3142,17 @@ static void intel_ddi_post_disable(struct intel_atomic_state *state, > * the DP link parameteres > */ > > - if (intel_crtc_has_type(old_crtc_state, INTEL_OUTPUT_HDMI)) > - intel_ddi_post_disable_hdmi(state, encoder, old_crtc_state, > + if (intel_crtc_has_type(old_master_crtc_state, INTEL_OUTPUT_HDMI)) > + intel_ddi_post_disable_hdmi(state, encoder, old_master_crtc_state, > old_conn_state); > else > - intel_ddi_post_disable_dp(state, encoder, old_crtc_state, > + intel_ddi_post_disable_dp(state, encoder, old_master_crtc_state, > old_conn_state); > } > > static void intel_ddi_post_pll_disable(struct intel_atomic_state *state, > struct intel_encoder *encoder, > - const struct intel_crtc_state *old_crtc_state, > + const struct intel_crtc_state *old_master_crtc_state, > const struct drm_connector_state *old_conn_state) > { > struct drm_i915_private *i915 = to_i915(encoder->base.dev); > @@ -3160,7 +3160,7 @@ static void intel_ddi_post_pll_disable(struct intel_atomic_state *state, > enum phy phy = intel_port_to_phy(i915, encoder->port); > bool is_tc_port = intel_phy_is_tc(i915, phy); > > - main_link_aux_power_domain_put(dig_port, old_crtc_state); > + main_link_aux_power_domain_put(dig_port, old_master_crtc_state); > > if (is_tc_port) > intel_tc_port_put_link(dig_port); > @@ -3205,7 +3205,7 @@ static void trans_port_sync_stop_link_train(struct intel_atomic_state *state, > > static void intel_enable_ddi_dp(struct intel_atomic_state *state, > struct intel_encoder *encoder, > - const struct intel_crtc_state *crtc_state, > + const struct intel_crtc_state *master_crtc_state, > const struct drm_connector_state *conn_state) > { > struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); > @@ -3214,15 +3214,15 @@ static void intel_enable_ddi_dp(struct intel_atomic_state *state, > enum port port = encoder->port; > > if (port == PORT_A && DISPLAY_VER(dev_priv) < 9) > - intel_dp_stop_link_train(intel_dp, crtc_state); > + intel_dp_stop_link_train(intel_dp, master_crtc_state); > > drm_connector_update_privacy_screen(conn_state); > - intel_edp_backlight_on(crtc_state, conn_state); > + intel_edp_backlight_on(master_crtc_state, conn_state); > > if (!dig_port->lspcon.active || intel_dp_has_hdmi_sink(&dig_port->dp)) > - intel_dp_set_infoframes(encoder, true, crtc_state, conn_state); > + intel_dp_set_infoframes(encoder, true, master_crtc_state, conn_state); > > - trans_port_sync_stop_link_train(state, encoder, crtc_state); > + trans_port_sync_stop_link_train(state, encoder, master_crtc_state); > } > > /* FIXME bad home for this function */ > @@ -3256,7 +3256,7 @@ gen9_chicken_trans_reg_by_port(struct drm_i915_private *dev_priv, > > static void intel_enable_ddi_hdmi(struct intel_atomic_state *state, > struct intel_encoder *encoder, > - const struct intel_crtc_state *crtc_state, > + const struct intel_crtc_state *master_crtc_state, > const struct drm_connector_state *conn_state) > { > struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); > @@ -3267,20 +3267,20 @@ static void intel_enable_ddi_hdmi(struct intel_atomic_state *state, > u32 buf_ctl; > > if (!intel_hdmi_handle_sink_scrambling(encoder, connector, > - crtc_state->hdmi_high_tmds_clock_ratio, > - crtc_state->hdmi_scrambling)) > + master_crtc_state->hdmi_high_tmds_clock_ratio, > + master_crtc_state->hdmi_scrambling)) > drm_dbg_kms(&dev_priv->drm, > "[CONNECTOR:%d:%s] Failed to configure sink scrambling/TMDS bit clock ratio\n", > connector->base.id, connector->name); > > if (has_buf_trans_select(dev_priv)) > - hsw_prepare_hdmi_ddi_buffers(encoder, crtc_state); > + hsw_prepare_hdmi_ddi_buffers(encoder, master_crtc_state); > > /* e. Enable D2D Link for C10/C20 Phy */ > if (DISPLAY_VER(dev_priv) >= 14) > mtl_ddi_enable_d2d(encoder); > > - encoder->set_signal_levels(encoder, crtc_state); > + encoder->set_signal_levels(encoder, master_crtc_state); > > /* Display WA #1143: skl,kbl,cfl */ > if (DISPLAY_VER(dev_priv) == 9 && !IS_BROXTON(dev_priv)) { > @@ -3317,7 +3317,7 @@ static void intel_enable_ddi_hdmi(struct intel_atomic_state *state, > intel_de_write(dev_priv, reg, val); > } > > - intel_ddi_power_up_lanes(encoder, crtc_state); > + intel_ddi_power_up_lanes(encoder, master_crtc_state); > > /* In HDMI/DVI mode, the port width, and swing/emphasis values > * are ignored so nothing special needs to be done besides > @@ -3327,12 +3327,12 @@ static void intel_enable_ddi_hdmi(struct intel_atomic_state *state, > * these are both 0 for HDMI. > * > * But MTL onwards HDMI2.1 is supported and in TMDS mode this > - * is filled with lane count, already set in the crtc_state. > + * is filled with lane count, already set in the master_crtc_state. > * The same is required to be filled in PORT_BUF_CTL for C10/20 Phy. > */ > buf_ctl = dig_port->saved_port_bits | DDI_BUF_CTL_ENABLE; > if (DISPLAY_VER(dev_priv) >= 14) { > - u8 lane_count = mtl_get_port_width(crtc_state->lane_count); > + u8 lane_count = mtl_get_port_width(master_crtc_state->lane_count); > u32 port_buf = 0; > > port_buf |= XELPDP_PORT_WIDTH(lane_count); > @@ -3359,35 +3359,35 @@ static void intel_enable_ddi_hdmi(struct intel_atomic_state *state, > > static void intel_enable_ddi(struct intel_atomic_state *state, > struct intel_encoder *encoder, > - const struct intel_crtc_state *crtc_state, > + const struct intel_crtc_state *master_crtc_state, > const struct drm_connector_state *conn_state) > { > - drm_WARN_ON(state->base.dev, crtc_state->has_pch_encoder); > + drm_WARN_ON(state->base.dev, master_crtc_state->has_pch_encoder); > > - if (!intel_crtc_is_bigjoiner_slave(crtc_state)) > - intel_ddi_enable_transcoder_func(encoder, crtc_state); > + if (!intel_crtc_is_bigjoiner_slave(master_crtc_state)) > + intel_ddi_enable_transcoder_func(encoder, master_crtc_state); > > /* Enable/Disable DP2.0 SDP split config before transcoder */ > - intel_audio_sdp_split_update(crtc_state); > + intel_audio_sdp_split_update(master_crtc_state); > > - intel_enable_transcoder(crtc_state); > + intel_enable_transcoder(master_crtc_state); > > - intel_ddi_wait_for_fec_status(encoder, crtc_state, true); > + intel_ddi_wait_for_fec_status(encoder, master_crtc_state, true); > > - intel_crtc_vblank_on(crtc_state); > + intel_crtc_vblank_on(master_crtc_state); > > - if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_HDMI)) > - intel_enable_ddi_hdmi(state, encoder, crtc_state, conn_state); > + if (intel_crtc_has_type(master_crtc_state, INTEL_OUTPUT_HDMI)) > + intel_enable_ddi_hdmi(state, encoder, master_crtc_state, conn_state); > else > - intel_enable_ddi_dp(state, encoder, crtc_state, conn_state); > + intel_enable_ddi_dp(state, encoder, master_crtc_state, conn_state); > > - intel_hdcp_enable(state, encoder, crtc_state, conn_state); > + intel_hdcp_enable(state, encoder, master_crtc_state, conn_state); > > } > > static void intel_disable_ddi_dp(struct intel_atomic_state *state, > struct intel_encoder *encoder, > - const struct intel_crtc_state *old_crtc_state, > + const struct intel_crtc_state *old_master_crtc_state, > const struct drm_connector_state *old_conn_state) > { > struct intel_dp *intel_dp = enc_to_intel_dp(encoder); > @@ -3396,19 +3396,19 @@ static void intel_disable_ddi_dp(struct intel_atomic_state *state, > > intel_dp->link_trained = false; > > - intel_psr_disable(intel_dp, old_crtc_state); > + intel_psr_disable(intel_dp, old_master_crtc_state); > intel_edp_backlight_off(old_conn_state); > /* Disable the decompression in DP Sink */ > intel_dp_sink_disable_decompression(state, > - connector, old_crtc_state); > + connector, old_master_crtc_state); > /* Disable Ignore_MSA bit in DP Sink */ > - intel_dp_sink_set_msa_timing_par_ignore_state(intel_dp, old_crtc_state, > + intel_dp_sink_set_msa_timing_par_ignore_state(intel_dp, old_master_crtc_state, > false); > } > > static void intel_disable_ddi_hdmi(struct intel_atomic_state *state, > struct intel_encoder *encoder, > - const struct intel_crtc_state *old_crtc_state, > + const struct intel_crtc_state *old_master_crtc_state, > const struct drm_connector_state *old_conn_state) > { > struct drm_i915_private *i915 = to_i915(encoder->base.dev); > @@ -3423,55 +3423,55 @@ static void intel_disable_ddi_hdmi(struct intel_atomic_state *state, > > static void intel_disable_ddi(struct intel_atomic_state *state, > struct intel_encoder *encoder, > - const struct intel_crtc_state *old_crtc_state, > + const struct intel_crtc_state *old_master_crtc_state, > const struct drm_connector_state *old_conn_state) > { > intel_tc_port_link_cancel_reset_work(enc_to_dig_port(encoder)); > > intel_hdcp_disable(to_intel_connector(old_conn_state->connector)); > > - if (intel_crtc_has_type(old_crtc_state, INTEL_OUTPUT_HDMI)) > - intel_disable_ddi_hdmi(state, encoder, old_crtc_state, > + if (intel_crtc_has_type(old_master_crtc_state, INTEL_OUTPUT_HDMI)) > + intel_disable_ddi_hdmi(state, encoder, old_master_crtc_state, > old_conn_state); > else > - intel_disable_ddi_dp(state, encoder, old_crtc_state, > + intel_disable_ddi_dp(state, encoder, old_master_crtc_state, > old_conn_state); > } > > static void intel_ddi_update_pipe_dp(struct intel_atomic_state *state, > struct intel_encoder *encoder, > - const struct intel_crtc_state *crtc_state, > + const struct intel_crtc_state *master_crtc_state, > const struct drm_connector_state *conn_state) > { > - intel_ddi_set_dp_msa(crtc_state, conn_state); > + intel_ddi_set_dp_msa(master_crtc_state, conn_state); > > - intel_dp_set_infoframes(encoder, true, crtc_state, conn_state); > + intel_dp_set_infoframes(encoder, true, master_crtc_state, conn_state); > > - intel_backlight_update(state, encoder, crtc_state, conn_state); > + intel_backlight_update(state, encoder, master_crtc_state, conn_state); > drm_connector_update_privacy_screen(conn_state); > } > > void intel_ddi_update_pipe(struct intel_atomic_state *state, > struct intel_encoder *encoder, > - const struct intel_crtc_state *crtc_state, > + const struct intel_crtc_state *master_crtc_state, > const struct drm_connector_state *conn_state) > { > > - if (!intel_crtc_has_type(crtc_state, INTEL_OUTPUT_HDMI) && > + if (!intel_crtc_has_type(master_crtc_state, INTEL_OUTPUT_HDMI) && > !intel_encoder_is_mst(encoder)) > - intel_ddi_update_pipe_dp(state, encoder, crtc_state, > + intel_ddi_update_pipe_dp(state, encoder, master_crtc_state, > conn_state); > > - intel_hdcp_update_pipe(state, encoder, crtc_state, conn_state); > + intel_hdcp_update_pipe(state, encoder, master_crtc_state, conn_state); > } > > void intel_ddi_update_active_dpll(struct intel_atomic_state *state, > struct intel_encoder *encoder, > - struct intel_crtc *crtc) > + struct intel_crtc *master_crtc) > { > struct drm_i915_private *i915 = to_i915(encoder->base.dev); > - struct intel_crtc_state *crtc_state = > - intel_atomic_get_new_crtc_state(state, crtc); > + struct intel_crtc_state *master_crtc_state = > + intel_atomic_get_new_crtc_state(state, master_crtc); > struct intel_crtc *slave_crtc; > enum phy phy = intel_port_to_phy(i915, encoder->port); > > @@ -3479,16 +3479,16 @@ void intel_ddi_update_active_dpll(struct intel_atomic_state *state, > if (DISPLAY_VER(i915) >= 14 || !intel_phy_is_tc(i915, phy)) > return; > > - intel_update_active_dpll(state, crtc, encoder); > + intel_update_active_dpll(state, master_crtc, encoder); > for_each_intel_crtc_in_pipe_mask(&i915->drm, slave_crtc, > - intel_crtc_bigjoiner_slave_pipes(crtc_state)) > + intel_crtc_bigjoiner_slave_pipes(master_crtc_state)) > intel_update_active_dpll(state, slave_crtc, encoder); > } > > static void > intel_ddi_pre_pll_enable(struct intel_atomic_state *state, > struct intel_encoder *encoder, > - const struct intel_crtc_state *crtc_state, > + const struct intel_crtc_state *master_crtc_state, > const struct drm_connector_state *conn_state) > { > struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); > @@ -3498,23 +3498,23 @@ intel_ddi_pre_pll_enable(struct intel_atomic_state *state, > > if (is_tc_port) { > struct intel_crtc *master_crtc = > - to_intel_crtc(crtc_state->uapi.crtc); > + to_intel_crtc(master_crtc_state->uapi.crtc); > > - intel_tc_port_get_link(dig_port, crtc_state->lane_count); > + intel_tc_port_get_link(dig_port, master_crtc_state->lane_count); > intel_ddi_update_active_dpll(state, encoder, master_crtc); > } > > - main_link_aux_power_domain_get(dig_port, crtc_state); > + main_link_aux_power_domain_get(dig_port, master_crtc_state); > > if (is_tc_port && !intel_tc_port_in_tbt_alt_mode(dig_port)) > /* > * Program the lane count for static/dynamic connections on > * Type-C ports. Skip this step for TBT. > */ > - intel_tc_port_set_fia_lane_count(dig_port, crtc_state->lane_count); > + intel_tc_port_set_fia_lane_count(dig_port, master_crtc_state->lane_count); > else if (IS_GEMINILAKE(dev_priv) || IS_BROXTON(dev_priv)) > bxt_ddi_phy_set_lane_optim_mask(encoder, > - crtc_state->lane_lat_optim_mask); > + master_crtc_state->lane_lat_optim_mask); > } > > static void adlp_tbt_to_dp_alt_switch_wa(struct intel_encoder *encoder) > diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c > index ab2f52d21bad..f29d38a8035e 100644 > --- a/drivers/gpu/drm/i915/display/intel_display.c > +++ b/drivers/gpu/drm/i915/display/intel_display.c > @@ -1634,88 +1634,88 @@ static void hsw_configure_cpu_transcoder(const struct intel_crtc_state *crtc_sta > } > > static void hsw_crtc_enable(struct intel_atomic_state *state, > - struct intel_crtc *crtc) > + struct intel_crtc *master_crtc) > { > - const struct intel_crtc_state *new_crtc_state = > - intel_atomic_get_new_crtc_state(state, crtc); > - struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); > - enum pipe pipe = crtc->pipe, hsw_workaround_pipe; > - enum transcoder cpu_transcoder = new_crtc_state->cpu_transcoder; > + const struct intel_crtc_state *new_master_crtc_state = > + intel_atomic_get_new_crtc_state(state, master_crtc); > + struct drm_i915_private *dev_priv = to_i915(master_crtc->base.dev); > + enum transcoder cpu_transcoder = new_master_crtc_state->cpu_transcoder; > + enum pipe hsw_workaround_pipe; > bool psl_clkgate_wa; > > - if (drm_WARN_ON(&dev_priv->drm, crtc->active)) > + if (drm_WARN_ON(&dev_priv->drm, master_crtc->active)) > return; > > - intel_dmc_enable_pipe(dev_priv, crtc->pipe); > + intel_dmc_enable_pipe(dev_priv, master_crtc->pipe); > > - if (!new_crtc_state->bigjoiner_pipes) { > - intel_encoders_pre_pll_enable(state, crtc); > + if (!new_master_crtc_state->bigjoiner_pipes) { > + intel_encoders_pre_pll_enable(state, master_crtc); > > - if (new_crtc_state->shared_dpll) > - intel_enable_shared_dpll(new_crtc_state); > + if (new_master_crtc_state->shared_dpll) > + intel_enable_shared_dpll(new_master_crtc_state); > > - intel_encoders_pre_enable(state, crtc); > + intel_encoders_pre_enable(state, master_crtc); > } else { > - icl_ddi_bigjoiner_pre_enable(state, new_crtc_state); > + icl_ddi_bigjoiner_pre_enable(state, new_master_crtc_state); > } > > - intel_dsc_enable(new_crtc_state); > + intel_dsc_enable(new_master_crtc_state); > > if (DISPLAY_VER(dev_priv) >= 13) > - intel_uncompressed_joiner_enable(new_crtc_state); > + intel_uncompressed_joiner_enable(new_master_crtc_state); > > - intel_set_pipe_src_size(new_crtc_state); > + intel_set_pipe_src_size(new_master_crtc_state); > if (DISPLAY_VER(dev_priv) >= 9 || IS_BROADWELL(dev_priv)) > - bdw_set_pipe_misc(new_crtc_state); > + bdw_set_pipe_misc(new_master_crtc_state); > > - if (!intel_crtc_is_bigjoiner_slave(new_crtc_state) && > + if (!intel_crtc_is_bigjoiner_slave(new_master_crtc_state) && > !transcoder_is_dsi(cpu_transcoder)) > - hsw_configure_cpu_transcoder(new_crtc_state); > + hsw_configure_cpu_transcoder(new_master_crtc_state); > > - crtc->active = true; > + master_crtc->active = true; > > /* Display WA #1180: WaDisableScalarClockGating: glk */ > psl_clkgate_wa = DISPLAY_VER(dev_priv) == 10 && > - new_crtc_state->pch_pfit.enabled; > + new_master_crtc_state->pch_pfit.enabled; > if (psl_clkgate_wa) > - glk_pipe_scaler_clock_gating_wa(dev_priv, pipe, true); > + glk_pipe_scaler_clock_gating_wa(dev_priv, master_crtc->pipe, true); > > if (DISPLAY_VER(dev_priv) >= 9) > - skl_pfit_enable(new_crtc_state); > + skl_pfit_enable(new_master_crtc_state); > else > - ilk_pfit_enable(new_crtc_state); > + ilk_pfit_enable(new_master_crtc_state); > > /* > * On ILK+ LUT must be loaded before the pipe is running but with > * clocks enabled > */ > - intel_color_load_luts(new_crtc_state); > - intel_color_commit_noarm(new_crtc_state); > - intel_color_commit_arm(new_crtc_state); > + intel_color_load_luts(new_master_crtc_state); > + intel_color_commit_noarm(new_master_crtc_state); > + intel_color_commit_arm(new_master_crtc_state); > /* update DSPCNTR to configure gamma/csc for pipe bottom color */ > if (DISPLAY_VER(dev_priv) < 9) > - intel_disable_primary_plane(new_crtc_state); > + intel_disable_primary_plane(new_master_crtc_state); > > - hsw_set_linetime_wm(new_crtc_state); > + hsw_set_linetime_wm(new_master_crtc_state); > > if (DISPLAY_VER(dev_priv) >= 11) > - icl_set_pipe_chicken(new_crtc_state); > + icl_set_pipe_chicken(new_master_crtc_state); > > - intel_initial_watermarks(state, crtc); > + intel_initial_watermarks(state, master_crtc); > > - if (intel_crtc_is_bigjoiner_slave(new_crtc_state)) > - intel_crtc_vblank_on(new_crtc_state); > + if (intel_crtc_is_bigjoiner_slave(new_master_crtc_state)) > + intel_crtc_vblank_on(new_master_crtc_state); > > - intel_encoders_enable(state, crtc); > + intel_encoders_enable(state, master_crtc); > > if (psl_clkgate_wa) { > - intel_crtc_wait_for_next_vblank(crtc); > - glk_pipe_scaler_clock_gating_wa(dev_priv, pipe, false); > + intel_crtc_wait_for_next_vblank(master_crtc); > + glk_pipe_scaler_clock_gating_wa(dev_priv, master_crtc->pipe, false); > } > > /* If we change the relative order between pipe/planes enabling, we need > * to change the workaround. */ > - hsw_workaround_pipe = new_crtc_state->hsw_workaround_pipe; > + hsw_workaround_pipe = new_master_crtc_state->hsw_workaround_pipe; > if (IS_HASWELL(dev_priv) && hsw_workaround_pipe != INVALID_PIPE) { > struct intel_crtc *wa_crtc; > > @@ -1781,32 +1781,32 @@ static void ilk_crtc_disable(struct intel_atomic_state *state, > } > > static void hsw_crtc_disable(struct intel_atomic_state *state, > - struct intel_crtc *crtc) > + struct intel_crtc *master_crtc) > { > - const struct intel_crtc_state *old_crtc_state = > - intel_atomic_get_old_crtc_state(state, crtc); > - struct drm_i915_private *i915 = to_i915(crtc->base.dev); > + const struct intel_crtc_state *old_master_crtc_state = > + intel_atomic_get_old_crtc_state(state, master_crtc); > + struct drm_i915_private *i915 = to_i915(master_crtc->base.dev); > > /* > * FIXME collapse everything to one hook. > * Need care with mst->ddi interactions. > */ > - if (!intel_crtc_is_bigjoiner_slave(old_crtc_state)) { > - intel_encoders_disable(state, crtc); > - intel_encoders_post_disable(state, crtc); > + if (!intel_crtc_is_bigjoiner_slave(old_master_crtc_state)) { > + intel_encoders_disable(state, master_crtc); > + intel_encoders_post_disable(state, master_crtc); > } > > - intel_disable_shared_dpll(old_crtc_state); > + intel_disable_shared_dpll(old_master_crtc_state); > > - if (!intel_crtc_is_bigjoiner_slave(old_crtc_state)) { > + if (!intel_crtc_is_bigjoiner_slave(old_master_crtc_state)) { > struct intel_crtc *slave_crtc; > > - intel_encoders_post_pll_disable(state, crtc); > + intel_encoders_post_pll_disable(state, master_crtc); > > - intel_dmc_disable_pipe(i915, crtc->pipe); > + intel_dmc_disable_pipe(i915, master_crtc->pipe); > > for_each_intel_crtc_in_pipe_mask(&i915->drm, slave_crtc, > - intel_crtc_bigjoiner_slave_pipes(old_crtc_state)) > + intel_crtc_bigjoiner_slave_pipes(old_master_crtc_state)) > intel_dmc_disable_pipe(i915, slave_crtc->pipe); > } > } > diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c > index db1254b036f1..e4e71e4ae0e1 100644 > --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c > +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c > @@ -917,7 +917,7 @@ static void wait_for_act_sent(struct intel_encoder *encoder, > > static void intel_mst_disable_dp(struct intel_atomic_state *state, > struct intel_encoder *encoder, > - const struct intel_crtc_state *old_crtc_state, > + const struct intel_crtc_state *old_master_crtc_state, > const struct drm_connector_state *old_conn_state) > { > struct intel_dp_mst_encoder *intel_mst = enc_to_mst(encoder); > @@ -932,12 +932,12 @@ static void intel_mst_disable_dp(struct intel_atomic_state *state, > > intel_hdcp_disable(intel_mst->connector); > > - intel_dp_sink_disable_decompression(state, connector, old_crtc_state); > + intel_dp_sink_disable_decompression(state, connector, old_master_crtc_state); > } > > static void intel_mst_post_disable_dp(struct intel_atomic_state *state, > struct intel_encoder *encoder, > - const struct intel_crtc_state *old_crtc_state, > + const struct intel_crtc_state *old_master_crtc_state, > const struct drm_connector_state *old_conn_state) > { > struct intel_dp_mst_encoder *intel_mst = enc_to_mst(encoder); > @@ -960,32 +960,32 @@ static void intel_mst_post_disable_dp(struct intel_atomic_state *state, > last_mst_stream = intel_dp->active_mst_links == 0; > drm_WARN_ON(&dev_priv->drm, > DISPLAY_VER(dev_priv) >= 12 && last_mst_stream && > - !intel_dp_mst_is_master_trans(old_crtc_state)); > + !intel_dp_mst_is_master_trans(old_master_crtc_state)); > > - intel_crtc_vblank_off(old_crtc_state); > + intel_crtc_vblank_off(old_master_crtc_state); > > - intel_disable_transcoder(old_crtc_state); > + intel_disable_transcoder(old_master_crtc_state); > > drm_dp_remove_payload_part1(&intel_dp->mst_mgr, new_mst_state, new_payload); > > - clear_act_sent(encoder, old_crtc_state); > + clear_act_sent(encoder, old_master_crtc_state); > > - intel_de_rmw(dev_priv, TRANS_DDI_FUNC_CTL(old_crtc_state->cpu_transcoder), > + intel_de_rmw(dev_priv, TRANS_DDI_FUNC_CTL(old_master_crtc_state->cpu_transcoder), > TRANS_DDI_DP_VC_PAYLOAD_ALLOC, 0); > > - wait_for_act_sent(encoder, old_crtc_state); > + wait_for_act_sent(encoder, old_master_crtc_state); > > drm_dp_remove_payload_part2(&intel_dp->mst_mgr, new_mst_state, > old_payload, new_payload); > > - intel_ddi_disable_transcoder_func(old_crtc_state); > + intel_ddi_disable_transcoder_func(old_master_crtc_state); > > - intel_dsc_disable(old_crtc_state); > + intel_dsc_disable(old_master_crtc_state); > > if (DISPLAY_VER(dev_priv) >= 9) > - skl_scaler_disable(old_crtc_state); > + skl_scaler_disable(old_master_crtc_state); > else > - ilk_pfit_disable(old_crtc_state); > + ilk_pfit_disable(old_master_crtc_state); > > /* > * Power down mst path before disabling the port, otherwise we end > @@ -999,7 +999,7 @@ static void intel_mst_post_disable_dp(struct intel_atomic_state *state, > * the transcoder clock select is set to none. > */ > intel_dp_set_infoframes(&dig_port->base, false, > - old_crtc_state, NULL); > + old_master_crtc_state, NULL); > /* > * From TGL spec: "If multi-stream slave transcoder: Configure > * Transcoder Clock Select to direct no clock to the transcoder" > @@ -1008,13 +1008,12 @@ static void intel_mst_post_disable_dp(struct intel_atomic_state *state, > * no clock to the transcoder" > */ > if (DISPLAY_VER(dev_priv) < 12 || !last_mst_stream) > - intel_ddi_disable_transcoder_clock(old_crtc_state); > - > + intel_ddi_disable_transcoder_clock(old_master_crtc_state); > > intel_mst->connector = NULL; > if (last_mst_stream) > dig_port->base.post_disable(state, &dig_port->base, > - old_crtc_state, NULL); > + old_master_crtc_state, NULL); > > drm_dbg_kms(&dev_priv->drm, "active links %d\n", > intel_dp->active_mst_links); > @@ -1022,7 +1021,7 @@ static void intel_mst_post_disable_dp(struct intel_atomic_state *state, > > static void intel_mst_post_pll_disable_dp(struct intel_atomic_state *state, > struct intel_encoder *encoder, > - const struct intel_crtc_state *old_crtc_state, > + const struct intel_crtc_state *old_master_crtc_state, > const struct drm_connector_state *old_conn_state) > { > struct intel_dp_mst_encoder *intel_mst = enc_to_mst(encoder); > @@ -1031,33 +1030,33 @@ static void intel_mst_post_pll_disable_dp(struct intel_atomic_state *state, > > if (intel_dp->active_mst_links == 0 && > dig_port->base.post_pll_disable) > - dig_port->base.post_pll_disable(state, encoder, old_crtc_state, old_conn_state); > + dig_port->base.post_pll_disable(state, encoder, old_master_crtc_state, old_conn_state); > } > > static void intel_mst_pre_pll_enable_dp(struct intel_atomic_state *state, > struct intel_encoder *encoder, > - const struct intel_crtc_state *pipe_config, > + const struct intel_crtc_state *master_crtc_state, > const struct drm_connector_state *conn_state) > { > + struct intel_crtc *master_crtc = to_intel_crtc(master_crtc_state->uapi.crtc); > struct intel_dp_mst_encoder *intel_mst = enc_to_mst(encoder); > struct intel_digital_port *dig_port = intel_mst->primary; > struct intel_dp *intel_dp = &dig_port->dp; > > if (intel_dp->active_mst_links == 0) > dig_port->base.pre_pll_enable(state, &dig_port->base, > - pipe_config, NULL); > + master_crtc_state, NULL); > else > /* > * The port PLL state needs to get updated for secondary > * streams as for the primary stream. > */ > - intel_ddi_update_active_dpll(state, &dig_port->base, > - to_intel_crtc(pipe_config->uapi.crtc)); > + intel_ddi_update_active_dpll(state, &dig_port->base, master_crtc); > } > > static void intel_mst_pre_enable_dp(struct intel_atomic_state *state, > struct intel_encoder *encoder, > - const struct intel_crtc_state *pipe_config, > + const struct intel_crtc_state *master_crtc_state, > const struct drm_connector_state *conn_state) > { > struct intel_dp_mst_encoder *intel_mst = enc_to_mst(encoder); > @@ -1079,7 +1078,7 @@ static void intel_mst_pre_enable_dp(struct intel_atomic_state *state, > first_mst_stream = intel_dp->active_mst_links == 0; > drm_WARN_ON(&dev_priv->drm, > DISPLAY_VER(dev_priv) >= 12 && first_mst_stream && > - !intel_dp_mst_is_master_trans(pipe_config)); > + !intel_dp_mst_is_master_trans(master_crtc_state)); > > drm_dbg_kms(&dev_priv->drm, "active links %d\n", > intel_dp->active_mst_links); > @@ -1089,11 +1088,11 @@ static void intel_mst_pre_enable_dp(struct intel_atomic_state *state, > > drm_dp_send_power_updown_phy(&intel_dp->mst_mgr, connector->port, true); > > - intel_dp_sink_enable_decompression(state, connector, pipe_config); > + intel_dp_sink_enable_decompression(state, connector, master_crtc_state); > > if (first_mst_stream) > dig_port->base.pre_enable(state, &dig_port->base, > - pipe_config, NULL); > + master_crtc_state, NULL); > > intel_dp->active_mst_links++; > > @@ -1111,15 +1110,15 @@ static void intel_mst_pre_enable_dp(struct intel_atomic_state *state, > * here for the following ones. > */ > if (DISPLAY_VER(dev_priv) < 12 || !first_mst_stream) > - intel_ddi_enable_transcoder_clock(encoder, pipe_config); > + intel_ddi_enable_transcoder_clock(encoder, master_crtc_state); > > - intel_dsc_dp_pps_write(&dig_port->base, pipe_config); > - intel_ddi_set_dp_msa(pipe_config, conn_state); > + intel_dsc_dp_pps_write(&dig_port->base, master_crtc_state); > + intel_ddi_set_dp_msa(master_crtc_state, conn_state); > } > > static void intel_mst_enable_dp(struct intel_atomic_state *state, > struct intel_encoder *encoder, > - const struct intel_crtc_state *pipe_config, > + const struct intel_crtc_state *master_crtc_state, > const struct drm_connector_state *conn_state) > { > struct intel_dp_mst_encoder *intel_mst = enc_to_mst(encoder); > @@ -1129,25 +1128,25 @@ static void intel_mst_enable_dp(struct intel_atomic_state *state, > struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); > struct drm_dp_mst_topology_state *mst_state = > drm_atomic_get_new_mst_topology_state(&state->base, &intel_dp->mst_mgr); > - enum transcoder trans = pipe_config->cpu_transcoder; > + enum transcoder trans = master_crtc_state->cpu_transcoder; > bool first_mst_stream = intel_dp->active_mst_links == 1; > > - drm_WARN_ON(&dev_priv->drm, pipe_config->has_pch_encoder); > + drm_WARN_ON(&dev_priv->drm, master_crtc_state->has_pch_encoder); > > - if (intel_dp_is_uhbr(pipe_config)) { > + if (intel_dp_is_uhbr(master_crtc_state)) { > const struct drm_display_mode *adjusted_mode = > - &pipe_config->hw.adjusted_mode; > + &master_crtc_state->hw.adjusted_mode; > u64 crtc_clock_hz = KHz(adjusted_mode->crtc_clock); > > - intel_de_write(dev_priv, TRANS_DP2_VFREQHIGH(pipe_config->cpu_transcoder), > + intel_de_write(dev_priv, TRANS_DP2_VFREQHIGH(master_crtc_state->cpu_transcoder), > TRANS_DP2_VFREQ_PIXEL_CLOCK(crtc_clock_hz >> 24)); > - intel_de_write(dev_priv, TRANS_DP2_VFREQLOW(pipe_config->cpu_transcoder), > + intel_de_write(dev_priv, TRANS_DP2_VFREQLOW(master_crtc_state->cpu_transcoder), > TRANS_DP2_VFREQ_PIXEL_CLOCK(crtc_clock_hz & 0xffffff)); > } > > - intel_ddi_enable_transcoder_func(encoder, pipe_config); > + intel_ddi_enable_transcoder_func(encoder, master_crtc_state); > > - clear_act_sent(encoder, pipe_config); > + clear_act_sent(encoder, master_crtc_state); > > intel_de_rmw(dev_priv, TRANS_DDI_FUNC_CTL(trans), 0, > TRANS_DDI_DP_VC_PAYLOAD_ALLOC); > @@ -1155,10 +1154,10 @@ static void intel_mst_enable_dp(struct intel_atomic_state *state, > drm_dbg_kms(&dev_priv->drm, "active links %d\n", > intel_dp->active_mst_links); > > - wait_for_act_sent(encoder, pipe_config); > + wait_for_act_sent(encoder, master_crtc_state); > > if (first_mst_stream) > - intel_ddi_wait_for_fec_status(encoder, pipe_config, true); > + intel_ddi_wait_for_fec_status(encoder, master_crtc_state, true); > > drm_dp_add_payload_part2(&intel_dp->mst_mgr, &state->base, > drm_atomic_get_mst_payload_state(mst_state, connector->port)); > @@ -1166,15 +1165,15 @@ static void intel_mst_enable_dp(struct intel_atomic_state *state, > if (DISPLAY_VER(dev_priv) >= 12) > intel_de_rmw(dev_priv, hsw_chicken_trans_reg(dev_priv, trans), > FECSTALL_DIS_DPTSTREAM_DPTTG, > - pipe_config->fec_enable ? FECSTALL_DIS_DPTSTREAM_DPTTG : 0); > + master_crtc_state->fec_enable ? FECSTALL_DIS_DPTSTREAM_DPTTG : 0); > > - intel_audio_sdp_split_update(pipe_config); > + intel_audio_sdp_split_update(master_crtc_state); > > - intel_enable_transcoder(pipe_config); > + intel_enable_transcoder(master_crtc_state); > > - intel_crtc_vblank_on(pipe_config); > + intel_crtc_vblank_on(master_crtc_state); > > - intel_hdcp_enable(state, encoder, pipe_config, conn_state); > + intel_hdcp_enable(state, encoder, master_crtc_state, conn_state); > } > > static bool intel_dp_mst_enc_get_hw_state(struct intel_encoder *encoder, > -- > 2.43.0 >
On Tue, Mar 05, 2024 at 10:41:49AM +0200, Lisovskiy, Stanislav wrote: > On Fri, Mar 01, 2024 at 04:35:53PM +0200, Ville Syrjala wrote: > > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > > > In preparation for doing a more sensible pipe vs. transcoder > > handling for bigjoiner let's rename the crtc/crtc_state in the > > top level crtc_enable/disable and the DDI encoder hooks to > > include "master" in the name. This way they won't collide with > > the per-pipe stuff. > > > > Note that at this point this is (at least partially) telling > > lies as we still run through some of these for slave pipes as > > well. But I wanted to get the huge rename out of the way so > > it won't clutter the functional patches so much. > > > > TODO: or perhaps use some other names for the per-pipe stuff instead? > > > > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > > I will then review now the patches which you could merge before the bigjoiner > stuff could be finished. I just sent a separate series with the disable_pipes bitmask stuff. > Checked this patch I guess, you were also talking that this renaming might > be not the best idea. > I also wonder whether should we really emphasize things like "master"/"slave" > in function names. I thought that one idea in our refactoring was to unify > joined pipes handling so that there are no(or at least almost no) explicit code > paths/function names for masters/slaves. There are no master vs. slave functions. The split is going to be transcoder/port vs. pipe.
On Tue, Mar 05, 2024 at 10:50:01AM +0200, Ville Syrjälä wrote: > On Tue, Mar 05, 2024 at 10:41:49AM +0200, Lisovskiy, Stanislav wrote: > > On Fri, Mar 01, 2024 at 04:35:53PM +0200, Ville Syrjala wrote: > > > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > > > > > In preparation for doing a more sensible pipe vs. transcoder > > > handling for bigjoiner let's rename the crtc/crtc_state in the > > > top level crtc_enable/disable and the DDI encoder hooks to > > > include "master" in the name. This way they won't collide with > > > the per-pipe stuff. > > > > > > Note that at this point this is (at least partially) telling > > > lies as we still run through some of these for slave pipes as > > > well. But I wanted to get the huge rename out of the way so > > > it won't clutter the functional patches so much. > > > > > > TODO: or perhaps use some other names for the per-pipe stuff instead? > > > > > > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > > > > I will then review now the patches which you could merge before the bigjoiner > > stuff could be finished. > > I just sent a separate series with the disable_pipes bitmask > stuff. I already reviewed all the patches, including that one, if there were no changes, I guess you can apply that r-b there as well. > > > Checked this patch I guess, you were also talking that this renaming might > > be not the best idea. > > I also wonder whether should we really emphasize things like "master"/"slave" > > in function names. I thought that one idea in our refactoring was to unify > > joined pipes handling so that there are no(or at least almost no) explicit code > > paths/function names for masters/slaves. > > There are no master vs. slave functions. The split is going to be > transcoder/port vs. pipe. In practice thats what you want to achieve, the functions which also include encoder programming and/or handling joined pipes you wanted to add master in the name. I think we should try to mention master/slave explicitly as less as possible. Stan > > -- > Ville Syrjälä > Intel
On Tue, Mar 05, 2024 at 11:08:56AM +0200, Lisovskiy, Stanislav wrote: > On Tue, Mar 05, 2024 at 10:50:01AM +0200, Ville Syrjälä wrote: > > On Tue, Mar 05, 2024 at 10:41:49AM +0200, Lisovskiy, Stanislav wrote: > > > On Fri, Mar 01, 2024 at 04:35:53PM +0200, Ville Syrjala wrote: > > > > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > > > > > > > In preparation for doing a more sensible pipe vs. transcoder > > > > handling for bigjoiner let's rename the crtc/crtc_state in the > > > > top level crtc_enable/disable and the DDI encoder hooks to > > > > include "master" in the name. This way they won't collide with > > > > the per-pipe stuff. > > > > > > > > Note that at this point this is (at least partially) telling > > > > lies as we still run through some of these for slave pipes as > > > > well. But I wanted to get the huge rename out of the way so > > > > it won't clutter the functional patches so much. > > > > > > > > TODO: or perhaps use some other names for the per-pipe stuff instead? > > > > > > > > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > > > > > > I will then review now the patches which you could merge before the bigjoiner > > > stuff could be finished. > > > > I just sent a separate series with the disable_pipes bitmask > > stuff. > > I already reviewed all the patches, including that one, if there were > no changes, I guess you can apply that r-b there as well. Sure. Thanks. > > > > > > Checked this patch I guess, you were also talking that this renaming might > > > be not the best idea. > > > I also wonder whether should we really emphasize things like "master"/"slave" > > > in function names. I thought that one idea in our refactoring was to unify > > > joined pipes handling so that there are no(or at least almost no) explicit code > > > paths/function names for masters/slaves. > > > > There are no master vs. slave functions. The split is going to be > > transcoder/port vs. pipe. > > In practice thats what you want to achieve, the functions which also include encoder > programming and/or handling joined pipes you wanted to add master in the name. I wanted clarity which crtc state is for which purpose. But I think we achieve that by naming the per-pipe variables a bit differently instead (eg. pipe_crtc + pipe_crtc_state).
On Tue, 05 Mar 2024, Ville Syrjälä <ville.syrjala@linux.intel.com> wrote: > On Tue, Mar 05, 2024 at 10:41:49AM +0200, Lisovskiy, Stanislav wrote: >> I also wonder whether should we really emphasize things like "master"/"slave" >> in function names. I thought that one idea in our refactoring was to unify >> joined pipes handling so that there are no(or at least almost no) explicit code >> paths/function names for masters/slaves. > > There are no master vs. slave functions. The split is going to be > transcoder/port vs. pipe. Besides, for modern platforms the spec has already been changed to use primary/secondary terminology. When renaming or refactoring stuff, please switch to them instead of sticking with master/slave. BR, Jani.
On Tue, Mar 05, 2024 at 04:07:45PM +0200, Jani Nikula wrote: > On Tue, 05 Mar 2024, Ville Syrjälä <ville.syrjala@linux.intel.com> wrote: > > On Tue, Mar 05, 2024 at 10:41:49AM +0200, Lisovskiy, Stanislav wrote: > >> I also wonder whether should we really emphasize things like "master"/"slave" > >> in function names. I thought that one idea in our refactoring was to unify > >> joined pipes handling so that there are no(or at least almost no) explicit code > >> paths/function names for masters/slaves. > > > > There are no master vs. slave functions. The split is going to be > > transcoder/port vs. pipe. > > Besides, for modern platforms the spec has already been changed to use > primary/secondary terminology. When renaming or refactoring stuff, > please switch to them instead of sticking with master/slave. If the spec got updated then we should probably just do a full rename pass over the whole codebase instead of confusing things more by mixing up the terminology. Also we should probably s/bigjoiner/joiner/ to make it clear that all of it also applies to uncompressed joiner as well.
On Tue, 05 Mar 2024, Ville Syrjälä <ville.syrjala@linux.intel.com> wrote: > If the spec got updated then we should probably just do a full rename > pass over the whole codebase instead of confusing things more by > mixing up the terminology. For example: Bspec 54142 for display version 12+ has some mixed old/new terminology. Bspec 68847 for xe2lpd+ only has new terminology. > Also we should probably s/bigjoiner/joiner/ to make it clear that > all of it also applies to uncompressed joiner as well. Ack. BR, Jani.
diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c index c587a8efeafc..6287629f9e77 100644 --- a/drivers/gpu/drm/i915/display/intel_ddi.c +++ b/drivers/gpu/drm/i915/display/intel_ddi.c @@ -2490,21 +2490,21 @@ static void mtl_port_buf_ctl_io_selection(struct intel_encoder *encoder) static void mtl_ddi_pre_enable_dp(struct intel_atomic_state *state, struct intel_encoder *encoder, - const struct intel_crtc_state *crtc_state, + const struct intel_crtc_state *master_crtc_state, const struct drm_connector_state *conn_state) { struct intel_dp *intel_dp = enc_to_intel_dp(encoder); - bool is_mst = intel_crtc_has_type(crtc_state, INTEL_OUTPUT_DP_MST); + bool is_mst = intel_crtc_has_type(master_crtc_state, INTEL_OUTPUT_DP_MST); intel_dp_set_link_params(intel_dp, - crtc_state->port_clock, - crtc_state->lane_count); + master_crtc_state->port_clock, + master_crtc_state->lane_count); /* * We only configure what the register value will be here. Actual * enabling happens during link training farther down. */ - intel_ddi_init_dp_buf_reg(encoder, crtc_state); + intel_ddi_init_dp_buf_reg(encoder, master_crtc_state); /* * 1. Enable Power Wells @@ -2522,48 +2522,48 @@ static void mtl_ddi_pre_enable_dp(struct intel_atomic_state *state, intel_pps_on(intel_dp); /* 5. Enable the port PLL */ - intel_ddi_enable_clock(encoder, crtc_state); + intel_ddi_enable_clock(encoder, master_crtc_state); /* * 6.a Configure Transcoder Clock Select to direct the Port clock to the * Transcoder. */ - intel_ddi_enable_transcoder_clock(encoder, crtc_state); + intel_ddi_enable_transcoder_clock(encoder, master_crtc_state); /* * 6.b If DP v2.0/128b mode - Configure TRANS_DP2_CTL register settings. */ - intel_ddi_config_transcoder_dp2(encoder, crtc_state); + intel_ddi_config_transcoder_dp2(encoder, master_crtc_state); /* * 6.c Configure TRANS_DDI_FUNC_CTL DDI Select, DDI Mode Select & MST * Transport Select */ - intel_ddi_config_transcoder_func(encoder, crtc_state); + intel_ddi_config_transcoder_func(encoder, master_crtc_state); /* * 6.e Program CoG/MSO configuration bits in DSS_CTL1 if selected. */ - intel_ddi_mso_configure(crtc_state); + intel_ddi_mso_configure(master_crtc_state); if (!is_mst) intel_dp_set_power(intel_dp, DP_SET_POWER_D0); - intel_dp_configure_protocol_converter(intel_dp, crtc_state); + intel_dp_configure_protocol_converter(intel_dp, master_crtc_state); if (!is_mst) intel_dp_sink_enable_decompression(state, to_intel_connector(conn_state->connector), - crtc_state); + master_crtc_state); /* * DDI FEC: "anticipates enabling FEC encoding sets the FEC_READY bit * in the FEC_CONFIGURATION register to 1 before initiating link * training */ - intel_dp_sink_set_fec_ready(intel_dp, crtc_state, true); + intel_dp_sink_set_fec_ready(intel_dp, master_crtc_state, true); intel_dp_check_frl_training(intel_dp); - intel_dp_pcon_dsc_configure(intel_dp, crtc_state); + intel_dp_pcon_dsc_configure(intel_dp, master_crtc_state); /* * 6. The rest of the below are substeps under the bspec's "Enable and @@ -2584,38 +2584,38 @@ static void mtl_ddi_pre_enable_dp(struct intel_atomic_state *state, * Pattern, wait for 5 idle patterns (DP_TP_STATUS Min_Idles_Sent) * (timeout after 800 us) */ - intel_dp_start_link_train(intel_dp, crtc_state); + intel_dp_start_link_train(intel_dp, master_crtc_state); /* 6.n Set DP_TP_CTL link training to Normal */ - if (!is_trans_port_sync_mode(crtc_state)) - intel_dp_stop_link_train(intel_dp, crtc_state); + if (!is_trans_port_sync_mode(master_crtc_state)) + intel_dp_stop_link_train(intel_dp, master_crtc_state); /* 6.o Configure and enable FEC if needed */ - intel_ddi_enable_fec(encoder, crtc_state); + intel_ddi_enable_fec(encoder, master_crtc_state); if (!is_mst) - intel_dsc_dp_pps_write(encoder, crtc_state); + intel_dsc_dp_pps_write(encoder, master_crtc_state); } static void tgl_ddi_pre_enable_dp(struct intel_atomic_state *state, struct intel_encoder *encoder, - const struct intel_crtc_state *crtc_state, + const struct intel_crtc_state *master_crtc_state, const struct drm_connector_state *conn_state) { struct intel_dp *intel_dp = enc_to_intel_dp(encoder); struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); struct intel_digital_port *dig_port = enc_to_dig_port(encoder); - bool is_mst = intel_crtc_has_type(crtc_state, INTEL_OUTPUT_DP_MST); + bool is_mst = intel_crtc_has_type(master_crtc_state, INTEL_OUTPUT_DP_MST); intel_dp_set_link_params(intel_dp, - crtc_state->port_clock, - crtc_state->lane_count); + master_crtc_state->port_clock, + master_crtc_state->lane_count); /* * We only configure what the register value will be here. Actual * enabling happens during link training farther down. */ - intel_ddi_init_dp_buf_reg(encoder, crtc_state); + intel_ddi_init_dp_buf_reg(encoder, master_crtc_state); /* * 1. Enable Power Wells @@ -2642,7 +2642,7 @@ static void tgl_ddi_pre_enable_dp(struct intel_atomic_state *state, * hsw_crtc_enable()->intel_enable_shared_dpll(). We need only * configure the PLL to port mapping here. */ - intel_ddi_enable_clock(encoder, crtc_state); + intel_ddi_enable_clock(encoder, master_crtc_state); /* 5. If IO power is controlled through PWR_WELL_CTL, Enable IO Power */ if (!intel_tc_port_in_tbt_alt_mode(dig_port)) { @@ -2652,7 +2652,7 @@ static void tgl_ddi_pre_enable_dp(struct intel_atomic_state *state, } /* 6. Program DP_MODE */ - icl_program_mg_dp_mode(dig_port, crtc_state); + icl_program_mg_dp_mode(dig_port, master_crtc_state); /* * 7. The rest of the below are substeps under the bspec's "Enable and @@ -2668,16 +2668,16 @@ static void tgl_ddi_pre_enable_dp(struct intel_atomic_state *state, * 7.a Configure Transcoder Clock Select to direct the Port clock to the * Transcoder. */ - intel_ddi_enable_transcoder_clock(encoder, crtc_state); + intel_ddi_enable_transcoder_clock(encoder, master_crtc_state); if (HAS_DP20(dev_priv)) - intel_ddi_config_transcoder_dp2(encoder, crtc_state); + intel_ddi_config_transcoder_dp2(encoder, master_crtc_state); /* * 7.b Configure TRANS_DDI_FUNC_CTL DDI Select, DDI Mode Select & MST * Transport Select */ - intel_ddi_config_transcoder_func(encoder, crtc_state); + intel_ddi_config_transcoder_func(encoder, master_crtc_state); /* * 7.c Configure & enable DP_TP_CTL with link training pattern 1 @@ -2688,36 +2688,36 @@ static void tgl_ddi_pre_enable_dp(struct intel_atomic_state *state, */ /* 7.e Configure voltage swing and related IO settings */ - encoder->set_signal_levels(encoder, crtc_state); + encoder->set_signal_levels(encoder, master_crtc_state); /* * 7.f Combo PHY: Configure PORT_CL_DW10 Static Power Down to power up * the used lanes of the DDI. */ - intel_ddi_power_up_lanes(encoder, crtc_state); + intel_ddi_power_up_lanes(encoder, master_crtc_state); /* * 7.g Program CoG/MSO configuration bits in DSS_CTL1 if selected. */ - intel_ddi_mso_configure(crtc_state); + intel_ddi_mso_configure(master_crtc_state); if (!is_mst) intel_dp_set_power(intel_dp, DP_SET_POWER_D0); - intel_dp_configure_protocol_converter(intel_dp, crtc_state); + intel_dp_configure_protocol_converter(intel_dp, master_crtc_state); if (!is_mst) intel_dp_sink_enable_decompression(state, to_intel_connector(conn_state->connector), - crtc_state); + master_crtc_state); /* * DDI FEC: "anticipates enabling FEC encoding sets the FEC_READY bit * in the FEC_CONFIGURATION register to 1 before initiating link * training */ - intel_dp_sink_set_fec_ready(intel_dp, crtc_state, true); + intel_dp_sink_set_fec_ready(intel_dp, master_crtc_state, true); intel_dp_check_frl_training(intel_dp); - intel_dp_pcon_dsc_configure(intel_dp, crtc_state); + intel_dp_pcon_dsc_configure(intel_dp, master_crtc_state); /* * 7.i Follow DisplayPort specification training sequence (see notes for @@ -2726,29 +2726,29 @@ static void tgl_ddi_pre_enable_dp(struct intel_atomic_state *state, * Pattern, wait for 5 idle patterns (DP_TP_STATUS Min_Idles_Sent) * (timeout after 800 us) */ - intel_dp_start_link_train(intel_dp, crtc_state); + intel_dp_start_link_train(intel_dp, master_crtc_state); /* 7.k Set DP_TP_CTL link training to Normal */ - if (!is_trans_port_sync_mode(crtc_state)) - intel_dp_stop_link_train(intel_dp, crtc_state); + if (!is_trans_port_sync_mode(master_crtc_state)) + intel_dp_stop_link_train(intel_dp, master_crtc_state); /* 7.l Configure and enable FEC if needed */ - intel_ddi_enable_fec(encoder, crtc_state); + intel_ddi_enable_fec(encoder, master_crtc_state); if (!is_mst) - intel_dsc_dp_pps_write(encoder, crtc_state); + intel_dsc_dp_pps_write(encoder, master_crtc_state); } static void hsw_ddi_pre_enable_dp(struct intel_atomic_state *state, struct intel_encoder *encoder, - const struct intel_crtc_state *crtc_state, + const struct intel_crtc_state *master_crtc_state, const struct drm_connector_state *conn_state) { struct intel_dp *intel_dp = enc_to_intel_dp(encoder); struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); enum port port = encoder->port; struct intel_digital_port *dig_port = enc_to_dig_port(encoder); - bool is_mst = intel_crtc_has_type(crtc_state, INTEL_OUTPUT_DP_MST); + bool is_mst = intel_crtc_has_type(master_crtc_state, INTEL_OUTPUT_DP_MST); if (DISPLAY_VER(dev_priv) < 11) drm_WARN_ON(&dev_priv->drm, @@ -2757,18 +2757,18 @@ static void hsw_ddi_pre_enable_dp(struct intel_atomic_state *state, drm_WARN_ON(&dev_priv->drm, is_mst && port == PORT_A); intel_dp_set_link_params(intel_dp, - crtc_state->port_clock, - crtc_state->lane_count); + master_crtc_state->port_clock, + master_crtc_state->lane_count); /* * We only configure what the register value will be here. Actual * enabling happens during link training farther down. */ - intel_ddi_init_dp_buf_reg(encoder, crtc_state); + intel_ddi_init_dp_buf_reg(encoder, master_crtc_state); intel_pps_on(intel_dp); - intel_ddi_enable_clock(encoder, crtc_state); + intel_ddi_enable_clock(encoder, master_crtc_state); if (!intel_tc_port_in_tbt_alt_mode(dig_port)) { drm_WARN_ON(&dev_priv->drm, dig_port->ddi_io_wakeref); @@ -2776,39 +2776,39 @@ static void hsw_ddi_pre_enable_dp(struct intel_atomic_state *state, dig_port->ddi_io_power_domain); } - icl_program_mg_dp_mode(dig_port, crtc_state); + icl_program_mg_dp_mode(dig_port, master_crtc_state); if (has_buf_trans_select(dev_priv)) - hsw_prepare_dp_ddi_buffers(encoder, crtc_state); + hsw_prepare_dp_ddi_buffers(encoder, master_crtc_state); - encoder->set_signal_levels(encoder, crtc_state); + encoder->set_signal_levels(encoder, master_crtc_state); - intel_ddi_power_up_lanes(encoder, crtc_state); + intel_ddi_power_up_lanes(encoder, master_crtc_state); if (!is_mst) intel_dp_set_power(intel_dp, DP_SET_POWER_D0); - intel_dp_configure_protocol_converter(intel_dp, crtc_state); + intel_dp_configure_protocol_converter(intel_dp, master_crtc_state); if (!is_mst) intel_dp_sink_enable_decompression(state, to_intel_connector(conn_state->connector), - crtc_state); - intel_dp_sink_set_fec_ready(intel_dp, crtc_state, true); - intel_dp_start_link_train(intel_dp, crtc_state); + master_crtc_state); + intel_dp_sink_set_fec_ready(intel_dp, master_crtc_state, true); + intel_dp_start_link_train(intel_dp, master_crtc_state); if ((port != PORT_A || DISPLAY_VER(dev_priv) >= 9) && - !is_trans_port_sync_mode(crtc_state)) - intel_dp_stop_link_train(intel_dp, crtc_state); + !is_trans_port_sync_mode(master_crtc_state)) + intel_dp_stop_link_train(intel_dp, master_crtc_state); - intel_ddi_enable_fec(encoder, crtc_state); + intel_ddi_enable_fec(encoder, master_crtc_state); if (!is_mst) { - intel_ddi_enable_transcoder_clock(encoder, crtc_state); - intel_dsc_dp_pps_write(encoder, crtc_state); + intel_ddi_enable_transcoder_clock(encoder, master_crtc_state); + intel_dsc_dp_pps_write(encoder, master_crtc_state); } } static void intel_ddi_pre_enable_dp(struct intel_atomic_state *state, struct intel_encoder *encoder, - const struct intel_crtc_state *crtc_state, + const struct intel_crtc_state *master_crtc_state, const struct drm_connector_state *conn_state) { struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); @@ -2816,29 +2816,29 @@ static void intel_ddi_pre_enable_dp(struct intel_atomic_state *state, if (HAS_DP20(dev_priv)) { intel_dp_128b132b_sdp_crc16(enc_to_intel_dp(encoder), - crtc_state); - if (crtc_state->has_panel_replay) + master_crtc_state); + if (master_crtc_state->has_panel_replay) drm_dp_dpcd_writeb(&intel_dp->aux, PANEL_REPLAY_CONFIG, DP_PANEL_REPLAY_ENABLE); } if (DISPLAY_VER(dev_priv) >= 14) - mtl_ddi_pre_enable_dp(state, encoder, crtc_state, conn_state); + mtl_ddi_pre_enable_dp(state, encoder, master_crtc_state, conn_state); else if (DISPLAY_VER(dev_priv) >= 12) - tgl_ddi_pre_enable_dp(state, encoder, crtc_state, conn_state); + tgl_ddi_pre_enable_dp(state, encoder, master_crtc_state, conn_state); else - hsw_ddi_pre_enable_dp(state, encoder, crtc_state, conn_state); + hsw_ddi_pre_enable_dp(state, encoder, master_crtc_state, conn_state); /* MST will call a setting of MSA after an allocating of Virtual Channel * from MST encoder pre_enable callback. */ - if (!intel_crtc_has_type(crtc_state, INTEL_OUTPUT_DP_MST)) - intel_ddi_set_dp_msa(crtc_state, conn_state); + if (!intel_crtc_has_type(master_crtc_state, INTEL_OUTPUT_DP_MST)) + intel_ddi_set_dp_msa(master_crtc_state, conn_state); } static void intel_ddi_pre_enable_hdmi(struct intel_atomic_state *state, struct intel_encoder *encoder, - const struct intel_crtc_state *crtc_state, + const struct intel_crtc_state *master_crtc_state, const struct drm_connector_state *conn_state) { struct intel_digital_port *dig_port = enc_to_dig_port(encoder); @@ -2846,27 +2846,27 @@ static void intel_ddi_pre_enable_hdmi(struct intel_atomic_state *state, struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); intel_dp_dual_mode_set_tmds_output(intel_hdmi, true); - intel_ddi_enable_clock(encoder, crtc_state); + intel_ddi_enable_clock(encoder, master_crtc_state); drm_WARN_ON(&dev_priv->drm, dig_port->ddi_io_wakeref); dig_port->ddi_io_wakeref = intel_display_power_get(dev_priv, dig_port->ddi_io_power_domain); - icl_program_mg_dp_mode(dig_port, crtc_state); + icl_program_mg_dp_mode(dig_port, master_crtc_state); - intel_ddi_enable_transcoder_clock(encoder, crtc_state); + intel_ddi_enable_transcoder_clock(encoder, master_crtc_state); dig_port->set_infoframes(encoder, - crtc_state->has_infoframe, - crtc_state, conn_state); + master_crtc_state->has_infoframe, + master_crtc_state, conn_state); } static void intel_ddi_pre_enable(struct intel_atomic_state *state, struct intel_encoder *encoder, - const struct intel_crtc_state *crtc_state, + const struct intel_crtc_state *master_crtc_state, const struct drm_connector_state *conn_state) { - struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); + struct intel_crtc *crtc = to_intel_crtc(master_crtc_state->uapi.crtc); struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); enum pipe pipe = crtc->pipe; @@ -2876,32 +2876,32 @@ static void intel_ddi_pre_enable(struct intel_atomic_state *state, * - encoder will be the main encoder (ie. mst->primary) * - the main connector associated with this port * won't be active or linked to a crtc - * - crtc_state will be the state of the first stream to + * - master_crtc_state will be the state of the first stream to * be activated on this port, and it may not be the same * stream that will be deactivated last, but each stream * should have a state that is identical when it comes to * the DP link parameteres */ - drm_WARN_ON(&dev_priv->drm, crtc_state->has_pch_encoder); + drm_WARN_ON(&dev_priv->drm, master_crtc_state->has_pch_encoder); intel_set_cpu_fifo_underrun_reporting(dev_priv, pipe, true); - if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_HDMI)) { - intel_ddi_pre_enable_hdmi(state, encoder, crtc_state, + if (intel_crtc_has_type(master_crtc_state, INTEL_OUTPUT_HDMI)) { + intel_ddi_pre_enable_hdmi(state, encoder, master_crtc_state, conn_state); } else { struct intel_digital_port *dig_port = enc_to_dig_port(encoder); - intel_ddi_pre_enable_dp(state, encoder, crtc_state, + intel_ddi_pre_enable_dp(state, encoder, master_crtc_state, conn_state); /* FIXME precompute everything properly */ /* FIXME how do we turn infoframes off again? */ if (dig_port->lspcon.active && intel_dp_has_hdmi_sink(&dig_port->dp)) dig_port->set_infoframes(encoder, - crtc_state->has_infoframe, - crtc_state, conn_state); + master_crtc_state->has_infoframe, + master_crtc_state, conn_state); } } @@ -3000,19 +3000,19 @@ static void intel_disable_ddi_buf(struct intel_encoder *encoder, static void intel_ddi_post_disable_dp(struct intel_atomic_state *state, struct intel_encoder *encoder, - const struct intel_crtc_state *old_crtc_state, + const struct intel_crtc_state *old_master_crtc_state, const struct drm_connector_state *old_conn_state) { struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); struct intel_digital_port *dig_port = enc_to_dig_port(encoder); struct intel_dp *intel_dp = &dig_port->dp; intel_wakeref_t wakeref; - bool is_mst = intel_crtc_has_type(old_crtc_state, + bool is_mst = intel_crtc_has_type(old_master_crtc_state, INTEL_OUTPUT_DP_MST); if (!is_mst) intel_dp_set_infoframes(encoder, false, - old_crtc_state, old_conn_state); + old_master_crtc_state, old_conn_state); /* * Power down sink before disabling the port, otherwise we end @@ -3022,7 +3022,7 @@ static void intel_ddi_post_disable_dp(struct intel_atomic_state *state, if (DISPLAY_VER(dev_priv) >= 12) { if (is_mst) { - enum transcoder cpu_transcoder = old_crtc_state->cpu_transcoder; + enum transcoder cpu_transcoder = old_master_crtc_state->cpu_transcoder; intel_de_rmw(dev_priv, TRANS_DDI_FUNC_CTL(cpu_transcoder), TGL_TRANS_DDI_PORT_MASK | TRANS_DDI_MODE_SELECT_MASK, @@ -3030,12 +3030,12 @@ static void intel_ddi_post_disable_dp(struct intel_atomic_state *state, } } else { if (!is_mst) - intel_ddi_disable_transcoder_clock(old_crtc_state); + intel_ddi_disable_transcoder_clock(old_master_crtc_state); } - intel_disable_ddi_buf(encoder, old_crtc_state); + intel_disable_ddi_buf(encoder, old_master_crtc_state); - intel_dp_sink_set_fec_ready(intel_dp, old_crtc_state, false); + intel_dp_sink_set_fec_ready(intel_dp, old_master_crtc_state, false); /* * From TGL spec: "If single stream or multi-stream master transcoder: @@ -3043,7 +3043,7 @@ static void intel_ddi_post_disable_dp(struct intel_atomic_state *state, * transcoder" */ if (DISPLAY_VER(dev_priv) >= 12) - intel_ddi_disable_transcoder_clock(old_crtc_state); + intel_ddi_disable_transcoder_clock(old_master_crtc_state); intel_pps_vdd_on(intel_dp); intel_pps_off(intel_dp); @@ -3065,7 +3065,7 @@ static void intel_ddi_post_disable_dp(struct intel_atomic_state *state, static void intel_ddi_post_disable_hdmi(struct intel_atomic_state *state, struct intel_encoder *encoder, - const struct intel_crtc_state *old_crtc_state, + const struct intel_crtc_state *old_master_crtc_state, const struct drm_connector_state *old_conn_state) { struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); @@ -3074,15 +3074,15 @@ static void intel_ddi_post_disable_hdmi(struct intel_atomic_state *state, intel_wakeref_t wakeref; dig_port->set_infoframes(encoder, false, - old_crtc_state, old_conn_state); + old_master_crtc_state, old_conn_state); if (DISPLAY_VER(dev_priv) < 12) - intel_ddi_disable_transcoder_clock(old_crtc_state); + intel_ddi_disable_transcoder_clock(old_master_crtc_state); - intel_disable_ddi_buf(encoder, old_crtc_state); + intel_disable_ddi_buf(encoder, old_master_crtc_state); if (DISPLAY_VER(dev_priv) >= 12) - intel_ddi_disable_transcoder_clock(old_crtc_state); + intel_ddi_disable_transcoder_clock(old_master_crtc_state); wakeref = fetch_and_zero(&dig_port->ddi_io_wakeref); if (wakeref) @@ -3097,29 +3097,29 @@ static void intel_ddi_post_disable_hdmi(struct intel_atomic_state *state, static void intel_ddi_post_disable(struct intel_atomic_state *state, struct intel_encoder *encoder, - const struct intel_crtc_state *old_crtc_state, + const struct intel_crtc_state *old_master_crtc_state, const struct drm_connector_state *old_conn_state) { struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); struct intel_crtc *slave_crtc; - if (!intel_crtc_has_type(old_crtc_state, INTEL_OUTPUT_DP_MST)) { - intel_crtc_vblank_off(old_crtc_state); + if (!intel_crtc_has_type(old_master_crtc_state, INTEL_OUTPUT_DP_MST)) { + intel_crtc_vblank_off(old_master_crtc_state); - intel_disable_transcoder(old_crtc_state); + intel_disable_transcoder(old_master_crtc_state); - intel_ddi_disable_transcoder_func(old_crtc_state); + intel_ddi_disable_transcoder_func(old_master_crtc_state); - intel_dsc_disable(old_crtc_state); + intel_dsc_disable(old_master_crtc_state); if (DISPLAY_VER(dev_priv) >= 9) - skl_scaler_disable(old_crtc_state); + skl_scaler_disable(old_master_crtc_state); else - ilk_pfit_disable(old_crtc_state); + ilk_pfit_disable(old_master_crtc_state); } for_each_intel_crtc_in_pipe_mask(&dev_priv->drm, slave_crtc, - intel_crtc_bigjoiner_slave_pipes(old_crtc_state)) { + intel_crtc_bigjoiner_slave_pipes(old_master_crtc_state)) { const struct intel_crtc_state *old_slave_crtc_state = intel_atomic_get_old_crtc_state(state, slave_crtc); @@ -3142,17 +3142,17 @@ static void intel_ddi_post_disable(struct intel_atomic_state *state, * the DP link parameteres */ - if (intel_crtc_has_type(old_crtc_state, INTEL_OUTPUT_HDMI)) - intel_ddi_post_disable_hdmi(state, encoder, old_crtc_state, + if (intel_crtc_has_type(old_master_crtc_state, INTEL_OUTPUT_HDMI)) + intel_ddi_post_disable_hdmi(state, encoder, old_master_crtc_state, old_conn_state); else - intel_ddi_post_disable_dp(state, encoder, old_crtc_state, + intel_ddi_post_disable_dp(state, encoder, old_master_crtc_state, old_conn_state); } static void intel_ddi_post_pll_disable(struct intel_atomic_state *state, struct intel_encoder *encoder, - const struct intel_crtc_state *old_crtc_state, + const struct intel_crtc_state *old_master_crtc_state, const struct drm_connector_state *old_conn_state) { struct drm_i915_private *i915 = to_i915(encoder->base.dev); @@ -3160,7 +3160,7 @@ static void intel_ddi_post_pll_disable(struct intel_atomic_state *state, enum phy phy = intel_port_to_phy(i915, encoder->port); bool is_tc_port = intel_phy_is_tc(i915, phy); - main_link_aux_power_domain_put(dig_port, old_crtc_state); + main_link_aux_power_domain_put(dig_port, old_master_crtc_state); if (is_tc_port) intel_tc_port_put_link(dig_port); @@ -3205,7 +3205,7 @@ static void trans_port_sync_stop_link_train(struct intel_atomic_state *state, static void intel_enable_ddi_dp(struct intel_atomic_state *state, struct intel_encoder *encoder, - const struct intel_crtc_state *crtc_state, + const struct intel_crtc_state *master_crtc_state, const struct drm_connector_state *conn_state) { struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); @@ -3214,15 +3214,15 @@ static void intel_enable_ddi_dp(struct intel_atomic_state *state, enum port port = encoder->port; if (port == PORT_A && DISPLAY_VER(dev_priv) < 9) - intel_dp_stop_link_train(intel_dp, crtc_state); + intel_dp_stop_link_train(intel_dp, master_crtc_state); drm_connector_update_privacy_screen(conn_state); - intel_edp_backlight_on(crtc_state, conn_state); + intel_edp_backlight_on(master_crtc_state, conn_state); if (!dig_port->lspcon.active || intel_dp_has_hdmi_sink(&dig_port->dp)) - intel_dp_set_infoframes(encoder, true, crtc_state, conn_state); + intel_dp_set_infoframes(encoder, true, master_crtc_state, conn_state); - trans_port_sync_stop_link_train(state, encoder, crtc_state); + trans_port_sync_stop_link_train(state, encoder, master_crtc_state); } /* FIXME bad home for this function */ @@ -3256,7 +3256,7 @@ gen9_chicken_trans_reg_by_port(struct drm_i915_private *dev_priv, static void intel_enable_ddi_hdmi(struct intel_atomic_state *state, struct intel_encoder *encoder, - const struct intel_crtc_state *crtc_state, + const struct intel_crtc_state *master_crtc_state, const struct drm_connector_state *conn_state) { struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); @@ -3267,20 +3267,20 @@ static void intel_enable_ddi_hdmi(struct intel_atomic_state *state, u32 buf_ctl; if (!intel_hdmi_handle_sink_scrambling(encoder, connector, - crtc_state->hdmi_high_tmds_clock_ratio, - crtc_state->hdmi_scrambling)) + master_crtc_state->hdmi_high_tmds_clock_ratio, + master_crtc_state->hdmi_scrambling)) drm_dbg_kms(&dev_priv->drm, "[CONNECTOR:%d:%s] Failed to configure sink scrambling/TMDS bit clock ratio\n", connector->base.id, connector->name); if (has_buf_trans_select(dev_priv)) - hsw_prepare_hdmi_ddi_buffers(encoder, crtc_state); + hsw_prepare_hdmi_ddi_buffers(encoder, master_crtc_state); /* e. Enable D2D Link for C10/C20 Phy */ if (DISPLAY_VER(dev_priv) >= 14) mtl_ddi_enable_d2d(encoder); - encoder->set_signal_levels(encoder, crtc_state); + encoder->set_signal_levels(encoder, master_crtc_state); /* Display WA #1143: skl,kbl,cfl */ if (DISPLAY_VER(dev_priv) == 9 && !IS_BROXTON(dev_priv)) { @@ -3317,7 +3317,7 @@ static void intel_enable_ddi_hdmi(struct intel_atomic_state *state, intel_de_write(dev_priv, reg, val); } - intel_ddi_power_up_lanes(encoder, crtc_state); + intel_ddi_power_up_lanes(encoder, master_crtc_state); /* In HDMI/DVI mode, the port width, and swing/emphasis values * are ignored so nothing special needs to be done besides @@ -3327,12 +3327,12 @@ static void intel_enable_ddi_hdmi(struct intel_atomic_state *state, * these are both 0 for HDMI. * * But MTL onwards HDMI2.1 is supported and in TMDS mode this - * is filled with lane count, already set in the crtc_state. + * is filled with lane count, already set in the master_crtc_state. * The same is required to be filled in PORT_BUF_CTL for C10/20 Phy. */ buf_ctl = dig_port->saved_port_bits | DDI_BUF_CTL_ENABLE; if (DISPLAY_VER(dev_priv) >= 14) { - u8 lane_count = mtl_get_port_width(crtc_state->lane_count); + u8 lane_count = mtl_get_port_width(master_crtc_state->lane_count); u32 port_buf = 0; port_buf |= XELPDP_PORT_WIDTH(lane_count); @@ -3359,35 +3359,35 @@ static void intel_enable_ddi_hdmi(struct intel_atomic_state *state, static void intel_enable_ddi(struct intel_atomic_state *state, struct intel_encoder *encoder, - const struct intel_crtc_state *crtc_state, + const struct intel_crtc_state *master_crtc_state, const struct drm_connector_state *conn_state) { - drm_WARN_ON(state->base.dev, crtc_state->has_pch_encoder); + drm_WARN_ON(state->base.dev, master_crtc_state->has_pch_encoder); - if (!intel_crtc_is_bigjoiner_slave(crtc_state)) - intel_ddi_enable_transcoder_func(encoder, crtc_state); + if (!intel_crtc_is_bigjoiner_slave(master_crtc_state)) + intel_ddi_enable_transcoder_func(encoder, master_crtc_state); /* Enable/Disable DP2.0 SDP split config before transcoder */ - intel_audio_sdp_split_update(crtc_state); + intel_audio_sdp_split_update(master_crtc_state); - intel_enable_transcoder(crtc_state); + intel_enable_transcoder(master_crtc_state); - intel_ddi_wait_for_fec_status(encoder, crtc_state, true); + intel_ddi_wait_for_fec_status(encoder, master_crtc_state, true); - intel_crtc_vblank_on(crtc_state); + intel_crtc_vblank_on(master_crtc_state); - if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_HDMI)) - intel_enable_ddi_hdmi(state, encoder, crtc_state, conn_state); + if (intel_crtc_has_type(master_crtc_state, INTEL_OUTPUT_HDMI)) + intel_enable_ddi_hdmi(state, encoder, master_crtc_state, conn_state); else - intel_enable_ddi_dp(state, encoder, crtc_state, conn_state); + intel_enable_ddi_dp(state, encoder, master_crtc_state, conn_state); - intel_hdcp_enable(state, encoder, crtc_state, conn_state); + intel_hdcp_enable(state, encoder, master_crtc_state, conn_state); } static void intel_disable_ddi_dp(struct intel_atomic_state *state, struct intel_encoder *encoder, - const struct intel_crtc_state *old_crtc_state, + const struct intel_crtc_state *old_master_crtc_state, const struct drm_connector_state *old_conn_state) { struct intel_dp *intel_dp = enc_to_intel_dp(encoder); @@ -3396,19 +3396,19 @@ static void intel_disable_ddi_dp(struct intel_atomic_state *state, intel_dp->link_trained = false; - intel_psr_disable(intel_dp, old_crtc_state); + intel_psr_disable(intel_dp, old_master_crtc_state); intel_edp_backlight_off(old_conn_state); /* Disable the decompression in DP Sink */ intel_dp_sink_disable_decompression(state, - connector, old_crtc_state); + connector, old_master_crtc_state); /* Disable Ignore_MSA bit in DP Sink */ - intel_dp_sink_set_msa_timing_par_ignore_state(intel_dp, old_crtc_state, + intel_dp_sink_set_msa_timing_par_ignore_state(intel_dp, old_master_crtc_state, false); } static void intel_disable_ddi_hdmi(struct intel_atomic_state *state, struct intel_encoder *encoder, - const struct intel_crtc_state *old_crtc_state, + const struct intel_crtc_state *old_master_crtc_state, const struct drm_connector_state *old_conn_state) { struct drm_i915_private *i915 = to_i915(encoder->base.dev); @@ -3423,55 +3423,55 @@ static void intel_disable_ddi_hdmi(struct intel_atomic_state *state, static void intel_disable_ddi(struct intel_atomic_state *state, struct intel_encoder *encoder, - const struct intel_crtc_state *old_crtc_state, + const struct intel_crtc_state *old_master_crtc_state, const struct drm_connector_state *old_conn_state) { intel_tc_port_link_cancel_reset_work(enc_to_dig_port(encoder)); intel_hdcp_disable(to_intel_connector(old_conn_state->connector)); - if (intel_crtc_has_type(old_crtc_state, INTEL_OUTPUT_HDMI)) - intel_disable_ddi_hdmi(state, encoder, old_crtc_state, + if (intel_crtc_has_type(old_master_crtc_state, INTEL_OUTPUT_HDMI)) + intel_disable_ddi_hdmi(state, encoder, old_master_crtc_state, old_conn_state); else - intel_disable_ddi_dp(state, encoder, old_crtc_state, + intel_disable_ddi_dp(state, encoder, old_master_crtc_state, old_conn_state); } static void intel_ddi_update_pipe_dp(struct intel_atomic_state *state, struct intel_encoder *encoder, - const struct intel_crtc_state *crtc_state, + const struct intel_crtc_state *master_crtc_state, const struct drm_connector_state *conn_state) { - intel_ddi_set_dp_msa(crtc_state, conn_state); + intel_ddi_set_dp_msa(master_crtc_state, conn_state); - intel_dp_set_infoframes(encoder, true, crtc_state, conn_state); + intel_dp_set_infoframes(encoder, true, master_crtc_state, conn_state); - intel_backlight_update(state, encoder, crtc_state, conn_state); + intel_backlight_update(state, encoder, master_crtc_state, conn_state); drm_connector_update_privacy_screen(conn_state); } void intel_ddi_update_pipe(struct intel_atomic_state *state, struct intel_encoder *encoder, - const struct intel_crtc_state *crtc_state, + const struct intel_crtc_state *master_crtc_state, const struct drm_connector_state *conn_state) { - if (!intel_crtc_has_type(crtc_state, INTEL_OUTPUT_HDMI) && + if (!intel_crtc_has_type(master_crtc_state, INTEL_OUTPUT_HDMI) && !intel_encoder_is_mst(encoder)) - intel_ddi_update_pipe_dp(state, encoder, crtc_state, + intel_ddi_update_pipe_dp(state, encoder, master_crtc_state, conn_state); - intel_hdcp_update_pipe(state, encoder, crtc_state, conn_state); + intel_hdcp_update_pipe(state, encoder, master_crtc_state, conn_state); } void intel_ddi_update_active_dpll(struct intel_atomic_state *state, struct intel_encoder *encoder, - struct intel_crtc *crtc) + struct intel_crtc *master_crtc) { struct drm_i915_private *i915 = to_i915(encoder->base.dev); - struct intel_crtc_state *crtc_state = - intel_atomic_get_new_crtc_state(state, crtc); + struct intel_crtc_state *master_crtc_state = + intel_atomic_get_new_crtc_state(state, master_crtc); struct intel_crtc *slave_crtc; enum phy phy = intel_port_to_phy(i915, encoder->port); @@ -3479,16 +3479,16 @@ void intel_ddi_update_active_dpll(struct intel_atomic_state *state, if (DISPLAY_VER(i915) >= 14 || !intel_phy_is_tc(i915, phy)) return; - intel_update_active_dpll(state, crtc, encoder); + intel_update_active_dpll(state, master_crtc, encoder); for_each_intel_crtc_in_pipe_mask(&i915->drm, slave_crtc, - intel_crtc_bigjoiner_slave_pipes(crtc_state)) + intel_crtc_bigjoiner_slave_pipes(master_crtc_state)) intel_update_active_dpll(state, slave_crtc, encoder); } static void intel_ddi_pre_pll_enable(struct intel_atomic_state *state, struct intel_encoder *encoder, - const struct intel_crtc_state *crtc_state, + const struct intel_crtc_state *master_crtc_state, const struct drm_connector_state *conn_state) { struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); @@ -3498,23 +3498,23 @@ intel_ddi_pre_pll_enable(struct intel_atomic_state *state, if (is_tc_port) { struct intel_crtc *master_crtc = - to_intel_crtc(crtc_state->uapi.crtc); + to_intel_crtc(master_crtc_state->uapi.crtc); - intel_tc_port_get_link(dig_port, crtc_state->lane_count); + intel_tc_port_get_link(dig_port, master_crtc_state->lane_count); intel_ddi_update_active_dpll(state, encoder, master_crtc); } - main_link_aux_power_domain_get(dig_port, crtc_state); + main_link_aux_power_domain_get(dig_port, master_crtc_state); if (is_tc_port && !intel_tc_port_in_tbt_alt_mode(dig_port)) /* * Program the lane count for static/dynamic connections on * Type-C ports. Skip this step for TBT. */ - intel_tc_port_set_fia_lane_count(dig_port, crtc_state->lane_count); + intel_tc_port_set_fia_lane_count(dig_port, master_crtc_state->lane_count); else if (IS_GEMINILAKE(dev_priv) || IS_BROXTON(dev_priv)) bxt_ddi_phy_set_lane_optim_mask(encoder, - crtc_state->lane_lat_optim_mask); + master_crtc_state->lane_lat_optim_mask); } static void adlp_tbt_to_dp_alt_switch_wa(struct intel_encoder *encoder) diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c index ab2f52d21bad..f29d38a8035e 100644 --- a/drivers/gpu/drm/i915/display/intel_display.c +++ b/drivers/gpu/drm/i915/display/intel_display.c @@ -1634,88 +1634,88 @@ static void hsw_configure_cpu_transcoder(const struct intel_crtc_state *crtc_sta } static void hsw_crtc_enable(struct intel_atomic_state *state, - struct intel_crtc *crtc) + struct intel_crtc *master_crtc) { - const struct intel_crtc_state *new_crtc_state = - intel_atomic_get_new_crtc_state(state, crtc); - struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); - enum pipe pipe = crtc->pipe, hsw_workaround_pipe; - enum transcoder cpu_transcoder = new_crtc_state->cpu_transcoder; + const struct intel_crtc_state *new_master_crtc_state = + intel_atomic_get_new_crtc_state(state, master_crtc); + struct drm_i915_private *dev_priv = to_i915(master_crtc->base.dev); + enum transcoder cpu_transcoder = new_master_crtc_state->cpu_transcoder; + enum pipe hsw_workaround_pipe; bool psl_clkgate_wa; - if (drm_WARN_ON(&dev_priv->drm, crtc->active)) + if (drm_WARN_ON(&dev_priv->drm, master_crtc->active)) return; - intel_dmc_enable_pipe(dev_priv, crtc->pipe); + intel_dmc_enable_pipe(dev_priv, master_crtc->pipe); - if (!new_crtc_state->bigjoiner_pipes) { - intel_encoders_pre_pll_enable(state, crtc); + if (!new_master_crtc_state->bigjoiner_pipes) { + intel_encoders_pre_pll_enable(state, master_crtc); - if (new_crtc_state->shared_dpll) - intel_enable_shared_dpll(new_crtc_state); + if (new_master_crtc_state->shared_dpll) + intel_enable_shared_dpll(new_master_crtc_state); - intel_encoders_pre_enable(state, crtc); + intel_encoders_pre_enable(state, master_crtc); } else { - icl_ddi_bigjoiner_pre_enable(state, new_crtc_state); + icl_ddi_bigjoiner_pre_enable(state, new_master_crtc_state); } - intel_dsc_enable(new_crtc_state); + intel_dsc_enable(new_master_crtc_state); if (DISPLAY_VER(dev_priv) >= 13) - intel_uncompressed_joiner_enable(new_crtc_state); + intel_uncompressed_joiner_enable(new_master_crtc_state); - intel_set_pipe_src_size(new_crtc_state); + intel_set_pipe_src_size(new_master_crtc_state); if (DISPLAY_VER(dev_priv) >= 9 || IS_BROADWELL(dev_priv)) - bdw_set_pipe_misc(new_crtc_state); + bdw_set_pipe_misc(new_master_crtc_state); - if (!intel_crtc_is_bigjoiner_slave(new_crtc_state) && + if (!intel_crtc_is_bigjoiner_slave(new_master_crtc_state) && !transcoder_is_dsi(cpu_transcoder)) - hsw_configure_cpu_transcoder(new_crtc_state); + hsw_configure_cpu_transcoder(new_master_crtc_state); - crtc->active = true; + master_crtc->active = true; /* Display WA #1180: WaDisableScalarClockGating: glk */ psl_clkgate_wa = DISPLAY_VER(dev_priv) == 10 && - new_crtc_state->pch_pfit.enabled; + new_master_crtc_state->pch_pfit.enabled; if (psl_clkgate_wa) - glk_pipe_scaler_clock_gating_wa(dev_priv, pipe, true); + glk_pipe_scaler_clock_gating_wa(dev_priv, master_crtc->pipe, true); if (DISPLAY_VER(dev_priv) >= 9) - skl_pfit_enable(new_crtc_state); + skl_pfit_enable(new_master_crtc_state); else - ilk_pfit_enable(new_crtc_state); + ilk_pfit_enable(new_master_crtc_state); /* * On ILK+ LUT must be loaded before the pipe is running but with * clocks enabled */ - intel_color_load_luts(new_crtc_state); - intel_color_commit_noarm(new_crtc_state); - intel_color_commit_arm(new_crtc_state); + intel_color_load_luts(new_master_crtc_state); + intel_color_commit_noarm(new_master_crtc_state); + intel_color_commit_arm(new_master_crtc_state); /* update DSPCNTR to configure gamma/csc for pipe bottom color */ if (DISPLAY_VER(dev_priv) < 9) - intel_disable_primary_plane(new_crtc_state); + intel_disable_primary_plane(new_master_crtc_state); - hsw_set_linetime_wm(new_crtc_state); + hsw_set_linetime_wm(new_master_crtc_state); if (DISPLAY_VER(dev_priv) >= 11) - icl_set_pipe_chicken(new_crtc_state); + icl_set_pipe_chicken(new_master_crtc_state); - intel_initial_watermarks(state, crtc); + intel_initial_watermarks(state, master_crtc); - if (intel_crtc_is_bigjoiner_slave(new_crtc_state)) - intel_crtc_vblank_on(new_crtc_state); + if (intel_crtc_is_bigjoiner_slave(new_master_crtc_state)) + intel_crtc_vblank_on(new_master_crtc_state); - intel_encoders_enable(state, crtc); + intel_encoders_enable(state, master_crtc); if (psl_clkgate_wa) { - intel_crtc_wait_for_next_vblank(crtc); - glk_pipe_scaler_clock_gating_wa(dev_priv, pipe, false); + intel_crtc_wait_for_next_vblank(master_crtc); + glk_pipe_scaler_clock_gating_wa(dev_priv, master_crtc->pipe, false); } /* If we change the relative order between pipe/planes enabling, we need * to change the workaround. */ - hsw_workaround_pipe = new_crtc_state->hsw_workaround_pipe; + hsw_workaround_pipe = new_master_crtc_state->hsw_workaround_pipe; if (IS_HASWELL(dev_priv) && hsw_workaround_pipe != INVALID_PIPE) { struct intel_crtc *wa_crtc; @@ -1781,32 +1781,32 @@ static void ilk_crtc_disable(struct intel_atomic_state *state, } static void hsw_crtc_disable(struct intel_atomic_state *state, - struct intel_crtc *crtc) + struct intel_crtc *master_crtc) { - const struct intel_crtc_state *old_crtc_state = - intel_atomic_get_old_crtc_state(state, crtc); - struct drm_i915_private *i915 = to_i915(crtc->base.dev); + const struct intel_crtc_state *old_master_crtc_state = + intel_atomic_get_old_crtc_state(state, master_crtc); + struct drm_i915_private *i915 = to_i915(master_crtc->base.dev); /* * FIXME collapse everything to one hook. * Need care with mst->ddi interactions. */ - if (!intel_crtc_is_bigjoiner_slave(old_crtc_state)) { - intel_encoders_disable(state, crtc); - intel_encoders_post_disable(state, crtc); + if (!intel_crtc_is_bigjoiner_slave(old_master_crtc_state)) { + intel_encoders_disable(state, master_crtc); + intel_encoders_post_disable(state, master_crtc); } - intel_disable_shared_dpll(old_crtc_state); + intel_disable_shared_dpll(old_master_crtc_state); - if (!intel_crtc_is_bigjoiner_slave(old_crtc_state)) { + if (!intel_crtc_is_bigjoiner_slave(old_master_crtc_state)) { struct intel_crtc *slave_crtc; - intel_encoders_post_pll_disable(state, crtc); + intel_encoders_post_pll_disable(state, master_crtc); - intel_dmc_disable_pipe(i915, crtc->pipe); + intel_dmc_disable_pipe(i915, master_crtc->pipe); for_each_intel_crtc_in_pipe_mask(&i915->drm, slave_crtc, - intel_crtc_bigjoiner_slave_pipes(old_crtc_state)) + intel_crtc_bigjoiner_slave_pipes(old_master_crtc_state)) intel_dmc_disable_pipe(i915, slave_crtc->pipe); } } diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c index db1254b036f1..e4e71e4ae0e1 100644 --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c @@ -917,7 +917,7 @@ static void wait_for_act_sent(struct intel_encoder *encoder, static void intel_mst_disable_dp(struct intel_atomic_state *state, struct intel_encoder *encoder, - const struct intel_crtc_state *old_crtc_state, + const struct intel_crtc_state *old_master_crtc_state, const struct drm_connector_state *old_conn_state) { struct intel_dp_mst_encoder *intel_mst = enc_to_mst(encoder); @@ -932,12 +932,12 @@ static void intel_mst_disable_dp(struct intel_atomic_state *state, intel_hdcp_disable(intel_mst->connector); - intel_dp_sink_disable_decompression(state, connector, old_crtc_state); + intel_dp_sink_disable_decompression(state, connector, old_master_crtc_state); } static void intel_mst_post_disable_dp(struct intel_atomic_state *state, struct intel_encoder *encoder, - const struct intel_crtc_state *old_crtc_state, + const struct intel_crtc_state *old_master_crtc_state, const struct drm_connector_state *old_conn_state) { struct intel_dp_mst_encoder *intel_mst = enc_to_mst(encoder); @@ -960,32 +960,32 @@ static void intel_mst_post_disable_dp(struct intel_atomic_state *state, last_mst_stream = intel_dp->active_mst_links == 0; drm_WARN_ON(&dev_priv->drm, DISPLAY_VER(dev_priv) >= 12 && last_mst_stream && - !intel_dp_mst_is_master_trans(old_crtc_state)); + !intel_dp_mst_is_master_trans(old_master_crtc_state)); - intel_crtc_vblank_off(old_crtc_state); + intel_crtc_vblank_off(old_master_crtc_state); - intel_disable_transcoder(old_crtc_state); + intel_disable_transcoder(old_master_crtc_state); drm_dp_remove_payload_part1(&intel_dp->mst_mgr, new_mst_state, new_payload); - clear_act_sent(encoder, old_crtc_state); + clear_act_sent(encoder, old_master_crtc_state); - intel_de_rmw(dev_priv, TRANS_DDI_FUNC_CTL(old_crtc_state->cpu_transcoder), + intel_de_rmw(dev_priv, TRANS_DDI_FUNC_CTL(old_master_crtc_state->cpu_transcoder), TRANS_DDI_DP_VC_PAYLOAD_ALLOC, 0); - wait_for_act_sent(encoder, old_crtc_state); + wait_for_act_sent(encoder, old_master_crtc_state); drm_dp_remove_payload_part2(&intel_dp->mst_mgr, new_mst_state, old_payload, new_payload); - intel_ddi_disable_transcoder_func(old_crtc_state); + intel_ddi_disable_transcoder_func(old_master_crtc_state); - intel_dsc_disable(old_crtc_state); + intel_dsc_disable(old_master_crtc_state); if (DISPLAY_VER(dev_priv) >= 9) - skl_scaler_disable(old_crtc_state); + skl_scaler_disable(old_master_crtc_state); else - ilk_pfit_disable(old_crtc_state); + ilk_pfit_disable(old_master_crtc_state); /* * Power down mst path before disabling the port, otherwise we end @@ -999,7 +999,7 @@ static void intel_mst_post_disable_dp(struct intel_atomic_state *state, * the transcoder clock select is set to none. */ intel_dp_set_infoframes(&dig_port->base, false, - old_crtc_state, NULL); + old_master_crtc_state, NULL); /* * From TGL spec: "If multi-stream slave transcoder: Configure * Transcoder Clock Select to direct no clock to the transcoder" @@ -1008,13 +1008,12 @@ static void intel_mst_post_disable_dp(struct intel_atomic_state *state, * no clock to the transcoder" */ if (DISPLAY_VER(dev_priv) < 12 || !last_mst_stream) - intel_ddi_disable_transcoder_clock(old_crtc_state); - + intel_ddi_disable_transcoder_clock(old_master_crtc_state); intel_mst->connector = NULL; if (last_mst_stream) dig_port->base.post_disable(state, &dig_port->base, - old_crtc_state, NULL); + old_master_crtc_state, NULL); drm_dbg_kms(&dev_priv->drm, "active links %d\n", intel_dp->active_mst_links); @@ -1022,7 +1021,7 @@ static void intel_mst_post_disable_dp(struct intel_atomic_state *state, static void intel_mst_post_pll_disable_dp(struct intel_atomic_state *state, struct intel_encoder *encoder, - const struct intel_crtc_state *old_crtc_state, + const struct intel_crtc_state *old_master_crtc_state, const struct drm_connector_state *old_conn_state) { struct intel_dp_mst_encoder *intel_mst = enc_to_mst(encoder); @@ -1031,33 +1030,33 @@ static void intel_mst_post_pll_disable_dp(struct intel_atomic_state *state, if (intel_dp->active_mst_links == 0 && dig_port->base.post_pll_disable) - dig_port->base.post_pll_disable(state, encoder, old_crtc_state, old_conn_state); + dig_port->base.post_pll_disable(state, encoder, old_master_crtc_state, old_conn_state); } static void intel_mst_pre_pll_enable_dp(struct intel_atomic_state *state, struct intel_encoder *encoder, - const struct intel_crtc_state *pipe_config, + const struct intel_crtc_state *master_crtc_state, const struct drm_connector_state *conn_state) { + struct intel_crtc *master_crtc = to_intel_crtc(master_crtc_state->uapi.crtc); struct intel_dp_mst_encoder *intel_mst = enc_to_mst(encoder); struct intel_digital_port *dig_port = intel_mst->primary; struct intel_dp *intel_dp = &dig_port->dp; if (intel_dp->active_mst_links == 0) dig_port->base.pre_pll_enable(state, &dig_port->base, - pipe_config, NULL); + master_crtc_state, NULL); else /* * The port PLL state needs to get updated for secondary * streams as for the primary stream. */ - intel_ddi_update_active_dpll(state, &dig_port->base, - to_intel_crtc(pipe_config->uapi.crtc)); + intel_ddi_update_active_dpll(state, &dig_port->base, master_crtc); } static void intel_mst_pre_enable_dp(struct intel_atomic_state *state, struct intel_encoder *encoder, - const struct intel_crtc_state *pipe_config, + const struct intel_crtc_state *master_crtc_state, const struct drm_connector_state *conn_state) { struct intel_dp_mst_encoder *intel_mst = enc_to_mst(encoder); @@ -1079,7 +1078,7 @@ static void intel_mst_pre_enable_dp(struct intel_atomic_state *state, first_mst_stream = intel_dp->active_mst_links == 0; drm_WARN_ON(&dev_priv->drm, DISPLAY_VER(dev_priv) >= 12 && first_mst_stream && - !intel_dp_mst_is_master_trans(pipe_config)); + !intel_dp_mst_is_master_trans(master_crtc_state)); drm_dbg_kms(&dev_priv->drm, "active links %d\n", intel_dp->active_mst_links); @@ -1089,11 +1088,11 @@ static void intel_mst_pre_enable_dp(struct intel_atomic_state *state, drm_dp_send_power_updown_phy(&intel_dp->mst_mgr, connector->port, true); - intel_dp_sink_enable_decompression(state, connector, pipe_config); + intel_dp_sink_enable_decompression(state, connector, master_crtc_state); if (first_mst_stream) dig_port->base.pre_enable(state, &dig_port->base, - pipe_config, NULL); + master_crtc_state, NULL); intel_dp->active_mst_links++; @@ -1111,15 +1110,15 @@ static void intel_mst_pre_enable_dp(struct intel_atomic_state *state, * here for the following ones. */ if (DISPLAY_VER(dev_priv) < 12 || !first_mst_stream) - intel_ddi_enable_transcoder_clock(encoder, pipe_config); + intel_ddi_enable_transcoder_clock(encoder, master_crtc_state); - intel_dsc_dp_pps_write(&dig_port->base, pipe_config); - intel_ddi_set_dp_msa(pipe_config, conn_state); + intel_dsc_dp_pps_write(&dig_port->base, master_crtc_state); + intel_ddi_set_dp_msa(master_crtc_state, conn_state); } static void intel_mst_enable_dp(struct intel_atomic_state *state, struct intel_encoder *encoder, - const struct intel_crtc_state *pipe_config, + const struct intel_crtc_state *master_crtc_state, const struct drm_connector_state *conn_state) { struct intel_dp_mst_encoder *intel_mst = enc_to_mst(encoder); @@ -1129,25 +1128,25 @@ static void intel_mst_enable_dp(struct intel_atomic_state *state, struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); struct drm_dp_mst_topology_state *mst_state = drm_atomic_get_new_mst_topology_state(&state->base, &intel_dp->mst_mgr); - enum transcoder trans = pipe_config->cpu_transcoder; + enum transcoder trans = master_crtc_state->cpu_transcoder; bool first_mst_stream = intel_dp->active_mst_links == 1; - drm_WARN_ON(&dev_priv->drm, pipe_config->has_pch_encoder); + drm_WARN_ON(&dev_priv->drm, master_crtc_state->has_pch_encoder); - if (intel_dp_is_uhbr(pipe_config)) { + if (intel_dp_is_uhbr(master_crtc_state)) { const struct drm_display_mode *adjusted_mode = - &pipe_config->hw.adjusted_mode; + &master_crtc_state->hw.adjusted_mode; u64 crtc_clock_hz = KHz(adjusted_mode->crtc_clock); - intel_de_write(dev_priv, TRANS_DP2_VFREQHIGH(pipe_config->cpu_transcoder), + intel_de_write(dev_priv, TRANS_DP2_VFREQHIGH(master_crtc_state->cpu_transcoder), TRANS_DP2_VFREQ_PIXEL_CLOCK(crtc_clock_hz >> 24)); - intel_de_write(dev_priv, TRANS_DP2_VFREQLOW(pipe_config->cpu_transcoder), + intel_de_write(dev_priv, TRANS_DP2_VFREQLOW(master_crtc_state->cpu_transcoder), TRANS_DP2_VFREQ_PIXEL_CLOCK(crtc_clock_hz & 0xffffff)); } - intel_ddi_enable_transcoder_func(encoder, pipe_config); + intel_ddi_enable_transcoder_func(encoder, master_crtc_state); - clear_act_sent(encoder, pipe_config); + clear_act_sent(encoder, master_crtc_state); intel_de_rmw(dev_priv, TRANS_DDI_FUNC_CTL(trans), 0, TRANS_DDI_DP_VC_PAYLOAD_ALLOC); @@ -1155,10 +1154,10 @@ static void intel_mst_enable_dp(struct intel_atomic_state *state, drm_dbg_kms(&dev_priv->drm, "active links %d\n", intel_dp->active_mst_links); - wait_for_act_sent(encoder, pipe_config); + wait_for_act_sent(encoder, master_crtc_state); if (first_mst_stream) - intel_ddi_wait_for_fec_status(encoder, pipe_config, true); + intel_ddi_wait_for_fec_status(encoder, master_crtc_state, true); drm_dp_add_payload_part2(&intel_dp->mst_mgr, &state->base, drm_atomic_get_mst_payload_state(mst_state, connector->port)); @@ -1166,15 +1165,15 @@ static void intel_mst_enable_dp(struct intel_atomic_state *state, if (DISPLAY_VER(dev_priv) >= 12) intel_de_rmw(dev_priv, hsw_chicken_trans_reg(dev_priv, trans), FECSTALL_DIS_DPTSTREAM_DPTTG, - pipe_config->fec_enable ? FECSTALL_DIS_DPTSTREAM_DPTTG : 0); + master_crtc_state->fec_enable ? FECSTALL_DIS_DPTSTREAM_DPTTG : 0); - intel_audio_sdp_split_update(pipe_config); + intel_audio_sdp_split_update(master_crtc_state); - intel_enable_transcoder(pipe_config); + intel_enable_transcoder(master_crtc_state); - intel_crtc_vblank_on(pipe_config); + intel_crtc_vblank_on(master_crtc_state); - intel_hdcp_enable(state, encoder, pipe_config, conn_state); + intel_hdcp_enable(state, encoder, master_crtc_state, conn_state); } static bool intel_dp_mst_enc_get_hw_state(struct intel_encoder *encoder,