[Intel-gfx] [PATCH 12/13] drm/i915: Pass atomic state to encoder hooks
Souza, Jose
jose.souza at intel.com
Thu Apr 2 01:18:21 UTC 2020
On Fri, 2020-03-13 at 18:48 +0200, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
>
> 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 at intel.com>
>
> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
> ---
> 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)
> {
More information about the Intel-gfx
mailing list