On Fri, 2020-03-13 at 18:48 +0200, Ville Syrjala wrote: > From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > We're going to want access to the atomic state for iterating > the slave crtcs when enabling the port sync master crtc. Pass > the atomic state all the way down. > > The alternative would be yet another encoder hook which we'll > have to call after all the normal modeset stuff is done. Not > really a fan of yet another hook just for this. > > Note that during readout state sanitation we are now going > to pass NULL as the atomic state since we don't have one. > We need to change that and then we can also s/crtc_state/crtc/ > and s/conn_state/conn/ for the encoder hooks as well. Reviewed-by: José Roberto de Souza <jose.souza@xxxxxxxxx> > > Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/i915/display/icl_dsi.c | 15 ++-- > drivers/gpu/drm/i915/display/intel_crt.c | 33 ++++--- > drivers/gpu/drm/i915/display/intel_ddi.c | 89 ++++++++++++----- > -- > drivers/gpu/drm/i915/display/intel_ddi.h | 3 +- > drivers/gpu/drm/i915/display/intel_display.c | 26 ++++-- > .../drm/i915/display/intel_display_types.h | 21 +++-- > drivers/gpu/drm/i915/display/intel_dp.c | 55 +++++++----- > drivers/gpu/drm/i915/display/intel_dp_mst.c | 21 +++-- > drivers/gpu/drm/i915/display/intel_dvo.c | 9 +- > drivers/gpu/drm/i915/display/intel_hdcp.c | 3 +- > drivers/gpu/drm/i915/display/intel_hdcp.h | 4 +- > drivers/gpu/drm/i915/display/intel_hdmi.c | 59 +++++++----- > drivers/gpu/drm/i915/display/intel_lvds.c | 22 +++-- > drivers/gpu/drm/i915/display/intel_panel.c | 3 +- > drivers/gpu/drm/i915/display/intel_panel.h | 3 +- > drivers/gpu/drm/i915/display/intel_sdvo.c | 17 ++-- > drivers/gpu/drm/i915/display/intel_tv.c | 9 +- > drivers/gpu/drm/i915/display/vlv_dsi.c | 12 ++- > 18 files changed, 260 insertions(+), 144 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/icl_dsi.c > b/drivers/gpu/drm/i915/display/icl_dsi.c > index 17cee6f80d8b..ea9907c3e5ba 100644 > --- a/drivers/gpu/drm/i915/display/icl_dsi.c > +++ b/drivers/gpu/drm/i915/display/icl_dsi.c > @@ -1088,7 +1088,8 @@ static void gen11_dsi_powerup_panel(struct > intel_encoder *encoder) > wait_for_cmds_dispatched_to_panel(encoder); > } > > -static void gen11_dsi_pre_pll_enable(struct intel_encoder *encoder, > +static void gen11_dsi_pre_pll_enable(struct intel_atomic_state > *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *crtc_state, > const struct drm_connector_state > *conn_state) > { > @@ -1099,7 +1100,8 @@ static void gen11_dsi_pre_pll_enable(struct > intel_encoder *encoder, > gen11_dsi_program_esc_clk_div(encoder, crtc_state); > } > > -static void gen11_dsi_pre_enable(struct intel_encoder *encoder, > +static void gen11_dsi_pre_enable(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *pipe_config, > const struct drm_connector_state > *conn_state) > { > @@ -1118,7 +1120,8 @@ static void gen11_dsi_pre_enable(struct > intel_encoder *encoder, > gen11_dsi_set_transcoder_timings(encoder, pipe_config); > } > > -static void gen11_dsi_enable(struct intel_encoder *encoder, > +static void gen11_dsi_enable(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state *crtc_state, > const struct drm_connector_state > *conn_state) > { > @@ -1264,7 +1267,8 @@ static void gen11_dsi_disable_io_power(struct > intel_encoder *encoder) > } > } > > -static void gen11_dsi_disable(struct intel_encoder *encoder, > +static void gen11_dsi_disable(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *old_crtc_state, > const struct drm_connector_state > *old_conn_state) > { > @@ -1290,7 +1294,8 @@ static void gen11_dsi_disable(struct > intel_encoder *encoder, > gen11_dsi_disable_io_power(encoder); > } > > -static void gen11_dsi_post_disable(struct intel_encoder *encoder, > +static void gen11_dsi_post_disable(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *old_crtc_state, > const struct drm_connector_state > *old_conn_state) > { > diff --git a/drivers/gpu/drm/i915/display/intel_crt.c > b/drivers/gpu/drm/i915/display/intel_crt.c > index 78f9b6cde810..80c91404046f 100644 > --- a/drivers/gpu/drm/i915/display/intel_crt.c > +++ b/drivers/gpu/drm/i915/display/intel_crt.c > @@ -203,27 +203,31 @@ static void intel_crt_set_dpms(struct > intel_encoder *encoder, > intel_de_write(dev_priv, crt->adpa_reg, adpa); > } > > -static void intel_disable_crt(struct intel_encoder *encoder, > +static void intel_disable_crt(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *old_crtc_state, > const struct drm_connector_state > *old_conn_state) > { > intel_crt_set_dpms(encoder, old_crtc_state, DRM_MODE_DPMS_OFF); > } > > -static void pch_disable_crt(struct intel_encoder *encoder, > +static void pch_disable_crt(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *old_crtc_state, > const struct drm_connector_state > *old_conn_state) > { > } > > -static void pch_post_disable_crt(struct intel_encoder *encoder, > +static void pch_post_disable_crt(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *old_crtc_state, > const struct drm_connector_state > *old_conn_state) > { > - intel_disable_crt(encoder, old_crtc_state, old_conn_state); > + intel_disable_crt(state, encoder, old_crtc_state, > old_conn_state); > } > > -static void hsw_disable_crt(struct intel_encoder *encoder, > +static void hsw_disable_crt(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *old_crtc_state, > const struct drm_connector_state > *old_conn_state) > { > @@ -234,7 +238,8 @@ static void hsw_disable_crt(struct intel_encoder > *encoder, > intel_set_pch_fifo_underrun_reporting(dev_priv, PIPE_A, false); > } > > -static void hsw_post_disable_crt(struct intel_encoder *encoder, > +static void hsw_post_disable_crt(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *old_crtc_state, > const struct drm_connector_state > *old_conn_state) > { > @@ -250,19 +255,20 @@ static void hsw_post_disable_crt(struct > intel_encoder *encoder, > > intel_ddi_disable_pipe_clock(old_crtc_state); > > - pch_post_disable_crt(encoder, old_crtc_state, old_conn_state); > + pch_post_disable_crt(state, encoder, old_crtc_state, > old_conn_state); > > lpt_disable_pch_transcoder(dev_priv); > lpt_disable_iclkip(dev_priv); > > - intel_ddi_fdi_post_disable(encoder, old_crtc_state, > old_conn_state); > + intel_ddi_fdi_post_disable(state, encoder, old_crtc_state, > old_conn_state); > > drm_WARN_ON(&dev_priv->drm, !old_crtc_state->has_pch_encoder); > > intel_set_pch_fifo_underrun_reporting(dev_priv, PIPE_A, true); > } > > -static void hsw_pre_pll_enable_crt(struct intel_encoder *encoder, > +static void hsw_pre_pll_enable_crt(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *crtc_state, > const struct drm_connector_state > *conn_state) > { > @@ -273,7 +279,8 @@ static void hsw_pre_pll_enable_crt(struct > intel_encoder *encoder, > intel_set_pch_fifo_underrun_reporting(dev_priv, PIPE_A, false); > } > > -static void hsw_pre_enable_crt(struct intel_encoder *encoder, > +static void hsw_pre_enable_crt(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *crtc_state, > const struct drm_connector_state > *conn_state) > { > @@ -290,7 +297,8 @@ static void hsw_pre_enable_crt(struct > intel_encoder *encoder, > intel_ddi_enable_pipe_clock(crtc_state); > } > > -static void hsw_enable_crt(struct intel_encoder *encoder, > +static void hsw_enable_crt(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state *crtc_state, > const struct drm_connector_state > *conn_state) > { > @@ -314,7 +322,8 @@ static void hsw_enable_crt(struct intel_encoder > *encoder, > intel_set_pch_fifo_underrun_reporting(dev_priv, PIPE_A, true); > } > > -static void intel_enable_crt(struct intel_encoder *encoder, > +static void intel_enable_crt(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state *crtc_state, > const struct drm_connector_state > *conn_state) > { > diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c > b/drivers/gpu/drm/i915/display/intel_ddi.c > index 9e6eb0ee5ba4..98475c81f1da 100644 > --- a/drivers/gpu/drm/i915/display/intel_ddi.c > +++ b/drivers/gpu/drm/i915/display/intel_ddi.c > @@ -3017,7 +3017,8 @@ static void intel_ddi_disable_fec_state(struct > intel_encoder *encoder, > intel_de_posting_read(dev_priv, intel_dp->regs.dp_tp_ctl); > } > > -static void tgl_ddi_pre_enable_dp(struct intel_encoder *encoder, > +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 drm_connector_state > *conn_state) > { > @@ -3157,7 +3158,8 @@ static void tgl_ddi_pre_enable_dp(struct > intel_encoder *encoder, > intel_dsc_enable(encoder, crtc_state); > } > > -static void hsw_ddi_pre_enable_dp(struct intel_encoder *encoder, > +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 drm_connector_state > *conn_state) > { > @@ -3230,16 +3232,17 @@ static void hsw_ddi_pre_enable_dp(struct > intel_encoder *encoder, > intel_dsc_enable(encoder, crtc_state); > } > > -static void intel_ddi_pre_enable_dp(struct intel_encoder *encoder, > +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 drm_connector_state > *conn_state) > { > struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); > > if (INTEL_GEN(dev_priv) >= 12) > - tgl_ddi_pre_enable_dp(encoder, crtc_state, conn_state); > + tgl_ddi_pre_enable_dp(state, encoder, crtc_state, > conn_state); > else > - hsw_ddi_pre_enable_dp(encoder, crtc_state, conn_state); > + hsw_ddi_pre_enable_dp(state, encoder, crtc_state, > conn_state); > > /* MST will call a setting of MSA after an allocating of > Virtual Channel > * from MST encoder pre_enable callback. > @@ -3251,7 +3254,8 @@ static void intel_ddi_pre_enable_dp(struct > intel_encoder *encoder, > } > } > > -static void intel_ddi_pre_enable_hdmi(struct intel_encoder *encoder, > +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 drm_connector_state > *conn_state) > { > @@ -3291,7 +3295,8 @@ static void intel_ddi_pre_enable_hdmi(struct > intel_encoder *encoder, > crtc_state, conn_state); > } > > -static void intel_ddi_pre_enable(struct intel_encoder *encoder, > +static void intel_ddi_pre_enable(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *crtc_state, > const struct drm_connector_state > *conn_state) > { > @@ -3320,12 +3325,14 @@ static void intel_ddi_pre_enable(struct > intel_encoder *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(encoder, crtc_state, > conn_state); > + intel_ddi_pre_enable_hdmi(state, encoder, crtc_state, > + conn_state); > } else { > struct intel_lspcon *lspcon = > enc_to_intel_lspcon(encoder); > > - intel_ddi_pre_enable_dp(encoder, crtc_state, > conn_state); > + intel_ddi_pre_enable_dp(state, encoder, crtc_state, > + conn_state); > if (lspcon->active) { > struct intel_digital_port *dig_port = > enc_to_dig_port(encoder); > @@ -3368,7 +3375,8 @@ static void intel_disable_ddi_buf(struct > intel_encoder *encoder, > intel_wait_ddi_buf_idle(dev_priv, port); > } > > -static void intel_ddi_post_disable_dp(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 drm_connector_state > *old_conn_state) > { > @@ -3424,7 +3432,8 @@ static void intel_ddi_post_disable_dp(struct > intel_encoder *encoder, > intel_ddi_clk_disable(encoder); > } > > -static void intel_ddi_post_disable_hdmi(struct intel_encoder > *encoder, > +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 > drm_connector_state *old_conn_state) > { > @@ -3447,7 +3456,8 @@ static void intel_ddi_post_disable_hdmi(struct > intel_encoder *encoder, > intel_dp_dual_mode_set_tmds_output(intel_hdmi, false); > } > > -static void intel_ddi_post_disable(struct intel_encoder *encoder, > +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 drm_connector_state > *old_conn_state) > { > @@ -3485,11 +3495,11 @@ static void intel_ddi_post_disable(struct > intel_encoder *encoder, > */ > > if (intel_crtc_has_type(old_crtc_state, INTEL_OUTPUT_HDMI)) > - intel_ddi_post_disable_hdmi(encoder, > - old_crtc_state, > old_conn_state); > + intel_ddi_post_disable_hdmi(state, encoder, > old_crtc_state, > + old_conn_state); > else > - intel_ddi_post_disable_dp(encoder, > - old_crtc_state, > old_conn_state); > + intel_ddi_post_disable_dp(state, encoder, > old_crtc_state, > + old_conn_state); > > if (INTEL_GEN(dev_priv) >= 11) > icl_unmap_plls_to_ports(encoder); > @@ -3502,7 +3512,8 @@ static void intel_ddi_post_disable(struct > intel_encoder *encoder, > intel_tc_port_put_link(dig_port); > } > > -void intel_ddi_fdi_post_disable(struct intel_encoder *encoder, > +void intel_ddi_fdi_post_disable(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *old_crtc_state, > const struct drm_connector_state > *old_conn_state) > { > @@ -3536,7 +3547,8 @@ void intel_ddi_fdi_post_disable(struct > intel_encoder *encoder, > intel_de_write(dev_priv, FDI_RX_CTL(PIPE_A), val); > } > > -static void intel_enable_ddi_dp(struct intel_encoder *encoder, > +static void intel_enable_ddi_dp(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *crtc_state, > const struct drm_connector_state > *conn_state) > { > @@ -3577,7 +3589,8 @@ gen9_chicken_trans_reg_by_port(struct > drm_i915_private *dev_priv, > return CHICKEN_TRANS(trans[port]); > } > > -static void intel_enable_ddi_hdmi(struct intel_encoder *encoder, > +static void intel_enable_ddi_hdmi(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *crtc_state, > const struct drm_connector_state > *conn_state) > { > @@ -3639,7 +3652,8 @@ static void intel_enable_ddi_hdmi(struct > intel_encoder *encoder, > intel_audio_codec_enable(encoder, crtc_state, > conn_state); > } > > -static void intel_enable_ddi(struct intel_encoder *encoder, > +static void intel_enable_ddi(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state *crtc_state, > const struct drm_connector_state > *conn_state) > { > @@ -3650,9 +3664,9 @@ static void intel_enable_ddi(struct > intel_encoder *encoder, > intel_crtc_vblank_on(crtc_state); > > if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_HDMI)) > - intel_enable_ddi_hdmi(encoder, crtc_state, conn_state); > + intel_enable_ddi_hdmi(state, encoder, crtc_state, > conn_state); > else > - intel_enable_ddi_dp(encoder, crtc_state, conn_state); > + intel_enable_ddi_dp(state, encoder, crtc_state, > conn_state); > > /* Enable hdcp if it's desired */ > if (conn_state->content_protection == > @@ -3662,7 +3676,8 @@ static void intel_enable_ddi(struct > intel_encoder *encoder, > (u8)conn_state->hdcp_content_type); > } > > -static void intel_disable_ddi_dp(struct intel_encoder *encoder, > +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 drm_connector_state > *old_conn_state) > { > @@ -3682,7 +3697,8 @@ static void intel_disable_ddi_dp(struct > intel_encoder *encoder, > false); > } > > -static void intel_disable_ddi_hdmi(struct intel_encoder *encoder, > +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 drm_connector_state > *old_conn_state) > { > @@ -3698,19 +3714,23 @@ static void intel_disable_ddi_hdmi(struct > intel_encoder *encoder, > connector->base.id, connector->name); > } > > -static void intel_disable_ddi(struct intel_encoder *encoder, > +static void intel_disable_ddi(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *old_crtc_state, > const struct drm_connector_state > *old_conn_state) > { > 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(encoder, old_crtc_state, > old_conn_state); > + intel_disable_ddi_hdmi(state, encoder, old_crtc_state, > + old_conn_state); > else > - intel_disable_ddi_dp(encoder, old_crtc_state, > old_conn_state); > + intel_disable_ddi_dp(state, encoder, old_crtc_state, > + old_conn_state); > } > > -static void intel_ddi_update_pipe_dp(struct intel_encoder *encoder, > +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 drm_connector_state > *conn_state) > { > @@ -3721,18 +3741,20 @@ static void intel_ddi_update_pipe_dp(struct > intel_encoder *encoder, > intel_psr_update(intel_dp, crtc_state); > intel_edp_drrs_enable(intel_dp, crtc_state); > > - intel_panel_update_backlight(encoder, crtc_state, conn_state); > + intel_panel_update_backlight(state, encoder, crtc_state, > conn_state); > } > > -static void intel_ddi_update_pipe(struct intel_encoder *encoder, > +static void intel_ddi_update_pipe(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *crtc_state, > const struct drm_connector_state > *conn_state) > { > > if (!intel_crtc_has_type(crtc_state, INTEL_OUTPUT_HDMI)) > - intel_ddi_update_pipe_dp(encoder, crtc_state, > conn_state); > + intel_ddi_update_pipe_dp(state, encoder, crtc_state, > + conn_state); > > - intel_hdcp_update_pipe(encoder, crtc_state, conn_state); > + intel_hdcp_update_pipe(state, encoder, crtc_state, conn_state); > } > > static void > @@ -3761,7 +3783,8 @@ intel_ddi_update_complete(struct > intel_atomic_state *state, > } > > static void > -intel_ddi_pre_pll_enable(struct intel_encoder *encoder, > +intel_ddi_pre_pll_enable(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state *crtc_state, > const struct drm_connector_state *conn_state) > { > diff --git a/drivers/gpu/drm/i915/display/intel_ddi.h > b/drivers/gpu/drm/i915/display/intel_ddi.h > index 55fd72b901fe..de4cd877c002 100644 > --- a/drivers/gpu/drm/i915/display/intel_ddi.h > +++ b/drivers/gpu/drm/i915/display/intel_ddi.h > @@ -17,7 +17,8 @@ struct intel_dp; > struct intel_dpll_hw_state; > struct intel_encoder; > > -void intel_ddi_fdi_post_disable(struct intel_encoder *intel_encoder, > +void intel_ddi_fdi_post_disable(struct intel_atomic_state *state, > + struct intel_encoder *intel_encoder, > const struct intel_crtc_state > *old_crtc_state, > const struct drm_connector_state > *old_conn_state); > void hsw_fdi_link_train(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 3926ac8f1f10..84e59f6ab8e4 100644 > --- a/drivers/gpu/drm/i915/display/intel_display.c > +++ b/drivers/gpu/drm/i915/display/intel_display.c > @@ -6689,7 +6689,8 @@ static void > intel_encoders_pre_pll_enable(struct intel_atomic_state *state, > continue; > > if (encoder->pre_pll_enable) > - encoder->pre_pll_enable(encoder, crtc_state, > conn_state); > + encoder->pre_pll_enable(state, encoder, > + crtc_state, > conn_state); > } > } > > @@ -6710,7 +6711,8 @@ static void intel_encoders_pre_enable(struct > intel_atomic_state *state, > continue; > > if (encoder->pre_enable) > - encoder->pre_enable(encoder, crtc_state, > conn_state); > + encoder->pre_enable(state, encoder, > + crtc_state, conn_state); > } > } > > @@ -6731,7 +6733,8 @@ static void intel_encoders_enable(struct > intel_atomic_state *state, > continue; > > if (encoder->enable) > - encoder->enable(encoder, crtc_state, > conn_state); > + encoder->enable(state, encoder, > + crtc_state, conn_state); > intel_opregion_notify_encoder(encoder, true); > } > } > @@ -6754,7 +6757,8 @@ static void intel_encoders_disable(struct > intel_atomic_state *state, > > intel_opregion_notify_encoder(encoder, false); > if (encoder->disable) > - encoder->disable(encoder, old_crtc_state, > old_conn_state); > + encoder->disable(state, encoder, > + old_crtc_state, > old_conn_state); > } > } > > @@ -6775,7 +6779,8 @@ static void intel_encoders_post_disable(struct > intel_atomic_state *state, > continue; > > if (encoder->post_disable) > - encoder->post_disable(encoder, old_crtc_state, > old_conn_state); > + encoder->post_disable(state, encoder, > + old_crtc_state, > old_conn_state); > } > } > > @@ -6796,7 +6801,8 @@ static void > intel_encoders_post_pll_disable(struct intel_atomic_state *state, > continue; > > if (encoder->post_pll_disable) > - encoder->post_pll_disable(encoder, > old_crtc_state, old_conn_state); > + encoder->post_pll_disable(state, encoder, > + old_crtc_state, > old_conn_state); > } > } > > @@ -6817,7 +6823,8 @@ static void intel_encoders_update_pipe(struct > intel_atomic_state *state, > continue; > > if (encoder->update_pipe) > - encoder->update_pipe(encoder, crtc_state, > conn_state); > + encoder->update_pipe(state, encoder, > + crtc_state, conn_state); > } > } > > @@ -18133,11 +18140,12 @@ static void intel_sanitize_encoder(struct > intel_encoder *encoder) > best_encoder = connector->base.state- > >best_encoder; > connector->base.state->best_encoder = &encoder- > >base; > > + /* FIXME NULL atomic state passed! */ > if (encoder->disable) > - encoder->disable(encoder, crtc_state, > + encoder->disable(NULL, encoder, > crtc_state, > connector- > >base.state); > if (encoder->post_disable) > - encoder->post_disable(encoder, > crtc_state, > + encoder->post_disable(NULL, encoder, > crtc_state, > connector- > >base.state); > > connector->base.state->best_encoder = > best_encoder; > diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h > b/drivers/gpu/drm/i915/display/intel_display_types.h > index 5e00e611f077..ad39386231d5 100644 > --- a/drivers/gpu/drm/i915/display/intel_display_types.h > +++ b/drivers/gpu/drm/i915/display/intel_display_types.h > @@ -146,28 +146,35 @@ struct intel_encoder { > void (*update_prepare)(struct intel_atomic_state *, > struct intel_encoder *, > struct intel_crtc *); > - void (*pre_pll_enable)(struct intel_encoder *, > + void (*pre_pll_enable)(struct intel_atomic_state *, > + struct intel_encoder *, > const struct intel_crtc_state *, > const struct drm_connector_state *); > - void (*pre_enable)(struct intel_encoder *, > + void (*pre_enable)(struct intel_atomic_state *, > + struct intel_encoder *, > const struct intel_crtc_state *, > const struct drm_connector_state *); > - void (*enable)(struct intel_encoder *, > + void (*enable)(struct intel_atomic_state *, > + struct intel_encoder *, > const struct intel_crtc_state *, > const struct drm_connector_state *); > void (*update_complete)(struct intel_atomic_state *, > struct intel_encoder *, > struct intel_crtc *); > - void (*disable)(struct intel_encoder *, > + void (*disable)(struct intel_atomic_state *, > + struct intel_encoder *, > const struct intel_crtc_state *, > const struct drm_connector_state *); > - void (*post_disable)(struct intel_encoder *, > + void (*post_disable)(struct intel_atomic_state *, > + struct intel_encoder *, > const struct intel_crtc_state *, > const struct drm_connector_state *); > - void (*post_pll_disable)(struct intel_encoder *, > + void (*post_pll_disable)(struct intel_atomic_state *, > + struct intel_encoder *, > const struct intel_crtc_state *, > const struct drm_connector_state *); > - void (*update_pipe)(struct intel_encoder *, > + void (*update_pipe)(struct intel_atomic_state *, > + struct intel_encoder *, > const struct intel_crtc_state *, > const struct drm_connector_state *); > /* Read out the current hw state of this connector, returning > true if > diff --git a/drivers/gpu/drm/i915/display/intel_dp.c > b/drivers/gpu/drm/i915/display/intel_dp.c > index 89d54f5fe60b..d4c17a5e9be2 100644 > --- a/drivers/gpu/drm/i915/display/intel_dp.c > +++ b/drivers/gpu/drm/i915/display/intel_dp.c > @@ -3393,7 +3393,8 @@ static void intel_dp_get_config(struct > intel_encoder *encoder, > } > } > > -static void intel_disable_dp(struct intel_encoder *encoder, > +static void intel_disable_dp(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *old_crtc_state, > const struct drm_connector_state > *old_conn_state) > { > @@ -3413,21 +3414,24 @@ static void intel_disable_dp(struct > intel_encoder *encoder, > intel_edp_panel_off(intel_dp); > } > > -static void g4x_disable_dp(struct intel_encoder *encoder, > +static void g4x_disable_dp(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *old_crtc_state, > const struct drm_connector_state > *old_conn_state) > { > - intel_disable_dp(encoder, old_crtc_state, old_conn_state); > + intel_disable_dp(state, encoder, old_crtc_state, > old_conn_state); > } > > -static void vlv_disable_dp(struct intel_encoder *encoder, > +static void vlv_disable_dp(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *old_crtc_state, > const struct drm_connector_state > *old_conn_state) > { > - intel_disable_dp(encoder, old_crtc_state, old_conn_state); > + intel_disable_dp(state, encoder, old_crtc_state, > old_conn_state); > } > > -static void g4x_post_disable_dp(struct intel_encoder *encoder, > +static void g4x_post_disable_dp(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *old_crtc_state, > const struct drm_connector_state > *old_conn_state) > { > @@ -3447,14 +3451,16 @@ static void g4x_post_disable_dp(struct > intel_encoder *encoder, > ilk_edp_pll_off(intel_dp, old_crtc_state); > } > > -static void vlv_post_disable_dp(struct intel_encoder *encoder, > +static void vlv_post_disable_dp(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *old_crtc_state, > const struct drm_connector_state > *old_conn_state) > { > intel_dp_link_down(encoder, old_crtc_state); > } > > -static void chv_post_disable_dp(struct intel_encoder *encoder, > +static void chv_post_disable_dp(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *old_crtc_state, > const struct drm_connector_state > *old_conn_state) > { > @@ -3580,7 +3586,8 @@ static void intel_dp_enable_port(struct > intel_dp *intel_dp, > intel_de_posting_read(dev_priv, intel_dp->output_reg); > } > > -static void intel_enable_dp(struct intel_encoder *encoder, > +static void intel_enable_dp(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state *pipe_config, > const struct drm_connector_state > *conn_state) > { > @@ -3626,22 +3633,25 @@ static void intel_enable_dp(struct > intel_encoder *encoder, > } > } > > -static void g4x_enable_dp(struct intel_encoder *encoder, > +static void g4x_enable_dp(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state *pipe_config, > const struct drm_connector_state *conn_state) > { > - intel_enable_dp(encoder, pipe_config, conn_state); > + intel_enable_dp(state, encoder, pipe_config, conn_state); > intel_edp_backlight_on(pipe_config, conn_state); > } > > -static void vlv_enable_dp(struct intel_encoder *encoder, > +static void vlv_enable_dp(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state *pipe_config, > const struct drm_connector_state *conn_state) > { > intel_edp_backlight_on(pipe_config, conn_state); > } > > -static void g4x_pre_enable_dp(struct intel_encoder *encoder, > +static void g4x_pre_enable_dp(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *pipe_config, > const struct drm_connector_state > *conn_state) > { > @@ -3761,16 +3771,18 @@ static void > vlv_init_panel_power_sequencer(struct intel_encoder *encoder, > intel_dp_init_panel_power_sequencer_registers(intel_dp, true); > } > > -static void vlv_pre_enable_dp(struct intel_encoder *encoder, > +static void vlv_pre_enable_dp(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *pipe_config, > const struct drm_connector_state > *conn_state) > { > vlv_phy_pre_encoder_enable(encoder, pipe_config); > > - intel_enable_dp(encoder, pipe_config, conn_state); > + intel_enable_dp(state, encoder, pipe_config, conn_state); > } > > -static void vlv_dp_pre_pll_enable(struct intel_encoder *encoder, > +static void vlv_dp_pre_pll_enable(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *pipe_config, > const struct drm_connector_state > *conn_state) > { > @@ -3779,19 +3791,21 @@ static void vlv_dp_pre_pll_enable(struct > intel_encoder *encoder, > vlv_phy_pre_pll_enable(encoder, pipe_config); > } > > -static void chv_pre_enable_dp(struct intel_encoder *encoder, > +static void chv_pre_enable_dp(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *pipe_config, > const struct drm_connector_state > *conn_state) > { > chv_phy_pre_encoder_enable(encoder, pipe_config); > > - intel_enable_dp(encoder, pipe_config, conn_state); > + intel_enable_dp(state, encoder, pipe_config, conn_state); > > /* Second common lane will stay alive on its own now */ > chv_phy_release_cl2_override(encoder); > } > > -static void chv_dp_pre_pll_enable(struct intel_encoder *encoder, > +static void chv_dp_pre_pll_enable(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *pipe_config, > const struct drm_connector_state > *conn_state) > { > @@ -3800,7 +3814,8 @@ static void chv_dp_pre_pll_enable(struct > intel_encoder *encoder, > chv_phy_pre_pll_enable(encoder, pipe_config); > } > > -static void chv_dp_post_pll_disable(struct intel_encoder *encoder, > +static void chv_dp_post_pll_disable(struct intel_atomic_state > *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *old_crtc_state, > const struct drm_connector_state > *old_conn_state) > { > diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c > b/drivers/gpu/drm/i915/display/intel_dp_mst.c > index b9afc1135b9b..5f54cc2d6b40 100644 > --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c > +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c > @@ -316,7 +316,8 @@ intel_dp_mst_atomic_check(struct drm_connector > *connector, > return ret; > } > > -static void intel_mst_disable_dp(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 drm_connector_state > *old_conn_state) > { > @@ -340,7 +341,8 @@ static void intel_mst_disable_dp(struct > intel_encoder *encoder, > old_crtc_state, > old_conn_state); > } > > -static void intel_mst_post_disable_dp(struct intel_encoder *encoder, > +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 drm_connector_state > *old_conn_state) > { > @@ -405,13 +407,14 @@ static void intel_mst_post_disable_dp(struct > intel_encoder *encoder, > > intel_mst->connector = NULL; > if (last_mst_stream) > - intel_dig_port->base.post_disable(&intel_dig_port- > >base, > + intel_dig_port->base.post_disable(state, > &intel_dig_port->base, > old_crtc_state, > NULL); > > DRM_DEBUG_KMS("active links %d\n", intel_dp->active_mst_links); > } > > -static void intel_mst_pre_pll_enable_dp(struct intel_encoder > *encoder, > +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 > drm_connector_state *conn_state) > { > @@ -420,11 +423,12 @@ static void intel_mst_pre_pll_enable_dp(struct > intel_encoder *encoder, > struct intel_dp *intel_dp = &intel_dig_port->dp; > > if (intel_dp->active_mst_links == 0) > - intel_dig_port->base.pre_pll_enable(&intel_dig_port- > >base, > + intel_dig_port->base.pre_pll_enable(state, > &intel_dig_port->base, > pipe_config, NULL); > } > > -static void intel_mst_pre_enable_dp(struct intel_encoder *encoder, > +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 drm_connector_state > *conn_state) > { > @@ -456,7 +460,7 @@ static void intel_mst_pre_enable_dp(struct > intel_encoder *encoder, > drm_dp_send_power_updown_phy(&intel_dp->mst_mgr, connector- > >port, true); > > if (first_mst_stream) > - intel_dig_port->base.pre_enable(&intel_dig_port->base, > + intel_dig_port->base.pre_enable(state, &intel_dig_port- > >base, > pipe_config, NULL); > > ret = drm_dp_mst_allocate_vcpi(&intel_dp->mst_mgr, > @@ -487,7 +491,8 @@ static void intel_mst_pre_enable_dp(struct > intel_encoder *encoder, > intel_dp_set_m_n(pipe_config, M1_N1); > } > > -static void intel_mst_enable_dp(struct intel_encoder *encoder, > +static void intel_mst_enable_dp(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *pipe_config, > const struct drm_connector_state > *conn_state) > { > diff --git a/drivers/gpu/drm/i915/display/intel_dvo.c > b/drivers/gpu/drm/i915/display/intel_dvo.c > index 341d5ce8b062..5cd09034519b 100644 > --- a/drivers/gpu/drm/i915/display/intel_dvo.c > +++ b/drivers/gpu/drm/i915/display/intel_dvo.c > @@ -183,7 +183,8 @@ static void intel_dvo_get_config(struct > intel_encoder *encoder, > pipe_config->hw.adjusted_mode.crtc_clock = pipe_config- > >port_clock; > } > > -static void intel_disable_dvo(struct intel_encoder *encoder, > +static void intel_disable_dvo(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *old_crtc_state, > const struct drm_connector_state > *old_conn_state) > { > @@ -197,7 +198,8 @@ static void intel_disable_dvo(struct > intel_encoder *encoder, > intel_de_read(dev_priv, dvo_reg); > } > > -static void intel_enable_dvo(struct intel_encoder *encoder, > +static void intel_enable_dvo(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *pipe_config, > const struct drm_connector_state > *conn_state) > { > @@ -272,7 +274,8 @@ static int intel_dvo_compute_config(struct > intel_encoder *encoder, > return 0; > } > > -static void intel_dvo_pre_enable(struct intel_encoder *encoder, > +static void intel_dvo_pre_enable(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *pipe_config, > const struct drm_connector_state > *conn_state) > { > diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.c > b/drivers/gpu/drm/i915/display/intel_hdcp.c > index ee0f27ea2810..0ed9c5d33d75 100644 > --- a/drivers/gpu/drm/i915/display/intel_hdcp.c > +++ b/drivers/gpu/drm/i915/display/intel_hdcp.c > @@ -2075,7 +2075,8 @@ int intel_hdcp_disable(struct intel_connector > *connector) > return ret; > } > > -void intel_hdcp_update_pipe(struct intel_encoder *encoder, > +void intel_hdcp_update_pipe(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state *crtc_state, > const struct drm_connector_state > *conn_state) > { > diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.h > b/drivers/gpu/drm/i915/display/intel_hdcp.h > index 7c12ad609b1f..86bbaec120cc 100644 > --- a/drivers/gpu/drm/i915/display/intel_hdcp.h > +++ b/drivers/gpu/drm/i915/display/intel_hdcp.h > @@ -11,6 +11,7 @@ > struct drm_connector; > struct drm_connector_state; > struct drm_i915_private; > +struct intel_atomic_state; > struct intel_connector; > struct intel_crtc_state; > struct intel_encoder; > @@ -26,7 +27,8 @@ int intel_hdcp_init(struct intel_connector > *connector, > int intel_hdcp_enable(struct intel_connector *connector, > enum transcoder cpu_transcoder, u8 content_type); > int intel_hdcp_disable(struct intel_connector *connector); > -void intel_hdcp_update_pipe(struct intel_encoder *encoder, > +void intel_hdcp_update_pipe(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state *crtc_state, > const struct drm_connector_state > *conn_state); > bool is_hdcp_supported(struct drm_i915_private *dev_priv, enum port > port); > diff --git a/drivers/gpu/drm/i915/display/intel_hdmi.c > b/drivers/gpu/drm/i915/display/intel_hdmi.c > index 39930232b253..484e067b100b 100644 > --- a/drivers/gpu/drm/i915/display/intel_hdmi.c > +++ b/drivers/gpu/drm/i915/display/intel_hdmi.c > @@ -1878,7 +1878,8 @@ static void intel_enable_hdmi_audio(struct > intel_encoder *encoder, > intel_audio_codec_enable(encoder, pipe_config, conn_state); > } > > -static void g4x_enable_hdmi(struct intel_encoder *encoder, > +static void g4x_enable_hdmi(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state *pipe_config, > const struct drm_connector_state > *conn_state) > { > @@ -1900,7 +1901,8 @@ static void g4x_enable_hdmi(struct > intel_encoder *encoder, > intel_enable_hdmi_audio(encoder, pipe_config, > conn_state); > } > > -static void ibx_enable_hdmi(struct intel_encoder *encoder, > +static void ibx_enable_hdmi(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state *pipe_config, > const struct drm_connector_state > *conn_state) > { > @@ -1951,7 +1953,8 @@ static void ibx_enable_hdmi(struct > intel_encoder *encoder, > intel_enable_hdmi_audio(encoder, pipe_config, > conn_state); > } > > -static void cpt_enable_hdmi(struct intel_encoder *encoder, > +static void cpt_enable_hdmi(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state *pipe_config, > const struct drm_connector_state > *conn_state) > { > @@ -2004,13 +2007,15 @@ static void cpt_enable_hdmi(struct > intel_encoder *encoder, > intel_enable_hdmi_audio(encoder, pipe_config, > conn_state); > } > > -static void vlv_enable_hdmi(struct intel_encoder *encoder, > +static void vlv_enable_hdmi(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state *pipe_config, > const struct drm_connector_state > *conn_state) > { > } > > -static void intel_disable_hdmi(struct intel_encoder *encoder, > +static void intel_disable_hdmi(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *old_crtc_state, > const struct drm_connector_state > *old_conn_state) > { > @@ -2068,7 +2073,8 @@ static void intel_disable_hdmi(struct > intel_encoder *encoder, > intel_dp_dual_mode_set_tmds_output(intel_hdmi, false); > } > > -static void g4x_disable_hdmi(struct intel_encoder *encoder, > +static void g4x_disable_hdmi(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *old_crtc_state, > const struct drm_connector_state > *old_conn_state) > { > @@ -2076,10 +2082,11 @@ static void g4x_disable_hdmi(struct > intel_encoder *encoder, > intel_audio_codec_disable(encoder, > old_crtc_state, > old_conn_state); > > - intel_disable_hdmi(encoder, old_crtc_state, old_conn_state); > + intel_disable_hdmi(state, encoder, old_crtc_state, > old_conn_state); > } > > -static void pch_disable_hdmi(struct intel_encoder *encoder, > +static void pch_disable_hdmi(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *old_crtc_state, > const struct drm_connector_state > *old_conn_state) > { > @@ -2088,11 +2095,12 @@ static void pch_disable_hdmi(struct > intel_encoder *encoder, > old_crtc_state, > old_conn_state); > } > > -static void pch_post_disable_hdmi(struct intel_encoder *encoder, > +static void pch_post_disable_hdmi(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *old_crtc_state, > const struct drm_connector_state > *old_conn_state) > { > - intel_disable_hdmi(encoder, old_crtc_state, old_conn_state); > + intel_disable_hdmi(state, encoder, old_crtc_state, > old_conn_state); > } > > static int intel_hdmi_source_max_tmds_clock(struct intel_encoder > *encoder) > @@ -2474,7 +2482,8 @@ int intel_hdmi_compute_config(struct > intel_encoder *encoder, > } > } > > - intel_hdmi_compute_gcp_infoframe(encoder, pipe_config, > conn_state); > + intel_hdmi_compute_gcp_infoframe(encoder, pipe_config, > + conn_state); > > if (!intel_hdmi_compute_avi_infoframe(encoder, pipe_config, > conn_state)) { > DRM_DEBUG_KMS("bad AVI infoframe\n"); > @@ -2664,7 +2673,8 @@ static int intel_hdmi_get_modes(struct > drm_connector *connector) > return intel_connector_update_modes(connector, edid); > } > > -static void intel_hdmi_pre_enable(struct intel_encoder *encoder, > +static void intel_hdmi_pre_enable(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *pipe_config, > const struct drm_connector_state > *conn_state) > { > @@ -2678,7 +2688,8 @@ static void intel_hdmi_pre_enable(struct > intel_encoder *encoder, > pipe_config, conn_state); > } > > -static void vlv_hdmi_pre_enable(struct intel_encoder *encoder, > +static void vlv_hdmi_pre_enable(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *pipe_config, > const struct drm_connector_state > *conn_state) > { > @@ -2695,12 +2706,13 @@ static void vlv_hdmi_pre_enable(struct > intel_encoder *encoder, > pipe_config->has_infoframe, > pipe_config, conn_state); > > - g4x_enable_hdmi(encoder, pipe_config, conn_state); > + g4x_enable_hdmi(state, encoder, pipe_config, conn_state); > > vlv_wait_port_ready(dev_priv, dport, 0x0); > } > > -static void vlv_hdmi_pre_pll_enable(struct intel_encoder *encoder, > +static void vlv_hdmi_pre_pll_enable(struct intel_atomic_state > *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *pipe_config, > const struct drm_connector_state > *conn_state) > { > @@ -2709,7 +2721,8 @@ static void vlv_hdmi_pre_pll_enable(struct > intel_encoder *encoder, > vlv_phy_pre_pll_enable(encoder, pipe_config); > } > > -static void chv_hdmi_pre_pll_enable(struct intel_encoder *encoder, > +static void chv_hdmi_pre_pll_enable(struct intel_atomic_state > *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *pipe_config, > const struct drm_connector_state > *conn_state) > { > @@ -2718,14 +2731,16 @@ static void chv_hdmi_pre_pll_enable(struct > intel_encoder *encoder, > chv_phy_pre_pll_enable(encoder, pipe_config); > } > > -static void chv_hdmi_post_pll_disable(struct intel_encoder *encoder, > +static void chv_hdmi_post_pll_disable(struct intel_atomic_state > *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *old_crtc_state, > const struct drm_connector_state > *old_conn_state) > { > chv_phy_post_pll_disable(encoder, old_crtc_state); > } > > -static void vlv_hdmi_post_disable(struct intel_encoder *encoder, > +static void vlv_hdmi_post_disable(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *old_crtc_state, > const struct drm_connector_state > *old_conn_state) > { > @@ -2733,7 +2748,8 @@ static void vlv_hdmi_post_disable(struct > intel_encoder *encoder, > vlv_phy_reset_lanes(encoder, old_crtc_state); > } > > -static void chv_hdmi_post_disable(struct intel_encoder *encoder, > +static void chv_hdmi_post_disable(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *old_crtc_state, > const struct drm_connector_state > *old_conn_state) > { > @@ -2748,7 +2764,8 @@ static void chv_hdmi_post_disable(struct > intel_encoder *encoder, > vlv_dpio_put(dev_priv); > } > > -static void chv_hdmi_pre_enable(struct intel_encoder *encoder, > +static void chv_hdmi_pre_enable(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *pipe_config, > const struct drm_connector_state > *conn_state) > { > @@ -2766,7 +2783,7 @@ static void chv_hdmi_pre_enable(struct > intel_encoder *encoder, > pipe_config->has_infoframe, > pipe_config, conn_state); > > - g4x_enable_hdmi(encoder, pipe_config, conn_state); > + g4x_enable_hdmi(state, encoder, pipe_config, conn_state); > > vlv_wait_port_ready(dev_priv, dport, 0x0); > > diff --git a/drivers/gpu/drm/i915/display/intel_lvds.c > b/drivers/gpu/drm/i915/display/intel_lvds.c > index 9a067effcfa0..fe591f82163e 100644 > --- a/drivers/gpu/drm/i915/display/intel_lvds.c > +++ b/drivers/gpu/drm/i915/display/intel_lvds.c > @@ -220,7 +220,8 @@ static void intel_lvds_pps_init_hw(struct > drm_i915_private *dev_priv, > REG_FIELD_PREP(PP_REFERENCE_DIVIDER_MASK, pps- > >divider) | REG_FIELD_PREP(PANEL_POWER_CYCLE_DELAY_MASK, > DIV_ROUND_UP(pps->t4, 1000) + 1)); > } > > -static void intel_pre_enable_lvds(struct intel_encoder *encoder, > +static void intel_pre_enable_lvds(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *pipe_config, > const struct drm_connector_state > *conn_state) > { > @@ -301,7 +302,8 @@ static void intel_pre_enable_lvds(struct > intel_encoder *encoder, > /* > * Sets the power state for the panel. > */ > -static void intel_enable_lvds(struct intel_encoder *encoder, > +static void intel_enable_lvds(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *pipe_config, > const struct drm_connector_state > *conn_state) > { > @@ -323,7 +325,8 @@ static void intel_enable_lvds(struct > intel_encoder *encoder, > intel_panel_enable_backlight(pipe_config, conn_state); > } > > -static void intel_disable_lvds(struct intel_encoder *encoder, > +static void intel_disable_lvds(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *old_crtc_state, > const struct drm_connector_state > *old_conn_state) > { > @@ -341,28 +344,31 @@ static void intel_disable_lvds(struct > intel_encoder *encoder, > intel_de_posting_read(dev_priv, lvds_encoder->reg); > } > > -static void gmch_disable_lvds(struct intel_encoder *encoder, > +static void gmch_disable_lvds(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *old_crtc_state, > const struct drm_connector_state > *old_conn_state) > > { > intel_panel_disable_backlight(old_conn_state); > > - intel_disable_lvds(encoder, old_crtc_state, old_conn_state); > + intel_disable_lvds(state, encoder, old_crtc_state, > old_conn_state); > } > > -static void pch_disable_lvds(struct intel_encoder *encoder, > +static void pch_disable_lvds(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *old_crtc_state, > const struct drm_connector_state > *old_conn_state) > { > intel_panel_disable_backlight(old_conn_state); > } > > -static void pch_post_disable_lvds(struct intel_encoder *encoder, > +static void pch_post_disable_lvds(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *old_crtc_state, > const struct drm_connector_state > *old_conn_state) > { > - intel_disable_lvds(encoder, old_crtc_state, old_conn_state); > + intel_disable_lvds(state, encoder, old_crtc_state, > old_conn_state); > } > > static enum drm_mode_status > diff --git a/drivers/gpu/drm/i915/display/intel_panel.c > b/drivers/gpu/drm/i915/display/intel_panel.c > index 276f43870802..f8ccfe67429e 100644 > --- a/drivers/gpu/drm/i915/display/intel_panel.c > +++ b/drivers/gpu/drm/i915/display/intel_panel.c > @@ -1931,7 +1931,8 @@ static int pwm_setup_backlight(struct > intel_connector *connector, > return 0; > } > > -void intel_panel_update_backlight(struct intel_encoder *encoder, > +void intel_panel_update_backlight(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *crtc_state, > const struct drm_connector_state > *conn_state) > { > diff --git a/drivers/gpu/drm/i915/display/intel_panel.h > b/drivers/gpu/drm/i915/display/intel_panel.h > index cedeea443336..11f2f6b628d8 100644 > --- a/drivers/gpu/drm/i915/display/intel_panel.h > +++ b/drivers/gpu/drm/i915/display/intel_panel.h > @@ -37,7 +37,8 @@ int intel_panel_setup_backlight(struct > drm_connector *connector, > enum pipe pipe); > void intel_panel_enable_backlight(const struct intel_crtc_state > *crtc_state, > const struct drm_connector_state > *conn_state); > -void intel_panel_update_backlight(struct intel_encoder *encoder, > +void intel_panel_update_backlight(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *crtc_state, > const struct drm_connector_state > *conn_state); > void intel_panel_disable_backlight(const struct drm_connector_state > *old_conn_state); > diff --git a/drivers/gpu/drm/i915/display/intel_sdvo.c > b/drivers/gpu/drm/i915/display/intel_sdvo.c > index 637d8fe2f8c2..e6306cbb7a3a 100644 > --- a/drivers/gpu/drm/i915/display/intel_sdvo.c > +++ b/drivers/gpu/drm/i915/display/intel_sdvo.c > @@ -1430,7 +1430,8 @@ static void intel_sdvo_update_props(struct > intel_sdvo *intel_sdvo, > #undef UPDATE_PROPERTY > } > > -static void intel_sdvo_pre_enable(struct intel_encoder > *intel_encoder, > +static void intel_sdvo_pre_enable(struct intel_atomic_state *state, > + struct intel_encoder *intel_encoder, > const struct intel_crtc_state > *crtc_state, > const struct drm_connector_state > *conn_state) > { > @@ -1727,7 +1728,8 @@ static void intel_sdvo_enable_audio(struct > intel_sdvo *intel_sdvo, > SDVO_AUDIO_PRESENCE_DETECT); > } > > -static void intel_disable_sdvo(struct intel_encoder *encoder, > +static void intel_disable_sdvo(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *old_crtc_state, > const struct drm_connector_state > *conn_state) > { > @@ -1775,20 +1777,23 @@ static void intel_disable_sdvo(struct > intel_encoder *encoder, > } > } > > -static void pch_disable_sdvo(struct intel_encoder *encoder, > +static void pch_disable_sdvo(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *old_crtc_state, > const struct drm_connector_state > *old_conn_state) > { > } > > -static void pch_post_disable_sdvo(struct intel_encoder *encoder, > +static void pch_post_disable_sdvo(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *old_crtc_state, > const struct drm_connector_state > *old_conn_state) > { > - intel_disable_sdvo(encoder, old_crtc_state, old_conn_state); > + intel_disable_sdvo(state, encoder, old_crtc_state, > old_conn_state); > } > > -static void intel_enable_sdvo(struct intel_encoder *encoder, > +static void intel_enable_sdvo(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *pipe_config, > const struct drm_connector_state > *conn_state) > { > diff --git a/drivers/gpu/drm/i915/display/intel_tv.c > b/drivers/gpu/drm/i915/display/intel_tv.c > index d2e3a3a323e9..b6003fc9e268 100644 > --- a/drivers/gpu/drm/i915/display/intel_tv.c > +++ b/drivers/gpu/drm/i915/display/intel_tv.c > @@ -914,7 +914,8 @@ intel_tv_get_hw_state(struct intel_encoder > *encoder, enum pipe *pipe) > } > > static void > -intel_enable_tv(struct intel_encoder *encoder, > +intel_enable_tv(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state *pipe_config, > const struct drm_connector_state *conn_state) > { > @@ -930,7 +931,8 @@ intel_enable_tv(struct intel_encoder *encoder, > } > > static void > -intel_disable_tv(struct intel_encoder *encoder, > +intel_disable_tv(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state *old_crtc_state, > const struct drm_connector_state *old_conn_state) > { > @@ -1414,7 +1416,8 @@ static void set_color_conversion(struct > drm_i915_private *dev_priv, > (color_conversion->bv << 16) | color_conversion- > >av); > } > > -static void intel_tv_pre_enable(struct intel_encoder *encoder, > +static void intel_tv_pre_enable(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *pipe_config, > const struct drm_connector_state > *conn_state) > { > diff --git a/drivers/gpu/drm/i915/display/vlv_dsi.c > b/drivers/gpu/drm/i915/display/vlv_dsi.c > index f4c362dc6e15..a277d7d6b3bf 100644 > --- a/drivers/gpu/drm/i915/display/vlv_dsi.c > +++ b/drivers/gpu/drm/i915/display/vlv_dsi.c > @@ -759,7 +759,8 @@ static void intel_dsi_unprepare(struct > intel_encoder *encoder); > * DSI port enable has to be done before pipe and plane enable, so > we do it in > * the pre_enable hook instead of the enable hook. > */ > -static void intel_dsi_pre_enable(struct intel_encoder *encoder, > +static void intel_dsi_pre_enable(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *pipe_config, > const struct drm_connector_state > *conn_state) > { > @@ -858,7 +859,8 @@ static void intel_dsi_pre_enable(struct > intel_encoder *encoder, > intel_dsi_vbt_exec_sequence(intel_dsi, MIPI_SEQ_BACKLIGHT_ON); > } > > -static void bxt_dsi_enable(struct intel_encoder *encoder, > +static void bxt_dsi_enable(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state *crtc_state, > const struct drm_connector_state > *conn_state) > { > @@ -871,7 +873,8 @@ static void bxt_dsi_enable(struct intel_encoder > *encoder, > * DSI port disable has to be done after pipe and plane disable, so > we do it in > * the post_disable hook. > */ > -static void intel_dsi_disable(struct intel_encoder *encoder, > +static void intel_dsi_disable(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *old_crtc_state, > const struct drm_connector_state > *old_conn_state) > { > @@ -906,7 +909,8 @@ static void intel_dsi_clear_device_ready(struct > intel_encoder *encoder) > vlv_dsi_clear_device_ready(encoder); > } > > -static void intel_dsi_post_disable(struct intel_encoder *encoder, > +static void intel_dsi_post_disable(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > const struct intel_crtc_state > *old_crtc_state, > const struct drm_connector_state > *old_conn_state) > { _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx