diff mbox series

[08/14] drm/i915/sdvo: convert intel_sdvo.[ch] to struct intel_display

Message ID 2e79909f8a060d7ff1744911f8da9300eb1f225c.1739378095.git.jani.nikula@intel.com (mailing list archive)
State New
Headers show
Series drm/i915/display: conversions to struct intel_display | expand

Commit Message

Jani Nikula Feb. 12, 2025, 4:36 p.m. UTC
Going forward, struct intel_display is the main display device data
pointer. Convert as much as possible of intel_sdvo.[ch] to struct
intel_display.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/display/g4x_hdmi.c       |   3 +-
 drivers/gpu/drm/i915/display/intel_display.c  |   6 +-
 .../gpu/drm/i915/display/intel_pch_display.c  |   2 +-
 drivers/gpu/drm/i915/display/intel_sdvo.c     | 281 +++++++++---------
 drivers/gpu/drm/i915/display/intel_sdvo.h     |  10 +-
 5 files changed, 150 insertions(+), 152 deletions(-)

Comments

Kandpal, Suraj Feb. 13, 2025, 9:13 a.m. UTC | #1
> -----Original Message-----
> From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of Jani
> Nikula
> Sent: Wednesday, February 12, 2025 10:07 PM
> To: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org
> Cc: Nikula, Jani <jani.nikula@intel.com>
> Subject: [PATCH 08/14] drm/i915/sdvo: convert intel_sdvo.[ch] to struct
> intel_display
> 
> Going forward, struct intel_display is the main display device data pointer.
> Convert as much as possible of intel_sdvo.[ch] to struct intel_display.
> 
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> ---
>  drivers/gpu/drm/i915/display/g4x_hdmi.c       |   3 +-
>  drivers/gpu/drm/i915/display/intel_display.c  |   6 +-
>  .../gpu/drm/i915/display/intel_pch_display.c  |   2 +-
>  drivers/gpu/drm/i915/display/intel_sdvo.c     | 281 +++++++++---------
>  drivers/gpu/drm/i915/display/intel_sdvo.h     |  10 +-
>  5 files changed, 150 insertions(+), 152 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/g4x_hdmi.c
> b/drivers/gpu/drm/i915/display/g4x_hdmi.c
> index 089f1a4d7720..5c5eb3d621c8 100644
> --- a/drivers/gpu/drm/i915/display/g4x_hdmi.c
> +++ b/drivers/gpu/drm/i915/display/g4x_hdmi.c
> @@ -67,7 +67,6 @@ static bool intel_hdmi_get_hw_state(struct
> intel_encoder *encoder,
>  				    enum pipe *pipe)
>  {
>  	struct intel_display *display = to_intel_display(encoder);
> -	struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
>  	struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder);
>  	intel_wakeref_t wakeref;
>  	bool ret;
> @@ -77,7 +76,7 @@ static bool intel_hdmi_get_hw_state(struct
> intel_encoder *encoder,
>  	if (!wakeref)
>  		return false;
> 
> -	ret = intel_sdvo_port_enabled(dev_priv, intel_hdmi->hdmi_reg,
> pipe);
> +	ret = intel_sdvo_port_enabled(display, intel_hdmi->hdmi_reg, pipe);
> 
>  	intel_display_power_put(display, encoder->power_domain,
> wakeref);
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c
> b/drivers/gpu/drm/i915/display/intel_display.c
> index 9bcbd52f23cf..e1186f46088d 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -8236,7 +8236,7 @@ void intel_setup_outputs(struct drm_i915_private
> *dev_priv)
> 
>  		if (intel_de_read(dev_priv, PCH_HDMIB) & SDVO_DETECTED)
> {
>  			/* PCH SDVOB multiplex with HDMIB */
> -			found = intel_sdvo_init(dev_priv, PCH_SDVOB,
> PORT_B);
> +			found = intel_sdvo_init(display, PCH_SDVOB,
> PORT_B);
>  			if (!found)
>  				g4x_hdmi_init(display, PCH_HDMIB,
> PORT_B);
>  			if (!found && (intel_de_read(dev_priv, PCH_DP_B) &
> DP_DETECTED)) @@ -8315,7 +8315,7 @@ void intel_setup_outputs(struct
> drm_i915_private *dev_priv)
> 
>  		if (intel_de_read(dev_priv, GEN3_SDVOB) &
> SDVO_DETECTED) {
>  			drm_dbg_kms(&dev_priv->drm, "probing SDVOB\n");
> -			found = intel_sdvo_init(dev_priv, GEN3_SDVOB,
> PORT_B);
> +			found = intel_sdvo_init(display, GEN3_SDVOB,
> PORT_B);
>  			if (!found && IS_G4X(dev_priv)) {
>  				drm_dbg_kms(&dev_priv->drm,
>  					    "probing HDMI on SDVOB\n");
> @@ -8330,7 +8330,7 @@ void intel_setup_outputs(struct drm_i915_private
> *dev_priv)
> 
>  		if (intel_de_read(dev_priv, GEN3_SDVOB) &
> SDVO_DETECTED) {
>  			drm_dbg_kms(&dev_priv->drm, "probing SDVOC\n");
> -			found = intel_sdvo_init(dev_priv, GEN3_SDVOC,
> PORT_C);
> +			found = intel_sdvo_init(display, GEN3_SDVOC,
> PORT_C);
>  		}
> 
>  		if (!found && (intel_de_read(dev_priv, GEN3_SDVOC) &
> SDVO_DETECTED)) { diff --git
> a/drivers/gpu/drm/i915/display/intel_pch_display.c
> b/drivers/gpu/drm/i915/display/intel_pch_display.c
> index 98a6b57ac956..1abe0a784570 100644
> --- a/drivers/gpu/drm/i915/display/intel_pch_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_pch_display.c
> @@ -65,7 +65,7 @@ static void assert_pch_hdmi_disabled(struct
> drm_i915_private *dev_priv,
>  	enum pipe port_pipe;
>  	bool state;
> 
> -	state = intel_sdvo_port_enabled(dev_priv, hdmi_reg, &port_pipe);
> +	state = intel_sdvo_port_enabled(display, hdmi_reg, &port_pipe);
> 
>  	INTEL_DISPLAY_STATE_WARN(display, state && port_pipe == pipe,
>  				 "PCH HDMI %c enabled on transcoder %c,
> should be disabled\n", diff --git a/drivers/gpu/drm/i915/display/intel_sdvo.c
> b/drivers/gpu/drm/i915/display/intel_sdvo.c
> index 46203d796fcc..1ae766212e8a 100644
> --- a/drivers/gpu/drm/i915/display/intel_sdvo.c
> +++ b/drivers/gpu/drm/i915/display/intel_sdvo.c
> @@ -213,29 +213,29 @@ intel_sdvo_create_enhance_property(struct
> intel_sdvo *intel_sdvo,
>   */
>  static void intel_sdvo_write_sdvox(struct intel_sdvo *intel_sdvo, u32 val)  {
> -	struct drm_device *dev = intel_sdvo->base.base.dev;
> -	struct drm_i915_private *dev_priv = to_i915(dev);
> +	struct intel_display *display = to_intel_display(&intel_sdvo->base);
> +	struct drm_i915_private *dev_priv = to_i915(display->drm);
>  	u32 bval = val, cval = val;
>  	int i;
> 
>  	if (HAS_PCH_SPLIT(dev_priv)) {
> -		intel_de_write(dev_priv, intel_sdvo->sdvo_reg, val);
> -		intel_de_posting_read(dev_priv, intel_sdvo->sdvo_reg);
> +		intel_de_write(display, intel_sdvo->sdvo_reg, val);
> +		intel_de_posting_read(display, intel_sdvo->sdvo_reg);
>  		/*
>  		 * HW workaround, need to write this twice for issue
>  		 * that may result in first write getting masked.
>  		 */
>  		if (HAS_PCH_IBX(dev_priv)) {
> -			intel_de_write(dev_priv, intel_sdvo->sdvo_reg, val);
> -			intel_de_posting_read(dev_priv, intel_sdvo-
> >sdvo_reg);
> +			intel_de_write(display, intel_sdvo->sdvo_reg, val);
> +			intel_de_posting_read(display, intel_sdvo-
> >sdvo_reg);
>  		}
>  		return;
>  	}
> 
>  	if (intel_sdvo->base.port == PORT_B)
> -		cval = intel_de_read(dev_priv, GEN3_SDVOC);
> +		cval = intel_de_read(display, GEN3_SDVOC);
>  	else
> -		bval = intel_de_read(dev_priv, GEN3_SDVOB);
> +		bval = intel_de_read(display, GEN3_SDVOB);
> 
>  	/*
>  	 * Write the registers twice for luck. Sometimes, @@ -243,17 +243,17
> @@ static void intel_sdvo_write_sdvox(struct intel_sdvo *intel_sdvo, u32
> val)
>  	 * The BIOS does this too. Yay, magic
>  	 */
>  	for (i = 0; i < 2; i++) {
> -		intel_de_write(dev_priv, GEN3_SDVOB, bval);
> -		intel_de_posting_read(dev_priv, GEN3_SDVOB);
> +		intel_de_write(display, GEN3_SDVOB, bval);
> +		intel_de_posting_read(display, GEN3_SDVOB);
> 
> -		intel_de_write(dev_priv, GEN3_SDVOC, cval);
> -		intel_de_posting_read(dev_priv, GEN3_SDVOC);
> +		intel_de_write(display, GEN3_SDVOC, cval);
> +		intel_de_posting_read(display, GEN3_SDVOC);
>  	}
>  }
> 
>  static bool intel_sdvo_read_byte(struct intel_sdvo *intel_sdvo, u8 addr, u8
> *ch)  {
> -	struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev);
> +	struct intel_display *display = to_intel_display(&intel_sdvo->base);
>  	struct i2c_msg msgs[] = {
>  		{
>  			.addr = intel_sdvo->target_addr,
> @@ -273,7 +273,7 @@ static bool intel_sdvo_read_byte(struct intel_sdvo
> *intel_sdvo, u8 addr, u8 *ch)
>  	if ((ret = i2c_transfer(intel_sdvo->i2c, msgs, 2)) == 2)
>  		return true;
> 
> -	drm_dbg_kms(&i915->drm, "i2c transfer returned %d\n", ret);
> +	drm_dbg_kms(display->drm, "i2c transfer returned %d\n", ret);
>  	return false;
>  }
> 
> @@ -415,7 +415,7 @@ static const char *sdvo_cmd_name(u8 cmd)  static
> void intel_sdvo_debug_write(struct intel_sdvo *intel_sdvo, u8 cmd,
>  				   const void *args, int args_len)
>  {
> -	struct drm_i915_private *dev_priv = to_i915(intel_sdvo-
> >base.base.dev);
> +	struct intel_display *display = to_intel_display(&intel_sdvo->base);
>  	const char *cmd_name;
>  	int i, pos = 0;
>  	char buffer[64];
> @@ -436,10 +436,10 @@ static void intel_sdvo_debug_write(struct
> intel_sdvo *intel_sdvo, u8 cmd,
>  	else
>  		BUF_PRINT("(%02X)", cmd);
> 
> -	drm_WARN_ON(&dev_priv->drm, pos >= sizeof(buffer) - 1);
> +	drm_WARN_ON(display->drm, pos >= sizeof(buffer) - 1);
>  #undef BUF_PRINT
> 
> -	drm_dbg_kms(&dev_priv->drm, "%s: W: %02X %s\n",
> SDVO_NAME(intel_sdvo),
> +	drm_dbg_kms(display->drm, "%s: W: %02X %s\n",
> SDVO_NAME(intel_sdvo),
>  		    cmd, buffer);
>  }
> 
> @@ -465,7 +465,7 @@ static bool __intel_sdvo_write_cmd(struct intel_sdvo
> *intel_sdvo, u8 cmd,
>  				   const void *args, int args_len,
>  				   bool unlocked)
>  {
> -	struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev);
> +	struct intel_display *display = to_intel_display(&intel_sdvo->base);
>  	u8 *buf, status;
>  	struct i2c_msg *msgs;
>  	int i, ret = true;
> @@ -515,13 +515,13 @@ static bool __intel_sdvo_write_cmd(struct
> intel_sdvo *intel_sdvo, u8 cmd,
>  	else
>  		ret = __i2c_transfer(intel_sdvo->i2c, msgs, i+3);
>  	if (ret < 0) {
> -		drm_dbg_kms(&i915->drm, "I2c transfer returned %d\n",
> ret);
> +		drm_dbg_kms(display->drm, "I2c transfer returned %d\n",
> ret);
>  		ret = false;
>  		goto out;
>  	}
>  	if (ret != i+3) {
>  		/* failure in I2C transfer */
> -		drm_dbg_kms(&i915->drm, "I2c transfer returned
> %d/%d\n", ret, i+3);
> +		drm_dbg_kms(display->drm, "I2c transfer returned
> %d/%d\n", ret, i +
> +3);
>  		ret = false;
>  	}
> 
> @@ -540,7 +540,7 @@ static bool intel_sdvo_write_cmd(struct intel_sdvo
> *intel_sdvo, u8 cmd,  static bool intel_sdvo_read_response(struct intel_sdvo
> *intel_sdvo,
>  				     void *response, int response_len)  {
> -	struct drm_i915_private *dev_priv = to_i915(intel_sdvo-
> >base.base.dev);
> +	struct intel_display *display = to_intel_display(&intel_sdvo->base);
>  	const char *cmd_status;
>  	u8 retry = 15; /* 5 quick checks, followed by 10 long checks */
>  	u8 status;
> @@ -605,15 +605,15 @@ static bool intel_sdvo_read_response(struct
> intel_sdvo *intel_sdvo,
>  		BUF_PRINT(" %02X", ((u8 *)response)[i]);
>  	}
> 
> -	drm_WARN_ON(&dev_priv->drm, pos >= sizeof(buffer) - 1);
> +	drm_WARN_ON(display->drm, pos >= sizeof(buffer) - 1);
>  #undef BUF_PRINT
> 
> -	drm_dbg_kms(&dev_priv->drm, "%s: R: %s\n",
> +	drm_dbg_kms(display->drm, "%s: R: %s\n",
>  		    SDVO_NAME(intel_sdvo), buffer);
>  	return true;
> 
>  log_fail:
> -	drm_dbg_kms(&dev_priv->drm, "%s: R: ... failed %s\n",
> +	drm_dbg_kms(display->drm, "%s: R: ... failed %s\n",
>  		    SDVO_NAME(intel_sdvo), buffer);
>  	return false;
>  }
> @@ -1009,7 +1009,7 @@ static bool intel_sdvo_write_infoframe(struct
> intel_sdvo *intel_sdvo,
>  				       unsigned int if_index, u8 tx_rate,
>  				       const u8 *data, unsigned int length)  {
> -	struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev);
> +	struct intel_display *display = to_intel_display(&intel_sdvo->base);
>  	u8 set_buf_index[2] = { if_index, 0 };
>  	u8 hbuf_size, tmp[8];
>  	int i;
> @@ -1022,7 +1022,7 @@ static bool intel_sdvo_write_infoframe(struct
> intel_sdvo *intel_sdvo,
>  	if (!intel_sdvo_get_hbuf_size(intel_sdvo, &hbuf_size))
>  		return false;
> 
> -	drm_dbg_kms(&i915->drm,
> +	drm_dbg_kms(display->drm,
>  		    "writing sdvo hbuf: %i, length %u, hbuf_size: %i\n",
>  		    if_index, length, hbuf_size);
> 
> @@ -1049,7 +1049,7 @@ static ssize_t intel_sdvo_read_infoframe(struct
> intel_sdvo *intel_sdvo,
>  					 unsigned int if_index,
>  					 u8 *data, unsigned int length)
>  {
> -	struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev);
> +	struct intel_display *display = to_intel_display(&intel_sdvo->base);
>  	u8 set_buf_index[2] = { if_index, 0 };
>  	u8 hbuf_size, tx_rate, av_split;
>  	int i;
> @@ -1079,7 +1079,7 @@ static ssize_t intel_sdvo_read_infoframe(struct
> intel_sdvo *intel_sdvo,
>  	if (!intel_sdvo_get_hbuf_size(intel_sdvo, &hbuf_size))
>  		return false;
> 
> -	drm_dbg_kms(&i915->drm,
> +	drm_dbg_kms(display->drm,
>  		    "reading sdvo hbuf: %i, length %u, hbuf_size: %i\n",
>  		    if_index, length, hbuf_size);
> 
> @@ -1100,7 +1100,7 @@ static bool
> intel_sdvo_compute_avi_infoframe(struct intel_sdvo *intel_sdvo,
>  					     struct intel_crtc_state *crtc_state,
>  					     struct drm_connector_state
> *conn_state)  {
> -	struct drm_i915_private *dev_priv = to_i915(intel_sdvo-
> >base.base.dev);
> +	struct intel_display *display = to_intel_display(&intel_sdvo->base);
>  	struct hdmi_avi_infoframe *frame = &crtc_state->infoframes.avi.avi;
>  	const struct drm_display_mode *adjusted_mode =
>  		&crtc_state->hw.adjusted_mode;
> @@ -1126,7 +1126,7 @@ static bool
> intel_sdvo_compute_avi_infoframe(struct intel_sdvo *intel_sdvo,
> 
> HDMI_QUANTIZATION_RANGE_FULL);
> 
>  	ret = hdmi_avi_infoframe_check(frame);
> -	if (drm_WARN_ON(&dev_priv->drm, ret))
> +	if (drm_WARN_ON(display->drm, ret))
>  		return false;
> 
>  	return true;
> @@ -1135,7 +1135,7 @@ static bool
> intel_sdvo_compute_avi_infoframe(struct intel_sdvo *intel_sdvo,  static bool
> intel_sdvo_set_avi_infoframe(struct intel_sdvo *intel_sdvo,
>  					 const struct intel_crtc_state
> *crtc_state)  {
> -	struct drm_i915_private *dev_priv = to_i915(intel_sdvo-
> >base.base.dev);
> +	struct intel_display *display = to_intel_display(&intel_sdvo->base);
>  	u8 sdvo_data[HDMI_INFOFRAME_SIZE(AVI)];
>  	const union hdmi_infoframe *frame = &crtc_state->infoframes.avi;
>  	ssize_t len;
> @@ -1144,12 +1144,12 @@ static bool intel_sdvo_set_avi_infoframe(struct
> intel_sdvo *intel_sdvo,
>  	     intel_hdmi_infoframe_enable(HDMI_INFOFRAME_TYPE_AVI)) ==
> 0)
>  		return true;
> 
> -	if (drm_WARN_ON(&dev_priv->drm,
> +	if (drm_WARN_ON(display->drm,
>  			frame->any.type != HDMI_INFOFRAME_TYPE_AVI))
>  		return false;
> 
>  	len = hdmi_infoframe_pack_only(frame, sdvo_data,
> sizeof(sdvo_data));
> -	if (drm_WARN_ON(&dev_priv->drm, len < 0))
> +	if (drm_WARN_ON(display->drm, len < 0))
>  		return false;
> 
>  	return intel_sdvo_write_infoframe(intel_sdvo,
> SDVO_HBUF_INDEX_AVI_IF, @@ -1160,7 +1160,7 @@ static bool
> intel_sdvo_set_avi_infoframe(struct intel_sdvo *intel_sdvo,  static void
> intel_sdvo_get_avi_infoframe(struct intel_sdvo *intel_sdvo,
>  					 struct intel_crtc_state *crtc_state)  {
> -	struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev);
> +	struct intel_display *display = to_intel_display(&intel_sdvo->base);
>  	u8 sdvo_data[HDMI_INFOFRAME_SIZE(AVI)];
>  	union hdmi_infoframe *frame = &crtc_state->infoframes.avi;
>  	ssize_t len;
> @@ -1172,7 +1172,7 @@ static void intel_sdvo_get_avi_infoframe(struct
> intel_sdvo *intel_sdvo,
>  	len = intel_sdvo_read_infoframe(intel_sdvo,
> SDVO_HBUF_INDEX_AVI_IF,
>  					sdvo_data, sizeof(sdvo_data));
>  	if (len < 0) {
> -		drm_dbg_kms(&i915->drm, "failed to read AVI
> infoframe\n");
> +		drm_dbg_kms(display->drm, "failed to read AVI
> infoframe\n");
>  		return;
>  	} else if (len == 0) {
>  		return;
> @@ -1183,12 +1183,12 @@ static void intel_sdvo_get_avi_infoframe(struct
> intel_sdvo *intel_sdvo,
> 
>  	ret = hdmi_infoframe_unpack(frame, sdvo_data, len);
>  	if (ret) {
> -		drm_dbg_kms(&i915->drm, "Failed to unpack AVI
> infoframe\n");
> +		drm_dbg_kms(display->drm, "Failed to unpack AVI
> infoframe\n");
>  		return;
>  	}
> 
>  	if (frame->any.type != HDMI_INFOFRAME_TYPE_AVI)
> -		drm_dbg_kms(&i915->drm,
> +		drm_dbg_kms(display->drm,
>  			    "Found the wrong infoframe type 0x%x (expected
> 0x%02x)\n",
>  			    frame->any.type, HDMI_INFOFRAME_TYPE_AVI);  }
> @@ -1196,7 +1196,7 @@ static void intel_sdvo_get_avi_infoframe(struct
> intel_sdvo *intel_sdvo,  static void intel_sdvo_get_eld(struct intel_sdvo
> *intel_sdvo,
>  			       struct intel_crtc_state *crtc_state)  {
> -	struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev);
> +	struct intel_display *display = to_intel_display(&intel_sdvo->base);
>  	ssize_t len;
>  	u8 val;
> 
> @@ -1212,7 +1212,7 @@ static void intel_sdvo_get_eld(struct intel_sdvo
> *intel_sdvo,
>  	len = intel_sdvo_read_infoframe(intel_sdvo,
> SDVO_HBUF_INDEX_ELD,
>  					crtc_state->eld, sizeof(crtc_state-
> >eld));
>  	if (len < 0)
> -		drm_dbg_kms(&i915->drm, "failed to read ELD\n");
> +		drm_dbg_kms(display->drm, "failed to read ELD\n");
>  }
> 
>  static bool intel_sdvo_set_tv_format(struct intel_sdvo *intel_sdvo, @@ -
> 1282,7 +1282,7 @@ intel_sdvo_get_preferred_input_mode(struct
> intel_sdvo *intel_sdvo,
> 
>  static int i9xx_adjust_sdvo_tv_clock(struct intel_crtc_state *pipe_config)  {
> -	struct drm_i915_private *dev_priv = to_i915(pipe_config->uapi.crtc-
> >dev);
> +	struct intel_display *display = to_intel_display(pipe_config);
>  	unsigned int dotclock = pipe_config->hw.adjusted_mode.crtc_clock;
>  	struct dpll *clock = &pipe_config->dpll;
> 
> @@ -1303,7 +1303,7 @@ static int i9xx_adjust_sdvo_tv_clock(struct
> intel_crtc_state *pipe_config)
>  		clock->m1 = 12;
>  		clock->m2 = 8;
>  	} else {
> -		drm_dbg_kms(&dev_priv->drm,
> +		drm_dbg_kms(display->drm,
>  			    "SDVO TV clock out of range: %i\n", dotclock);
>  		return -EINVAL;
>  	}
> @@ -1359,6 +1359,7 @@ static int intel_sdvo_compute_config(struct
> intel_encoder *encoder,
>  				     struct intel_crtc_state *pipe_config,
>  				     struct drm_connector_state *conn_state)
> {
> +	struct intel_display *display = to_intel_display(encoder);
>  	struct drm_i915_private *i915 = to_i915(encoder->base.dev);
>  	struct intel_sdvo *intel_sdvo = to_sdvo(encoder);
>  	struct intel_sdvo_connector *intel_sdvo_connector = @@ -1366,13
> +1367,13 @@ static int intel_sdvo_compute_config(struct intel_encoder
> *encoder,
>  	struct drm_display_mode *adjusted_mode = &pipe_config-
> >hw.adjusted_mode;
>  	struct drm_display_mode *mode = &pipe_config->hw.mode;
> 
> -	if (HAS_PCH_SPLIT(to_i915(encoder->base.dev))) {
> +	if (HAS_PCH_SPLIT(i915)) {
>  		pipe_config->has_pch_encoder = true;
>  		if (!intel_fdi_compute_pipe_bpp(pipe_config))
>  			return -EINVAL;
>  	}
> 
> -	drm_dbg_kms(&i915->drm, "forcing bpc to 8 for SDVO\n");
> +	drm_dbg_kms(display->drm, "forcing bpc to 8 for SDVO\n");
>  	/* FIXME: Don't increase pipe_bpp */
>  	pipe_config->pipe_bpp = 8*3;
>  	pipe_config->sink_format = INTEL_OUTPUT_FORMAT_RGB; @@ -
> 1451,7 +1452,7 @@ static int intel_sdvo_compute_config(struct
> intel_encoder *encoder,
> 
>  	if (!intel_sdvo_compute_avi_infoframe(intel_sdvo,
>  					      pipe_config, conn_state)) {
> -		drm_dbg_kms(&i915->drm, "bad AVI infoframe\n");
> +		drm_dbg_kms(display->drm, "bad AVI infoframe\n");
>  		return -EINVAL;
>  	}
> 
> @@ -1525,6 +1526,7 @@ static void intel_sdvo_pre_enable(struct
> intel_atomic_state *state,
>  				  const struct intel_crtc_state *crtc_state,
>  				  const struct drm_connector_state
> *conn_state)  {
> +	struct intel_display *display = to_intel_display(intel_encoder);
>  	struct drm_i915_private *dev_priv = to_i915(intel_encoder-
> >base.dev);
>  	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
>  	const struct drm_display_mode *adjusted_mode = &crtc_state-
> >hw.adjusted_mode; @@ -1570,7 +1572,7 @@ static void
> intel_sdvo_pre_enable(struct intel_atomic_state *state,
>  		intel_sdvo_get_dtd_from_mode(&output_dtd, mode);
>  	}
>  	if (!intel_sdvo_set_output_timing(intel_sdvo, &output_dtd))
> -		drm_info(&dev_priv->drm,
> +		drm_info(display->drm,
>  			 "Setting output timings on %s failed\n",
>  			 SDVO_NAME(intel_sdvo));
> 
> @@ -1600,13 +1602,13 @@ static void intel_sdvo_pre_enable(struct
> intel_atomic_state *state,
>  	if (IS_TV(intel_sdvo_connector) || IS_LVDS(intel_sdvo_connector))
>  		input_dtd.part2.sdvo_flags = intel_sdvo->dtd_sdvo_flags;
>  	if (!intel_sdvo_set_input_timing(intel_sdvo, &input_dtd))
> -		drm_info(&dev_priv->drm,
> +		drm_info(display->drm,
>  			 "Setting input timings on %s failed\n",
>  			 SDVO_NAME(intel_sdvo));
> 
>  	switch (crtc_state->pixel_multiplier) {
>  	default:
> -		drm_WARN(&dev_priv->drm, 1,
> +		drm_WARN(display->drm, 1,
>  			 "unknown pixel multiplier specified\n");
>  		fallthrough;
>  	case 1: rate = SDVO_CLOCK_RATE_MULT_1X; break; @@ -1617,14
> +1619,14 @@ static void intel_sdvo_pre_enable(struct intel_atomic_state
> *state,
>  		return;
> 
>  	/* Set the SDVO control regs. */
> -	if (DISPLAY_VER(dev_priv) >= 4) {
> +	if (DISPLAY_VER(display) >= 4) {
>  		/* The real mode polarity is set by the SDVO commands,
> using
>  		 * struct intel_sdvo_dtd. */
>  		sdvox = SDVO_VSYNC_ACTIVE_HIGH |
> SDVO_HSYNC_ACTIVE_HIGH;
> -		if (DISPLAY_VER(dev_priv) < 5)
> +		if (DISPLAY_VER(display) < 5)
>  			sdvox |= SDVO_BORDER_ENABLE;
>  	} else {
> -		sdvox = intel_de_read(dev_priv, intel_sdvo->sdvo_reg);
> +		sdvox = intel_de_read(display, intel_sdvo->sdvo_reg);
>  		if (intel_sdvo->base.port == PORT_B)
>  			sdvox &= SDVOB_PRESERVE_MASK;
>  		else
> @@ -1637,10 +1639,10 @@ static void intel_sdvo_pre_enable(struct
> intel_atomic_state *state,
>  	else
>  		sdvox |= SDVO_PIPE_SEL(crtc->pipe);
> 
> -	if (DISPLAY_VER(dev_priv) >= 4) {
> +	if (DISPLAY_VER(display) >= 4) {
>  		/* done in crtc_mode_set as the dpll_md reg must be
> written early */
> -	} else if (IS_I945G(dev_priv) || IS_I945GM(dev_priv) ||
> -		   IS_G33(dev_priv) || IS_PINEVIEW(dev_priv)) {
> +	} else if (display->platform.i945g || display->platform.i945gm ||
> +		   display->platform.g33 || display->platform.pineview) {
>  		/* done in crtc_mode_set as it lives inside the dpll register
> */
>  	} else {
>  		sdvox |= (crtc_state->pixel_multiplier - 1) @@ -1648,7
> +1650,7 @@ static void intel_sdvo_pre_enable(struct intel_atomic_state
> *state,
>  	}
> 
>  	if (input_dtd.part2.sdvo_flags & SDVO_NEED_TO_STALL &&
> -	    DISPLAY_VER(dev_priv) < 5)
> +	    DISPLAY_VER(display) < 5)
>  		sdvox |= SDVO_STALL_SELECT;
>  	intel_sdvo_write_sdvox(intel_sdvo, sdvox);  } @@ -1665,17 +1667,18
> @@ static bool intel_sdvo_connector_get_hw_state(struct intel_connector
> *connector)
>  	return active_outputs & intel_sdvo_connector->output_flag;
>  }
> 
> -bool intel_sdvo_port_enabled(struct drm_i915_private *dev_priv,
> +bool intel_sdvo_port_enabled(struct intel_display *display,
>  			     i915_reg_t sdvo_reg, enum pipe *pipe)  {
> +	struct drm_i915_private *dev_priv = to_i915(display->drm);
>  	u32 val;
> 
> -	val = intel_de_read(dev_priv, sdvo_reg);
> +	val = intel_de_read(display, sdvo_reg);
> 
>  	/* asserts want to know the pipe even if the port is disabled */
>  	if (HAS_PCH_CPT(dev_priv))
>  		*pipe = (val & SDVO_PIPE_SEL_MASK_CPT) >>
> SDVO_PIPE_SEL_SHIFT_CPT;
> -	else if (IS_CHERRYVIEW(dev_priv))
> +	else if (display->platform.cherryview)
>  		*pipe = (val & SDVO_PIPE_SEL_MASK_CHV) >>
> SDVO_PIPE_SEL_SHIFT_CHV;
>  	else
>  		*pipe = (val & SDVO_PIPE_SEL_MASK) >>
> SDVO_PIPE_SEL_SHIFT; @@ -1686,14 +1689,14 @@ bool
> intel_sdvo_port_enabled(struct drm_i915_private *dev_priv,  static bool
> intel_sdvo_get_hw_state(struct intel_encoder *encoder,
>  				    enum pipe *pipe)
>  {
> -	struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
> +	struct intel_display *display = to_intel_display(encoder);
>  	struct intel_sdvo *intel_sdvo = to_sdvo(encoder);
>  	u16 active_outputs = 0;
>  	bool ret;
> 
>  	intel_sdvo_get_active_outputs(intel_sdvo, &active_outputs);
> 
> -	ret = intel_sdvo_port_enabled(dev_priv, intel_sdvo->sdvo_reg,
> pipe);
> +	ret = intel_sdvo_port_enabled(display, intel_sdvo->sdvo_reg, pipe);
> 
>  	return ret || active_outputs;
>  }
> @@ -1701,8 +1704,7 @@ static bool intel_sdvo_get_hw_state(struct
> intel_encoder *encoder,  static void intel_sdvo_get_config(struct
> intel_encoder *encoder,
>  				  struct intel_crtc_state *pipe_config)  {
> -	struct drm_device *dev = encoder->base.dev;
> -	struct drm_i915_private *dev_priv = to_i915(dev);
> +	struct intel_display *display = to_intel_display(encoder);
>  	struct intel_sdvo *intel_sdvo = to_sdvo(encoder);
>  	struct intel_sdvo_dtd dtd;
>  	int encoder_pixel_multiplier = 0;
> @@ -1713,7 +1715,7 @@ static void intel_sdvo_get_config(struct
> intel_encoder *encoder,
> 
>  	pipe_config->output_types |= BIT(INTEL_OUTPUT_SDVO);
> 
> -	sdvox = intel_de_read(dev_priv, intel_sdvo->sdvo_reg);
> +	sdvox = intel_de_read(display, intel_sdvo->sdvo_reg);
> 
>  	ret = intel_sdvo_get_input_timing(intel_sdvo, &dtd);
>  	if (!ret) {
> @@ -1721,7 +1723,7 @@ static void intel_sdvo_get_config(struct
> intel_encoder *encoder,
>  		 * Some sdvo encoders are not spec compliant and don't
>  		 * implement the mandatory get_timings function.
>  		 */
> -		drm_dbg(&dev_priv->drm, "failed to retrieve SDVO DTD\n");
> +		drm_dbg_kms(display->drm, "failed to retrieve SDVO
> DTD\n");
>  		pipe_config->quirks |=
> PIPE_CONFIG_QUIRK_MODE_SYNC_FLAGS;
>  	} else {
>  		if (dtd.part2.dtd_flags & DTD_FLAG_HSYNC_POSITIVE) @@ -
> 1744,7 +1746,7 @@ static void intel_sdvo_get_config(struct intel_encoder
> *encoder,
>  	 * encoder->get_config we so already have a valid pixel multiplier on
> all
>  	 * other platforms.
>  	 */
> -	if (IS_I915G(dev_priv) || IS_I915GM(dev_priv)) {
> +	if (display->platform.i915g || display->platform.i915gm) {
>  		pipe_config->pixel_multiplier =
>  			((sdvox & SDVO_PORT_MULTIPLY_MASK)
>  			 >> SDVO_PORT_MULTIPLY_SHIFT) + 1;
> @@ -1773,7 +1775,7 @@ static void intel_sdvo_get_config(struct
> intel_encoder *encoder,
>  		}
>  	}
> 
> -	drm_WARN(dev,
> +	drm_WARN(display->drm,
>  		 encoder_pixel_multiplier != pipe_config->pixel_multiplier,
>  		 "SDVO pixel multiplier mismatch, port: %i, encoder: %i\n",
>  		 pipe_config->pixel_multiplier, encoder_pixel_multiplier);
> @@ -1849,7 +1851,7 @@ static void intel_disable_sdvo(struct
> intel_atomic_state *state,
>  		intel_sdvo_set_encoder_power_state(intel_sdvo,
>  						   DRM_MODE_DPMS_OFF);
> 
> -	temp = intel_de_read(dev_priv, intel_sdvo->sdvo_reg);
> +	temp = intel_de_read(display, intel_sdvo->sdvo_reg);
> 
>  	temp &= ~SDVO_ENABLE;
>  	intel_sdvo_write_sdvox(intel_sdvo, temp); @@ -1900,8 +1902,7 @@
> static void intel_enable_sdvo(struct intel_atomic_state *state,
>  			      const struct intel_crtc_state *pipe_config,
>  			      const struct drm_connector_state *conn_state)  {
> -	struct drm_device *dev = encoder->base.dev;
> -	struct drm_i915_private *dev_priv = to_i915(dev);
> +	struct intel_display *display = to_intel_display(encoder);
>  	struct intel_sdvo *intel_sdvo = to_sdvo(encoder);
>  	struct intel_sdvo_connector *intel_sdvo_connector =
>  		to_intel_sdvo_connector(conn_state->connector);
> @@ -1911,7 +1912,7 @@ static void intel_enable_sdvo(struct
> intel_atomic_state *state,
>  	int i;
>  	bool success;
> 
> -	temp = intel_de_read(dev_priv, intel_sdvo->sdvo_reg);
> +	temp = intel_de_read(display, intel_sdvo->sdvo_reg);
>  	temp |= SDVO_ENABLE;
>  	intel_sdvo_write_sdvox(intel_sdvo, temp);
> 
> @@ -1926,7 +1927,7 @@ static void intel_enable_sdvo(struct
> intel_atomic_state *state,
>  	 * a given it the status is a success, we succeeded.
>  	 */
>  	if (success && !input1) {
> -		drm_dbg_kms(&dev_priv->drm,
> +		drm_dbg_kms(display->drm,
>  			    "First %s output reported failure to sync\n",
>  			    SDVO_NAME(intel_sdvo));
>  	}
> @@ -1941,12 +1942,13 @@ static enum drm_mode_status
> intel_sdvo_mode_valid(struct drm_connector *connector,
>  		      const struct drm_display_mode *mode)  {
> +	struct intel_display *display = to_intel_display(connector->dev);

Why not &i915->display and declare this after i915 declaration

Otherwise LGTM,
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>


>  	struct drm_i915_private *i915 = to_i915(connector->dev);
>  	struct intel_sdvo *intel_sdvo =
> intel_attached_sdvo(to_intel_connector(connector));
>  	struct intel_sdvo_connector *intel_sdvo_connector =
>  		to_intel_sdvo_connector(connector);
>  	bool has_hdmi_sink = intel_has_hdmi_sink(intel_sdvo_connector,
> connector->state);
> -	int max_dotclk = i915->display.cdclk.max_dotclk_freq;
> +	int max_dotclk = display->cdclk.max_dotclk_freq;
>  	enum drm_mode_status status;
>  	int clock = mode->clock;
> 
> @@ -1982,14 +1984,15 @@ intel_sdvo_mode_valid(struct drm_connector
> *connector,
> 
>  static bool intel_sdvo_get_capabilities(struct intel_sdvo *intel_sdvo, struct
> intel_sdvo_caps *caps)  {
> -	struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev);
> +	struct intel_display *display = to_intel_display(&intel_sdvo->base);
> +
>  	BUILD_BUG_ON(sizeof(*caps) != 8);
>  	if (!intel_sdvo_get_value(intel_sdvo,
>  				  SDVO_CMD_GET_DEVICE_CAPS,
>  				  caps, sizeof(*caps)))
>  		return false;
> 
> -	drm_dbg_kms(&i915->drm, "SDVO capabilities:\n"
> +	drm_dbg_kms(display->drm, "SDVO capabilities:\n"
>  		    "  vendor_id: %d\n"
>  		    "  device_id: %d\n"
>  		    "  device_rev_id: %d\n"
> @@ -2031,17 +2034,17 @@ static u8 intel_sdvo_get_colorimetry_cap(struct
> intel_sdvo *intel_sdvo)
> 
>  static u16 intel_sdvo_get_hotplug_support(struct intel_sdvo *intel_sdvo)  {
> -	struct drm_i915_private *dev_priv = to_i915(intel_sdvo-
> >base.base.dev);
> +	struct intel_display *display = to_intel_display(&intel_sdvo->base);
>  	u16 hotplug;
> 
> -	if (!I915_HAS_HOTPLUG(dev_priv))
> +	if (!I915_HAS_HOTPLUG(display))
>  		return 0;
> 
>  	/*
>  	 * HW Erratum: SDVO Hotplug is broken on all i945G chips, there's
> noise
>  	 * on the line.
>  	 */
> -	if (IS_I945G(dev_priv) || IS_I945GM(dev_priv))
> +	if (display->platform.i945g || display->platform.i945gm)
>  		return 0;
> 
>  	if (!intel_sdvo_get_value(intel_sdvo,
> SDVO_CMD_GET_HOT_PLUG_SUPPORT, @@ -2138,13 +2141,12 @@ static
> enum drm_connector_status  intel_sdvo_detect(struct drm_connector
> *connector, bool force)  {
>  	struct intel_display *display = to_intel_display(connector->dev);
> -	struct drm_i915_private *i915 = to_i915(connector->dev);
>  	struct intel_sdvo *intel_sdvo =
> intel_attached_sdvo(to_intel_connector(connector));
>  	struct intel_sdvo_connector *intel_sdvo_connector =
> to_intel_sdvo_connector(connector);
>  	enum drm_connector_status ret;
>  	u16 response;
> 
> -	drm_dbg_kms(&i915->drm, "[CONNECTOR:%d:%s]\n",
> +	drm_dbg_kms(display->drm, "[CONNECTOR:%d:%s]\n",
>  		    connector->base.id, connector->name);
> 
>  	if (!intel_display_device_enabled(display))
> @@ -2162,7 +2164,7 @@ intel_sdvo_detect(struct drm_connector
> *connector, bool force)
>  				  &response, 2))
>  		return connector_status_unknown;
> 
> -	drm_dbg_kms(&i915->drm, "SDVO response %d %d [%x]\n",
> +	drm_dbg_kms(display->drm, "SDVO response %d %d [%x]\n",
>  		    response & 0xff, response >> 8,
>  		    intel_sdvo_connector->output_flag);
> 
> @@ -2301,7 +2303,6 @@ static int intel_sdvo_get_tv_modes(struct
> drm_connector *connector)  {
>  	struct intel_display *display = to_intel_display(connector->dev);
>  	struct intel_sdvo *intel_sdvo =
> intel_attached_sdvo(to_intel_connector(connector));
> -	struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev);
>  	struct intel_sdvo_connector *intel_sdvo_connector =
>  		to_intel_sdvo_connector(connector);
>  	const struct drm_connector_state *conn_state = connector->state;
> @@ -2310,7 +2311,7 @@ static int intel_sdvo_get_tv_modes(struct
> drm_connector *connector)
>  	int num_modes = 0;
>  	int i;
> 
> -	drm_dbg_kms(&i915->drm, "[CONNECTOR:%d:%s]\n",
> +	drm_dbg_kms(display->drm, "[CONNECTOR:%d:%s]\n",
>  		    connector->base.id, connector->name);
> 
>  	if (!intel_display_driver_check_access(display))
> @@ -2352,9 +2353,9 @@ static int intel_sdvo_get_tv_modes(struct
> drm_connector *connector)
> 
>  static int intel_sdvo_get_lvds_modes(struct drm_connector *connector)  {
> -	struct drm_i915_private *dev_priv = to_i915(connector->dev);
> +	struct intel_display *display = to_intel_display(connector->dev);
> 
> -	drm_dbg_kms(&dev_priv->drm, "[CONNECTOR:%d:%s]\n",
> +	drm_dbg_kms(display->drm, "[CONNECTOR:%d:%s]\n",
>  		    connector->base.id, connector->name);
> 
>  	return intel_panel_get_modes(to_intel_connector(connector));
> @@ -2618,14 +2619,14 @@ static struct intel_sdvo_ddc *
> intel_sdvo_select_ddc_bus(struct intel_sdvo *sdvo,
>  			  struct intel_sdvo_connector *connector)  {
> -	struct drm_i915_private *dev_priv = to_i915(sdvo->base.base.dev);
> +	struct intel_display *display = to_intel_display(&sdvo->base);
>  	const struct sdvo_device_mapping *mapping;
>  	int ddc_bus;
> 
>  	if (sdvo->base.port == PORT_B)
> -		mapping = &dev_priv->display.vbt.sdvo_mappings[0];
> +		mapping = &display->vbt.sdvo_mappings[0];
>  	else
> -		mapping = &dev_priv->display.vbt.sdvo_mappings[1];
> +		mapping = &display->vbt.sdvo_mappings[1];
> 
>  	if (mapping->initialized)
>  		ddc_bus = (mapping->ddc_pin & 0xf0) >> 4; @@ -2642,14
> +2643,13 @@ static void  intel_sdvo_select_i2c_bus(struct intel_sdvo *sdvo)
> {
>  	struct intel_display *display = to_intel_display(&sdvo->base);
> -	struct drm_i915_private *dev_priv = to_i915(sdvo->base.base.dev);
>  	const struct sdvo_device_mapping *mapping;
>  	u8 pin;
> 
>  	if (sdvo->base.port == PORT_B)
> -		mapping = &dev_priv->display.vbt.sdvo_mappings[0];
> +		mapping = &display->vbt.sdvo_mappings[0];
>  	else
> -		mapping = &dev_priv->display.vbt.sdvo_mappings[1];
> +		mapping = &display->vbt.sdvo_mappings[1];
> 
>  	if (mapping->initialized &&
>  	    intel_gmbus_is_valid_pin(display, mapping->i2c_pin)) @@ -2657,7
> +2657,7 @@ intel_sdvo_select_i2c_bus(struct intel_sdvo *sdvo)
>  	else
>  		pin = GMBUS_PIN_DPB;
> 
> -	drm_dbg_kms(&dev_priv->drm, "[ENCODER:%d:%s] I2C pin %d,
> target addr 0x%x\n",
> +	drm_dbg_kms(display->drm, "[ENCODER:%d:%s] I2C pin %d, target
> addr
> +0x%x\n",
>  		    sdvo->base.base.base.id, sdvo->base.base.name,
>  		    pin, sdvo->target_addr);
> 
> @@ -2687,15 +2687,15 @@ intel_sdvo_is_hdmi_connector(struct intel_sdvo
> *intel_sdvo)  static u8  intel_sdvo_get_target_addr(struct intel_sdvo *sdvo)
> {
> -	struct drm_i915_private *dev_priv = to_i915(sdvo->base.base.dev);
> +	struct intel_display *display = to_intel_display(&sdvo->base);
>  	const struct sdvo_device_mapping *my_mapping, *other_mapping;
> 
>  	if (sdvo->base.port == PORT_B) {
> -		my_mapping = &dev_priv->display.vbt.sdvo_mappings[0];
> -		other_mapping = &dev_priv->display.vbt.sdvo_mappings[1];
> +		my_mapping = &display->vbt.sdvo_mappings[0];
> +		other_mapping = &display->vbt.sdvo_mappings[1];
>  	} else {
> -		my_mapping = &dev_priv->display.vbt.sdvo_mappings[1];
> -		other_mapping = &dev_priv->display.vbt.sdvo_mappings[0];
> +		my_mapping = &display->vbt.sdvo_mappings[1];
> +		other_mapping = &display->vbt.sdvo_mappings[0];
>  	}
> 
>  	/* If the BIOS described our SDVO device, take advantage of it. */
> @@ -2731,7 +2731,7 @@ static int  intel_sdvo_connector_init(struct
> intel_sdvo_connector *connector,
>  			  struct intel_sdvo *encoder)
>  {
> -	struct drm_i915_private *i915 = to_i915(encoder->base.base.dev);
> +	struct intel_display *display = to_intel_display(&encoder->base);
>  	struct intel_sdvo_ddc *ddc = NULL;
>  	int ret;
> 
> @@ -2756,7 +2756,7 @@ intel_sdvo_connector_init(struct
> intel_sdvo_connector *connector,
>  	intel_connector_attach_encoder(&connector->base, &encoder-
> >base);
> 
>  	if (ddc)
> -		drm_dbg_kms(&i915->drm, "[CONNECTOR:%d:%s] using
> %s\n",
> +		drm_dbg_kms(display->drm, "[CONNECTOR:%d:%s] using
> %s\n",
>  			    connector->base.base.base.id, connector-
> >base.base.name,
>  			    ddc->ddc.name);
> 
> @@ -2799,14 +2799,14 @@ static struct intel_sdvo_connector
> *intel_sdvo_connector_alloc(void)  static bool  intel_sdvo_dvi_init(struct
> intel_sdvo *intel_sdvo, u16 type)  {
> +	struct intel_display *display = to_intel_display(&intel_sdvo->base);
>  	struct drm_encoder *encoder = &intel_sdvo->base.base;
>  	struct drm_connector *connector;
>  	struct intel_encoder *intel_encoder = to_intel_encoder(encoder);
> -	struct drm_i915_private *i915 = to_i915(intel_encoder->base.dev);
>  	struct intel_connector *intel_connector;
>  	struct intel_sdvo_connector *intel_sdvo_connector;
> 
> -	drm_dbg_kms(&i915->drm, "initialising DVI type 0x%x\n", type);
> +	drm_dbg_kms(display->drm, "initialising DVI type 0x%x\n", type);
> 
>  	intel_sdvo_connector = intel_sdvo_connector_alloc();
>  	if (!intel_sdvo_connector)
> @@ -2852,13 +2852,13 @@ intel_sdvo_dvi_init(struct intel_sdvo
> *intel_sdvo, u16 type)  static bool  intel_sdvo_tv_init(struct intel_sdvo
> *intel_sdvo, u16 type)  {
> -	struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev);
> +	struct intel_display *display = to_intel_display(&intel_sdvo->base);
>  	struct drm_encoder *encoder = &intel_sdvo->base.base;
>  	struct drm_connector *connector;
>  	struct intel_connector *intel_connector;
>  	struct intel_sdvo_connector *intel_sdvo_connector;
> 
> -	drm_dbg_kms(&i915->drm, "initialising TV type 0x%x\n", type);
> +	drm_dbg_kms(display->drm, "initialising TV type 0x%x\n", type);
> 
>  	intel_sdvo_connector = intel_sdvo_connector_alloc();
>  	if (!intel_sdvo_connector)
> @@ -2892,13 +2892,13 @@ intel_sdvo_tv_init(struct intel_sdvo *intel_sdvo,
> u16 type)  static bool  intel_sdvo_analog_init(struct intel_sdvo *intel_sdvo,
> u16 type)  {
> -	struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev);
> +	struct intel_display *display = to_intel_display(&intel_sdvo->base);
>  	struct drm_encoder *encoder = &intel_sdvo->base.base;
>  	struct drm_connector *connector;
>  	struct intel_connector *intel_connector;
>  	struct intel_sdvo_connector *intel_sdvo_connector;
> 
> -	drm_dbg_kms(&i915->drm, "initialising analog type 0x%x\n", type);
> +	drm_dbg_kms(display->drm, "initialising analog type 0x%x\n", type);
> 
>  	intel_sdvo_connector = intel_sdvo_connector_alloc();
>  	if (!intel_sdvo_connector)
> @@ -2926,12 +2926,11 @@ intel_sdvo_lvds_init(struct intel_sdvo
> *intel_sdvo, u16 type)  {
>  	struct intel_display *display = to_intel_display(&intel_sdvo->base);
>  	struct drm_encoder *encoder = &intel_sdvo->base.base;
> -	struct drm_i915_private *i915 = to_i915(encoder->dev);
>  	struct drm_connector *connector;
>  	struct intel_connector *intel_connector;
>  	struct intel_sdvo_connector *intel_sdvo_connector;
> 
> -	drm_dbg_kms(&i915->drm, "initialising LVDS type 0x%x\n", type);
> +	drm_dbg_kms(display->drm, "initialising LVDS type 0x%x\n", type);
> 
>  	intel_sdvo_connector = intel_sdvo_connector_alloc();
>  	if (!intel_sdvo_connector)
> @@ -2961,12 +2960,12 @@ intel_sdvo_lvds_init(struct intel_sdvo
> *intel_sdvo, u16 type)
>  	intel_panel_add_vbt_sdvo_fixed_mode(intel_connector);
> 
>  	if (!intel_panel_preferred_fixed_mode(intel_connector)) {
> -		mutex_lock(&i915->drm.mode_config.mutex);
> +		mutex_lock(&display->drm->mode_config.mutex);
> 
>  		intel_ddc_get_modes(connector, connector->ddc);
>  		intel_panel_add_edid_fixed_modes(intel_connector, false);
> 
> -		mutex_unlock(&i915->drm.mode_config.mutex);
> +		mutex_unlock(&display->drm->mode_config.mutex);
>  	}
> 
>  	intel_panel_init(intel_connector, NULL); @@ -3015,7 +3014,7 @@
> static bool intel_sdvo_output_init(struct intel_sdvo *sdvo, u16 type)  static
> bool  intel_sdvo_output_setup(struct intel_sdvo *intel_sdvo)  {
> -	struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev);
> +	struct intel_display *display = to_intel_display(&intel_sdvo->base);
>  	static const u16 probe_order[] = {
>  		SDVO_OUTPUT_TMDS0,
>  		SDVO_OUTPUT_TMDS1,
> @@ -3034,7 +3033,7 @@ intel_sdvo_output_setup(struct intel_sdvo
> *intel_sdvo)
>  	flags = intel_sdvo_filter_output_flags(intel_sdvo-
> >caps.output_flags);
> 
>  	if (flags == 0) {
> -		drm_dbg_kms(&i915->drm,
> +		drm_dbg_kms(display->drm,
>  			    "%s: Unknown SDVO output type (0x%04x)\n",
>  			    SDVO_NAME(intel_sdvo), intel_sdvo-
> >caps.output_flags);
>  		return false;
> @@ -3057,11 +3056,11 @@ intel_sdvo_output_setup(struct intel_sdvo
> *intel_sdvo)
> 
>  static void intel_sdvo_output_cleanup(struct intel_sdvo *intel_sdvo)  {
> -	struct drm_device *dev = intel_sdvo->base.base.dev;
> +	struct intel_display *display = to_intel_display(&intel_sdvo->base);
>  	struct drm_connector *connector, *tmp;
> 
>  	list_for_each_entry_safe(connector, tmp,
> -				 &dev->mode_config.connector_list, head) {
> +				 &display->drm-
> >mode_config.connector_list, head) {
>  		if (intel_attached_encoder(to_intel_connector(connector))
> == &intel_sdvo->base) {
>  			drm_connector_unregister(connector);
>  			intel_connector_destroy(connector);
> @@ -3073,7 +3072,7 @@ static bool intel_sdvo_tv_create_property(struct
> intel_sdvo *intel_sdvo,
>  					  struct intel_sdvo_connector
> *intel_sdvo_connector,
>  					  int type)
>  {
> -	struct drm_device *dev = intel_sdvo->base.base.dev;
> +	struct intel_display *display = to_intel_display(&intel_sdvo->base);
>  	struct intel_sdvo_tv_format format;
>  	u32 format_map, i;
> 
> @@ -3098,7 +3097,7 @@ static bool intel_sdvo_tv_create_property(struct
> intel_sdvo *intel_sdvo,
> 
> 
>  	intel_sdvo_connector->tv_format =
> -		drm_property_create(dev, DRM_MODE_PROP_ENUM,
> +		drm_property_create(display->drm,
> DRM_MODE_PROP_ENUM,
>  				    "mode", intel_sdvo_connector-
> >format_supported_num);
>  	if (!intel_sdvo_connector->tv_format)
>  		return false;
> @@ -3120,12 +3119,12 @@ static bool intel_sdvo_tv_create_property(struct
> intel_sdvo *intel_sdvo,
>  		    !intel_sdvo_get_value(intel_sdvo,
> SDVO_CMD_GET_##NAME, &response, 2)) \
>  			return false; \
>  		intel_sdvo_connector->name = \
> -			drm_property_create_range(dev, 0, #name, 0,
> data_value[0]); \
> +			drm_property_create_range(display->drm, 0, #name,
> 0, data_value[0]);
> +\
>  		if (!intel_sdvo_connector->name) return false; \
>  		state_assignment = response; \
>  		drm_object_attach_property(&connector->base, \
>  					   intel_sdvo_connector->name, 0); \
> -		drm_dbg_kms(dev, #name ": max %d, default %d, current
> %d\n", \
> +		drm_dbg_kms(display->drm, #name ": max %d, default %d,
> current %d\n",
> +\
>  			    data_value[0], data_value[1], response); \
>  	} \
>  } while (0)
> @@ -3137,8 +3136,7 @@ intel_sdvo_create_enhance_property_tv(struct
> intel_sdvo *intel_sdvo,
>  				      struct intel_sdvo_connector
> *intel_sdvo_connector,
>  				      struct intel_sdvo_enhancements_reply
> enhancements)  {
> -	struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev);
> -	struct drm_device *dev = intel_sdvo->base.base.dev;
> +	struct intel_display *display = to_intel_display(&intel_sdvo->base);
>  	struct drm_connector *connector = &intel_sdvo_connector-
> >base.base;
>  	struct drm_connector_state *conn_state = connector->state;
>  	struct intel_sdvo_connector_state *sdvo_state = @@ -3161,7
> +3159,7 @@ intel_sdvo_create_enhance_property_tv(struct intel_sdvo
> *intel_sdvo,
> 
>  		intel_sdvo_connector->max_hscan = data_value[0];
>  		intel_sdvo_connector->left =
> -			drm_property_create_range(dev, 0, "left_margin", 0,
> data_value[0]);
> +			drm_property_create_range(display->drm, 0,
> "left_margin", 0,
> +data_value[0]);
>  		if (!intel_sdvo_connector->left)
>  			return false;
> 
> @@ -3169,13 +3167,13 @@ intel_sdvo_create_enhance_property_tv(struct
> intel_sdvo *intel_sdvo,
>  					   intel_sdvo_connector->left, 0);
> 
>  		intel_sdvo_connector->right =
> -			drm_property_create_range(dev, 0, "right_margin",
> 0, data_value[0]);
> +			drm_property_create_range(display->drm, 0,
> "right_margin", 0,
> +data_value[0]);
>  		if (!intel_sdvo_connector->right)
>  			return false;
> 
>  		drm_object_attach_property(&connector->base,
>  					   intel_sdvo_connector->right, 0);
> -		drm_dbg_kms(&i915->drm, "h_overscan: max %d, default
> %d, current %d\n",
> +		drm_dbg_kms(display->drm, "h_overscan: max %d, default
> %d, current
> +%d\n",
>  			    data_value[0], data_value[1], response);
>  	}
> 
> @@ -3194,7 +3192,7 @@ intel_sdvo_create_enhance_property_tv(struct
> intel_sdvo *intel_sdvo,
> 
>  		intel_sdvo_connector->max_vscan = data_value[0];
>  		intel_sdvo_connector->top =
> -			drm_property_create_range(dev, 0,
> +			drm_property_create_range(display->drm, 0,
>  						  "top_margin", 0,
> data_value[0]);
>  		if (!intel_sdvo_connector->top)
>  			return false;
> @@ -3203,14 +3201,14 @@ intel_sdvo_create_enhance_property_tv(struct
> intel_sdvo *intel_sdvo,
>  					   intel_sdvo_connector->top, 0);
> 
>  		intel_sdvo_connector->bottom =
> -			drm_property_create_range(dev, 0,
> +			drm_property_create_range(display->drm, 0,
>  						  "bottom_margin", 0,
> data_value[0]);
>  		if (!intel_sdvo_connector->bottom)
>  			return false;
> 
>  		drm_object_attach_property(&connector->base,
>  					   intel_sdvo_connector->bottom, 0);
> -		drm_dbg_kms(&i915->drm, "v_overscan: max %d, default
> %d, current %d\n",
> +		drm_dbg_kms(display->drm, "v_overscan: max %d, default
> %d, current
> +%d\n",
>  			    data_value[0], data_value[1], response);
>  	}
> 
> @@ -3233,13 +3231,13 @@ intel_sdvo_create_enhance_property_tv(struct
> intel_sdvo *intel_sdvo,
> 
>  		sdvo_state->tv.dot_crawl = response & 0x1;
>  		intel_sdvo_connector->dot_crawl =
> -			drm_property_create_range(dev, 0, "dot_crawl", 0,
> 1);
> +			drm_property_create_range(display->drm, 0,
> "dot_crawl", 0, 1);
>  		if (!intel_sdvo_connector->dot_crawl)
>  			return false;
> 
>  		drm_object_attach_property(&connector->base,
>  					   intel_sdvo_connector->dot_crawl,
> 0);
> -		drm_dbg_kms(&i915->drm, "dot crawl: current %d\n",
> response);
> +		drm_dbg_kms(display->drm, "dot crawl: current %d\n",
> response);
>  	}
> 
>  	return true;
> @@ -3250,7 +3248,7 @@ intel_sdvo_create_enhance_property_lvds(struct
> intel_sdvo *intel_sdvo,
>  					struct intel_sdvo_connector
> *intel_sdvo_connector,
>  					struct
> intel_sdvo_enhancements_reply enhancements)  {
> -	struct drm_device *dev = intel_sdvo->base.base.dev;
> +	struct intel_display *display = to_intel_display(&intel_sdvo->base);
>  	struct drm_connector *connector = &intel_sdvo_connector-
> >base.base;
>  	u16 response, data_value[2];
> 
> @@ -3264,7 +3262,7 @@ intel_sdvo_create_enhance_property_lvds(struct
> intel_sdvo *intel_sdvo,  static bool
> intel_sdvo_create_enhance_property(struct intel_sdvo *intel_sdvo,
>  					       struct intel_sdvo_connector
> *intel_sdvo_connector)  {
> -	struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev);
> +	struct intel_display *display = to_intel_display(&intel_sdvo->base);
>  	union {
>  		struct intel_sdvo_enhancements_reply reply;
>  		u16 response;
> @@ -3276,7 +3274,7 @@ static bool
> intel_sdvo_create_enhance_property(struct intel_sdvo *intel_sdvo,
> 
> SDVO_CMD_GET_SUPPORTED_ENHANCEMENTS,
>  				  &enhancements, sizeof(enhancements)) ||
>  	    enhancements.response == 0) {
> -		drm_dbg_kms(&i915->drm, "No enhancement is
> supported\n");
> +		drm_dbg_kms(display->drm, "No enhancement is
> supported\n");
>  		return true;
>  	}
> 
> @@ -3351,8 +3349,8 @@ static int
>  intel_sdvo_init_ddc_proxy(struct intel_sdvo_ddc *ddc,
>  			  struct intel_sdvo *sdvo, int ddc_bus)  {
> -	struct drm_i915_private *dev_priv = to_i915(sdvo->base.base.dev);
> -	struct pci_dev *pdev = to_pci_dev(dev_priv->drm.dev);
> +	struct intel_display *display = to_intel_display(&sdvo->base);
> +	struct pci_dev *pdev = to_pci_dev(display->drm->dev);
> 
>  	ddc->sdvo = sdvo;
>  	ddc->ddc_bus = ddc_bus;
> @@ -3368,25 +3366,26 @@ intel_sdvo_init_ddc_proxy(struct
> intel_sdvo_ddc *ddc,
>  	return i2c_add_adapter(&ddc->ddc);
>  }
> 
> -static bool is_sdvo_port_valid(struct drm_i915_private *dev_priv, enum
> port port)
> +static bool is_sdvo_port_valid(struct intel_display *display, enum port
> +port)
>  {
> +	struct drm_i915_private *dev_priv = to_i915(display->drm);
> +
>  	if (HAS_PCH_SPLIT(dev_priv))
>  		return port == PORT_B;
>  	else
>  		return port == PORT_B || port == PORT_C;  }
> 
> -static bool assert_sdvo_port_valid(struct drm_i915_private *dev_priv,
> -				   enum port port)
> +static bool assert_sdvo_port_valid(struct intel_display *display, enum
> +port port)
>  {
> -	return !drm_WARN(&dev_priv->drm, !is_sdvo_port_valid(dev_priv,
> port),
> +	return !drm_WARN(display->drm, !is_sdvo_port_valid(display, port),
>  			 "Platform does not support SDVO %c\n",
> port_name(port));  }
> 
> -bool intel_sdvo_init(struct drm_i915_private *dev_priv,
> +bool intel_sdvo_init(struct intel_display *display,
>  		     i915_reg_t sdvo_reg, enum port port)  {
> -	struct intel_display *display = &dev_priv->display;
> +	struct drm_i915_private *dev_priv = to_i915(display->drm);
>  	struct intel_encoder *intel_encoder;
>  	struct intel_sdvo *intel_sdvo;
>  	int i;
> @@ -3394,7 +3393,7 @@ bool intel_sdvo_init(struct drm_i915_private
> *dev_priv,
>  	if (!assert_port_valid(display, port))
>  		return false;
> 
> -	if (!assert_sdvo_port_valid(dev_priv, port))
> +	if (!assert_sdvo_port_valid(display, port))
>  		return false;
> 
>  	intel_sdvo = kzalloc(sizeof(*intel_sdvo), GFP_KERNEL); @@ -3407,7
> +3406,7 @@ bool intel_sdvo_init(struct drm_i915_private *dev_priv,
>  	intel_encoder->power_domain = POWER_DOMAIN_PORT_OTHER;
>  	intel_encoder->port = port;
> 
> -	drm_encoder_init(&dev_priv->drm, &intel_encoder->base,
> +	drm_encoder_init(display->drm, &intel_encoder->base,
>  			 &intel_sdvo_enc_funcs, 0,
>  			 "SDVO %c", port_name(port));
> 
> @@ -3421,7 +3420,7 @@ bool intel_sdvo_init(struct drm_i915_private
> *dev_priv,
>  		u8 byte;
> 
>  		if (!intel_sdvo_read_byte(intel_sdvo, i, &byte)) {
> -			drm_dbg_kms(&dev_priv->drm,
> +			drm_dbg_kms(display->drm,
>  				    "No SDVO device found on %s\n",
>  				    SDVO_NAME(intel_sdvo));
>  			goto err;
> @@ -3459,7 +3458,7 @@ bool intel_sdvo_init(struct drm_i915_private
> *dev_priv,
>  	}
> 
>  	if (!intel_sdvo_output_setup(intel_sdvo)) {
> -		drm_dbg_kms(&dev_priv->drm,
> +		drm_dbg_kms(display->drm,
>  			    "SDVO output failed to setup on %s\n",
>  			    SDVO_NAME(intel_sdvo));
>  		/* Output_setup can leave behind connectors! */ @@ -
> 3496,7 +3495,7 @@ bool intel_sdvo_init(struct drm_i915_private *dev_priv,
>  						    &intel_sdvo-
> >pixel_clock_max))
>  		goto err_output;
> 
> -	drm_dbg_kms(&dev_priv->drm, "%s device VID/DID:
> %02X:%02X.%02X, "
> +	drm_dbg_kms(display->drm, "%s device VID/DID: %02X:%02X.%02X, "
>  		    "clock range %dMHz - %dMHz, "
>  		    "num inputs: %d, "
>  		    "output 1: %c, output 2: %c\n",
> diff --git a/drivers/gpu/drm/i915/display/intel_sdvo.h
> b/drivers/gpu/drm/i915/display/intel_sdvo.h
> index d1815b4103d4..1a9e40fdd8a8 100644
> --- a/drivers/gpu/drm/i915/display/intel_sdvo.h
> +++ b/drivers/gpu/drm/i915/display/intel_sdvo.h
> @@ -10,22 +10,22 @@
> 
>  #include "i915_reg_defs.h"
> 
> -struct drm_i915_private;
>  enum pipe;
>  enum port;
> +struct intel_display;
> 
>  #ifdef I915
> -bool intel_sdvo_port_enabled(struct drm_i915_private *dev_priv,
> +bool intel_sdvo_port_enabled(struct intel_display *display,
>  			     i915_reg_t sdvo_reg, enum pipe *pipe); -bool
> intel_sdvo_init(struct drm_i915_private *dev_priv,
> +bool intel_sdvo_init(struct intel_display *display,
>  		     i915_reg_t reg, enum port port);  #else -static inline bool
> intel_sdvo_port_enabled(struct drm_i915_private *dev_priv,
> +static inline bool intel_sdvo_port_enabled(struct intel_display
> +*display,
>  					   i915_reg_t sdvo_reg, enum pipe
> *pipe)  {
>  	return false;
>  }
> -static inline bool intel_sdvo_init(struct drm_i915_private *dev_priv,
> +static inline bool intel_sdvo_init(struct intel_display *display,
>  				   i915_reg_t reg, enum port port)
>  {
>  	return false;
> --
> 2.39.5
Jani Nikula Feb. 13, 2025, 11:16 a.m. UTC | #2
On Thu, 13 Feb 2025, "Kandpal, Suraj" <suraj.kandpal@intel.com> wrote:
>> @@ -1941,12 +1942,13 @@ static enum drm_mode_status
>> intel_sdvo_mode_valid(struct drm_connector *connector,
>>                     const struct drm_display_mode *mode)  {
>> +     struct intel_display *display = to_intel_display(connector->dev);
>
> Why not &i915->display and declare this after i915 declaration

Because i915 will go away eventually, and I don't want to have to change
this line again.

BR,
Jani.


>
> Otherwise LGTM,
> Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
>
>
>>       struct drm_i915_private *i915 = to_i915(connector->dev);
>>       struct intel_sdvo *intel_sdvo =
>> intel_attached_sdvo(to_intel_connector(connector));
>>       struct intel_sdvo_connector *intel_sdvo_connector =
>>               to_intel_sdvo_connector(connector);
>>       bool has_hdmi_sink = intel_has_hdmi_sink(intel_sdvo_connector,
>> connector->state);
>> -     int max_dotclk = i915->display.cdclk.max_dotclk_freq;
>> +     int max_dotclk = display->cdclk.max_dotclk_freq;
>>       enum drm_mode_status status;
>>       int clock = mode->clock;
>>
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/display/g4x_hdmi.c b/drivers/gpu/drm/i915/display/g4x_hdmi.c
index 089f1a4d7720..5c5eb3d621c8 100644
--- a/drivers/gpu/drm/i915/display/g4x_hdmi.c
+++ b/drivers/gpu/drm/i915/display/g4x_hdmi.c
@@ -67,7 +67,6 @@  static bool intel_hdmi_get_hw_state(struct intel_encoder *encoder,
 				    enum pipe *pipe)
 {
 	struct intel_display *display = to_intel_display(encoder);
-	struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
 	struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder);
 	intel_wakeref_t wakeref;
 	bool ret;
@@ -77,7 +76,7 @@  static bool intel_hdmi_get_hw_state(struct intel_encoder *encoder,
 	if (!wakeref)
 		return false;
 
-	ret = intel_sdvo_port_enabled(dev_priv, intel_hdmi->hdmi_reg, pipe);
+	ret = intel_sdvo_port_enabled(display, intel_hdmi->hdmi_reg, pipe);
 
 	intel_display_power_put(display, encoder->power_domain, wakeref);
 
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 9bcbd52f23cf..e1186f46088d 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -8236,7 +8236,7 @@  void intel_setup_outputs(struct drm_i915_private *dev_priv)
 
 		if (intel_de_read(dev_priv, PCH_HDMIB) & SDVO_DETECTED) {
 			/* PCH SDVOB multiplex with HDMIB */
-			found = intel_sdvo_init(dev_priv, PCH_SDVOB, PORT_B);
+			found = intel_sdvo_init(display, PCH_SDVOB, PORT_B);
 			if (!found)
 				g4x_hdmi_init(display, PCH_HDMIB, PORT_B);
 			if (!found && (intel_de_read(dev_priv, PCH_DP_B) & DP_DETECTED))
@@ -8315,7 +8315,7 @@  void intel_setup_outputs(struct drm_i915_private *dev_priv)
 
 		if (intel_de_read(dev_priv, GEN3_SDVOB) & SDVO_DETECTED) {
 			drm_dbg_kms(&dev_priv->drm, "probing SDVOB\n");
-			found = intel_sdvo_init(dev_priv, GEN3_SDVOB, PORT_B);
+			found = intel_sdvo_init(display, GEN3_SDVOB, PORT_B);
 			if (!found && IS_G4X(dev_priv)) {
 				drm_dbg_kms(&dev_priv->drm,
 					    "probing HDMI on SDVOB\n");
@@ -8330,7 +8330,7 @@  void intel_setup_outputs(struct drm_i915_private *dev_priv)
 
 		if (intel_de_read(dev_priv, GEN3_SDVOB) & SDVO_DETECTED) {
 			drm_dbg_kms(&dev_priv->drm, "probing SDVOC\n");
-			found = intel_sdvo_init(dev_priv, GEN3_SDVOC, PORT_C);
+			found = intel_sdvo_init(display, GEN3_SDVOC, PORT_C);
 		}
 
 		if (!found && (intel_de_read(dev_priv, GEN3_SDVOC) & SDVO_DETECTED)) {
diff --git a/drivers/gpu/drm/i915/display/intel_pch_display.c b/drivers/gpu/drm/i915/display/intel_pch_display.c
index 98a6b57ac956..1abe0a784570 100644
--- a/drivers/gpu/drm/i915/display/intel_pch_display.c
+++ b/drivers/gpu/drm/i915/display/intel_pch_display.c
@@ -65,7 +65,7 @@  static void assert_pch_hdmi_disabled(struct drm_i915_private *dev_priv,
 	enum pipe port_pipe;
 	bool state;
 
-	state = intel_sdvo_port_enabled(dev_priv, hdmi_reg, &port_pipe);
+	state = intel_sdvo_port_enabled(display, hdmi_reg, &port_pipe);
 
 	INTEL_DISPLAY_STATE_WARN(display, state && port_pipe == pipe,
 				 "PCH HDMI %c enabled on transcoder %c, should be disabled\n",
diff --git a/drivers/gpu/drm/i915/display/intel_sdvo.c b/drivers/gpu/drm/i915/display/intel_sdvo.c
index 46203d796fcc..1ae766212e8a 100644
--- a/drivers/gpu/drm/i915/display/intel_sdvo.c
+++ b/drivers/gpu/drm/i915/display/intel_sdvo.c
@@ -213,29 +213,29 @@  intel_sdvo_create_enhance_property(struct intel_sdvo *intel_sdvo,
  */
 static void intel_sdvo_write_sdvox(struct intel_sdvo *intel_sdvo, u32 val)
 {
-	struct drm_device *dev = intel_sdvo->base.base.dev;
-	struct drm_i915_private *dev_priv = to_i915(dev);
+	struct intel_display *display = to_intel_display(&intel_sdvo->base);
+	struct drm_i915_private *dev_priv = to_i915(display->drm);
 	u32 bval = val, cval = val;
 	int i;
 
 	if (HAS_PCH_SPLIT(dev_priv)) {
-		intel_de_write(dev_priv, intel_sdvo->sdvo_reg, val);
-		intel_de_posting_read(dev_priv, intel_sdvo->sdvo_reg);
+		intel_de_write(display, intel_sdvo->sdvo_reg, val);
+		intel_de_posting_read(display, intel_sdvo->sdvo_reg);
 		/*
 		 * HW workaround, need to write this twice for issue
 		 * that may result in first write getting masked.
 		 */
 		if (HAS_PCH_IBX(dev_priv)) {
-			intel_de_write(dev_priv, intel_sdvo->sdvo_reg, val);
-			intel_de_posting_read(dev_priv, intel_sdvo->sdvo_reg);
+			intel_de_write(display, intel_sdvo->sdvo_reg, val);
+			intel_de_posting_read(display, intel_sdvo->sdvo_reg);
 		}
 		return;
 	}
 
 	if (intel_sdvo->base.port == PORT_B)
-		cval = intel_de_read(dev_priv, GEN3_SDVOC);
+		cval = intel_de_read(display, GEN3_SDVOC);
 	else
-		bval = intel_de_read(dev_priv, GEN3_SDVOB);
+		bval = intel_de_read(display, GEN3_SDVOB);
 
 	/*
 	 * Write the registers twice for luck. Sometimes,
@@ -243,17 +243,17 @@  static void intel_sdvo_write_sdvox(struct intel_sdvo *intel_sdvo, u32 val)
 	 * The BIOS does this too. Yay, magic
 	 */
 	for (i = 0; i < 2; i++) {
-		intel_de_write(dev_priv, GEN3_SDVOB, bval);
-		intel_de_posting_read(dev_priv, GEN3_SDVOB);
+		intel_de_write(display, GEN3_SDVOB, bval);
+		intel_de_posting_read(display, GEN3_SDVOB);
 
-		intel_de_write(dev_priv, GEN3_SDVOC, cval);
-		intel_de_posting_read(dev_priv, GEN3_SDVOC);
+		intel_de_write(display, GEN3_SDVOC, cval);
+		intel_de_posting_read(display, GEN3_SDVOC);
 	}
 }
 
 static bool intel_sdvo_read_byte(struct intel_sdvo *intel_sdvo, u8 addr, u8 *ch)
 {
-	struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev);
+	struct intel_display *display = to_intel_display(&intel_sdvo->base);
 	struct i2c_msg msgs[] = {
 		{
 			.addr = intel_sdvo->target_addr,
@@ -273,7 +273,7 @@  static bool intel_sdvo_read_byte(struct intel_sdvo *intel_sdvo, u8 addr, u8 *ch)
 	if ((ret = i2c_transfer(intel_sdvo->i2c, msgs, 2)) == 2)
 		return true;
 
-	drm_dbg_kms(&i915->drm, "i2c transfer returned %d\n", ret);
+	drm_dbg_kms(display->drm, "i2c transfer returned %d\n", ret);
 	return false;
 }
 
@@ -415,7 +415,7 @@  static const char *sdvo_cmd_name(u8 cmd)
 static void intel_sdvo_debug_write(struct intel_sdvo *intel_sdvo, u8 cmd,
 				   const void *args, int args_len)
 {
-	struct drm_i915_private *dev_priv = to_i915(intel_sdvo->base.base.dev);
+	struct intel_display *display = to_intel_display(&intel_sdvo->base);
 	const char *cmd_name;
 	int i, pos = 0;
 	char buffer[64];
@@ -436,10 +436,10 @@  static void intel_sdvo_debug_write(struct intel_sdvo *intel_sdvo, u8 cmd,
 	else
 		BUF_PRINT("(%02X)", cmd);
 
-	drm_WARN_ON(&dev_priv->drm, pos >= sizeof(buffer) - 1);
+	drm_WARN_ON(display->drm, pos >= sizeof(buffer) - 1);
 #undef BUF_PRINT
 
-	drm_dbg_kms(&dev_priv->drm, "%s: W: %02X %s\n", SDVO_NAME(intel_sdvo),
+	drm_dbg_kms(display->drm, "%s: W: %02X %s\n", SDVO_NAME(intel_sdvo),
 		    cmd, buffer);
 }
 
@@ -465,7 +465,7 @@  static bool __intel_sdvo_write_cmd(struct intel_sdvo *intel_sdvo, u8 cmd,
 				   const void *args, int args_len,
 				   bool unlocked)
 {
-	struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev);
+	struct intel_display *display = to_intel_display(&intel_sdvo->base);
 	u8 *buf, status;
 	struct i2c_msg *msgs;
 	int i, ret = true;
@@ -515,13 +515,13 @@  static bool __intel_sdvo_write_cmd(struct intel_sdvo *intel_sdvo, u8 cmd,
 	else
 		ret = __i2c_transfer(intel_sdvo->i2c, msgs, i+3);
 	if (ret < 0) {
-		drm_dbg_kms(&i915->drm, "I2c transfer returned %d\n", ret);
+		drm_dbg_kms(display->drm, "I2c transfer returned %d\n", ret);
 		ret = false;
 		goto out;
 	}
 	if (ret != i+3) {
 		/* failure in I2C transfer */
-		drm_dbg_kms(&i915->drm, "I2c transfer returned %d/%d\n", ret, i+3);
+		drm_dbg_kms(display->drm, "I2c transfer returned %d/%d\n", ret, i + 3);
 		ret = false;
 	}
 
@@ -540,7 +540,7 @@  static bool intel_sdvo_write_cmd(struct intel_sdvo *intel_sdvo, u8 cmd,
 static bool intel_sdvo_read_response(struct intel_sdvo *intel_sdvo,
 				     void *response, int response_len)
 {
-	struct drm_i915_private *dev_priv = to_i915(intel_sdvo->base.base.dev);
+	struct intel_display *display = to_intel_display(&intel_sdvo->base);
 	const char *cmd_status;
 	u8 retry = 15; /* 5 quick checks, followed by 10 long checks */
 	u8 status;
@@ -605,15 +605,15 @@  static bool intel_sdvo_read_response(struct intel_sdvo *intel_sdvo,
 		BUF_PRINT(" %02X", ((u8 *)response)[i]);
 	}
 
-	drm_WARN_ON(&dev_priv->drm, pos >= sizeof(buffer) - 1);
+	drm_WARN_ON(display->drm, pos >= sizeof(buffer) - 1);
 #undef BUF_PRINT
 
-	drm_dbg_kms(&dev_priv->drm, "%s: R: %s\n",
+	drm_dbg_kms(display->drm, "%s: R: %s\n",
 		    SDVO_NAME(intel_sdvo), buffer);
 	return true;
 
 log_fail:
-	drm_dbg_kms(&dev_priv->drm, "%s: R: ... failed %s\n",
+	drm_dbg_kms(display->drm, "%s: R: ... failed %s\n",
 		    SDVO_NAME(intel_sdvo), buffer);
 	return false;
 }
@@ -1009,7 +1009,7 @@  static bool intel_sdvo_write_infoframe(struct intel_sdvo *intel_sdvo,
 				       unsigned int if_index, u8 tx_rate,
 				       const u8 *data, unsigned int length)
 {
-	struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev);
+	struct intel_display *display = to_intel_display(&intel_sdvo->base);
 	u8 set_buf_index[2] = { if_index, 0 };
 	u8 hbuf_size, tmp[8];
 	int i;
@@ -1022,7 +1022,7 @@  static bool intel_sdvo_write_infoframe(struct intel_sdvo *intel_sdvo,
 	if (!intel_sdvo_get_hbuf_size(intel_sdvo, &hbuf_size))
 		return false;
 
-	drm_dbg_kms(&i915->drm,
+	drm_dbg_kms(display->drm,
 		    "writing sdvo hbuf: %i, length %u, hbuf_size: %i\n",
 		    if_index, length, hbuf_size);
 
@@ -1049,7 +1049,7 @@  static ssize_t intel_sdvo_read_infoframe(struct intel_sdvo *intel_sdvo,
 					 unsigned int if_index,
 					 u8 *data, unsigned int length)
 {
-	struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev);
+	struct intel_display *display = to_intel_display(&intel_sdvo->base);
 	u8 set_buf_index[2] = { if_index, 0 };
 	u8 hbuf_size, tx_rate, av_split;
 	int i;
@@ -1079,7 +1079,7 @@  static ssize_t intel_sdvo_read_infoframe(struct intel_sdvo *intel_sdvo,
 	if (!intel_sdvo_get_hbuf_size(intel_sdvo, &hbuf_size))
 		return false;
 
-	drm_dbg_kms(&i915->drm,
+	drm_dbg_kms(display->drm,
 		    "reading sdvo hbuf: %i, length %u, hbuf_size: %i\n",
 		    if_index, length, hbuf_size);
 
@@ -1100,7 +1100,7 @@  static bool intel_sdvo_compute_avi_infoframe(struct intel_sdvo *intel_sdvo,
 					     struct intel_crtc_state *crtc_state,
 					     struct drm_connector_state *conn_state)
 {
-	struct drm_i915_private *dev_priv = to_i915(intel_sdvo->base.base.dev);
+	struct intel_display *display = to_intel_display(&intel_sdvo->base);
 	struct hdmi_avi_infoframe *frame = &crtc_state->infoframes.avi.avi;
 	const struct drm_display_mode *adjusted_mode =
 		&crtc_state->hw.adjusted_mode;
@@ -1126,7 +1126,7 @@  static bool intel_sdvo_compute_avi_infoframe(struct intel_sdvo *intel_sdvo,
 					   HDMI_QUANTIZATION_RANGE_FULL);
 
 	ret = hdmi_avi_infoframe_check(frame);
-	if (drm_WARN_ON(&dev_priv->drm, ret))
+	if (drm_WARN_ON(display->drm, ret))
 		return false;
 
 	return true;
@@ -1135,7 +1135,7 @@  static bool intel_sdvo_compute_avi_infoframe(struct intel_sdvo *intel_sdvo,
 static bool intel_sdvo_set_avi_infoframe(struct intel_sdvo *intel_sdvo,
 					 const struct intel_crtc_state *crtc_state)
 {
-	struct drm_i915_private *dev_priv = to_i915(intel_sdvo->base.base.dev);
+	struct intel_display *display = to_intel_display(&intel_sdvo->base);
 	u8 sdvo_data[HDMI_INFOFRAME_SIZE(AVI)];
 	const union hdmi_infoframe *frame = &crtc_state->infoframes.avi;
 	ssize_t len;
@@ -1144,12 +1144,12 @@  static bool intel_sdvo_set_avi_infoframe(struct intel_sdvo *intel_sdvo,
 	     intel_hdmi_infoframe_enable(HDMI_INFOFRAME_TYPE_AVI)) == 0)
 		return true;
 
-	if (drm_WARN_ON(&dev_priv->drm,
+	if (drm_WARN_ON(display->drm,
 			frame->any.type != HDMI_INFOFRAME_TYPE_AVI))
 		return false;
 
 	len = hdmi_infoframe_pack_only(frame, sdvo_data, sizeof(sdvo_data));
-	if (drm_WARN_ON(&dev_priv->drm, len < 0))
+	if (drm_WARN_ON(display->drm, len < 0))
 		return false;
 
 	return intel_sdvo_write_infoframe(intel_sdvo, SDVO_HBUF_INDEX_AVI_IF,
@@ -1160,7 +1160,7 @@  static bool intel_sdvo_set_avi_infoframe(struct intel_sdvo *intel_sdvo,
 static void intel_sdvo_get_avi_infoframe(struct intel_sdvo *intel_sdvo,
 					 struct intel_crtc_state *crtc_state)
 {
-	struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev);
+	struct intel_display *display = to_intel_display(&intel_sdvo->base);
 	u8 sdvo_data[HDMI_INFOFRAME_SIZE(AVI)];
 	union hdmi_infoframe *frame = &crtc_state->infoframes.avi;
 	ssize_t len;
@@ -1172,7 +1172,7 @@  static void intel_sdvo_get_avi_infoframe(struct intel_sdvo *intel_sdvo,
 	len = intel_sdvo_read_infoframe(intel_sdvo, SDVO_HBUF_INDEX_AVI_IF,
 					sdvo_data, sizeof(sdvo_data));
 	if (len < 0) {
-		drm_dbg_kms(&i915->drm, "failed to read AVI infoframe\n");
+		drm_dbg_kms(display->drm, "failed to read AVI infoframe\n");
 		return;
 	} else if (len == 0) {
 		return;
@@ -1183,12 +1183,12 @@  static void intel_sdvo_get_avi_infoframe(struct intel_sdvo *intel_sdvo,
 
 	ret = hdmi_infoframe_unpack(frame, sdvo_data, len);
 	if (ret) {
-		drm_dbg_kms(&i915->drm, "Failed to unpack AVI infoframe\n");
+		drm_dbg_kms(display->drm, "Failed to unpack AVI infoframe\n");
 		return;
 	}
 
 	if (frame->any.type != HDMI_INFOFRAME_TYPE_AVI)
-		drm_dbg_kms(&i915->drm,
+		drm_dbg_kms(display->drm,
 			    "Found the wrong infoframe type 0x%x (expected 0x%02x)\n",
 			    frame->any.type, HDMI_INFOFRAME_TYPE_AVI);
 }
@@ -1196,7 +1196,7 @@  static void intel_sdvo_get_avi_infoframe(struct intel_sdvo *intel_sdvo,
 static void intel_sdvo_get_eld(struct intel_sdvo *intel_sdvo,
 			       struct intel_crtc_state *crtc_state)
 {
-	struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev);
+	struct intel_display *display = to_intel_display(&intel_sdvo->base);
 	ssize_t len;
 	u8 val;
 
@@ -1212,7 +1212,7 @@  static void intel_sdvo_get_eld(struct intel_sdvo *intel_sdvo,
 	len = intel_sdvo_read_infoframe(intel_sdvo, SDVO_HBUF_INDEX_ELD,
 					crtc_state->eld, sizeof(crtc_state->eld));
 	if (len < 0)
-		drm_dbg_kms(&i915->drm, "failed to read ELD\n");
+		drm_dbg_kms(display->drm, "failed to read ELD\n");
 }
 
 static bool intel_sdvo_set_tv_format(struct intel_sdvo *intel_sdvo,
@@ -1282,7 +1282,7 @@  intel_sdvo_get_preferred_input_mode(struct intel_sdvo *intel_sdvo,
 
 static int i9xx_adjust_sdvo_tv_clock(struct intel_crtc_state *pipe_config)
 {
-	struct drm_i915_private *dev_priv = to_i915(pipe_config->uapi.crtc->dev);
+	struct intel_display *display = to_intel_display(pipe_config);
 	unsigned int dotclock = pipe_config->hw.adjusted_mode.crtc_clock;
 	struct dpll *clock = &pipe_config->dpll;
 
@@ -1303,7 +1303,7 @@  static int i9xx_adjust_sdvo_tv_clock(struct intel_crtc_state *pipe_config)
 		clock->m1 = 12;
 		clock->m2 = 8;
 	} else {
-		drm_dbg_kms(&dev_priv->drm,
+		drm_dbg_kms(display->drm,
 			    "SDVO TV clock out of range: %i\n", dotclock);
 		return -EINVAL;
 	}
@@ -1359,6 +1359,7 @@  static int intel_sdvo_compute_config(struct intel_encoder *encoder,
 				     struct intel_crtc_state *pipe_config,
 				     struct drm_connector_state *conn_state)
 {
+	struct intel_display *display = to_intel_display(encoder);
 	struct drm_i915_private *i915 = to_i915(encoder->base.dev);
 	struct intel_sdvo *intel_sdvo = to_sdvo(encoder);
 	struct intel_sdvo_connector *intel_sdvo_connector =
@@ -1366,13 +1367,13 @@  static int intel_sdvo_compute_config(struct intel_encoder *encoder,
 	struct drm_display_mode *adjusted_mode = &pipe_config->hw.adjusted_mode;
 	struct drm_display_mode *mode = &pipe_config->hw.mode;
 
-	if (HAS_PCH_SPLIT(to_i915(encoder->base.dev))) {
+	if (HAS_PCH_SPLIT(i915)) {
 		pipe_config->has_pch_encoder = true;
 		if (!intel_fdi_compute_pipe_bpp(pipe_config))
 			return -EINVAL;
 	}
 
-	drm_dbg_kms(&i915->drm, "forcing bpc to 8 for SDVO\n");
+	drm_dbg_kms(display->drm, "forcing bpc to 8 for SDVO\n");
 	/* FIXME: Don't increase pipe_bpp */
 	pipe_config->pipe_bpp = 8*3;
 	pipe_config->sink_format = INTEL_OUTPUT_FORMAT_RGB;
@@ -1451,7 +1452,7 @@  static int intel_sdvo_compute_config(struct intel_encoder *encoder,
 
 	if (!intel_sdvo_compute_avi_infoframe(intel_sdvo,
 					      pipe_config, conn_state)) {
-		drm_dbg_kms(&i915->drm, "bad AVI infoframe\n");
+		drm_dbg_kms(display->drm, "bad AVI infoframe\n");
 		return -EINVAL;
 	}
 
@@ -1525,6 +1526,7 @@  static void intel_sdvo_pre_enable(struct intel_atomic_state *state,
 				  const struct intel_crtc_state *crtc_state,
 				  const struct drm_connector_state *conn_state)
 {
+	struct intel_display *display = to_intel_display(intel_encoder);
 	struct drm_i915_private *dev_priv = to_i915(intel_encoder->base.dev);
 	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
 	const struct drm_display_mode *adjusted_mode = &crtc_state->hw.adjusted_mode;
@@ -1570,7 +1572,7 @@  static void intel_sdvo_pre_enable(struct intel_atomic_state *state,
 		intel_sdvo_get_dtd_from_mode(&output_dtd, mode);
 	}
 	if (!intel_sdvo_set_output_timing(intel_sdvo, &output_dtd))
-		drm_info(&dev_priv->drm,
+		drm_info(display->drm,
 			 "Setting output timings on %s failed\n",
 			 SDVO_NAME(intel_sdvo));
 
@@ -1600,13 +1602,13 @@  static void intel_sdvo_pre_enable(struct intel_atomic_state *state,
 	if (IS_TV(intel_sdvo_connector) || IS_LVDS(intel_sdvo_connector))
 		input_dtd.part2.sdvo_flags = intel_sdvo->dtd_sdvo_flags;
 	if (!intel_sdvo_set_input_timing(intel_sdvo, &input_dtd))
-		drm_info(&dev_priv->drm,
+		drm_info(display->drm,
 			 "Setting input timings on %s failed\n",
 			 SDVO_NAME(intel_sdvo));
 
 	switch (crtc_state->pixel_multiplier) {
 	default:
-		drm_WARN(&dev_priv->drm, 1,
+		drm_WARN(display->drm, 1,
 			 "unknown pixel multiplier specified\n");
 		fallthrough;
 	case 1: rate = SDVO_CLOCK_RATE_MULT_1X; break;
@@ -1617,14 +1619,14 @@  static void intel_sdvo_pre_enable(struct intel_atomic_state *state,
 		return;
 
 	/* Set the SDVO control regs. */
-	if (DISPLAY_VER(dev_priv) >= 4) {
+	if (DISPLAY_VER(display) >= 4) {
 		/* The real mode polarity is set by the SDVO commands, using
 		 * struct intel_sdvo_dtd. */
 		sdvox = SDVO_VSYNC_ACTIVE_HIGH | SDVO_HSYNC_ACTIVE_HIGH;
-		if (DISPLAY_VER(dev_priv) < 5)
+		if (DISPLAY_VER(display) < 5)
 			sdvox |= SDVO_BORDER_ENABLE;
 	} else {
-		sdvox = intel_de_read(dev_priv, intel_sdvo->sdvo_reg);
+		sdvox = intel_de_read(display, intel_sdvo->sdvo_reg);
 		if (intel_sdvo->base.port == PORT_B)
 			sdvox &= SDVOB_PRESERVE_MASK;
 		else
@@ -1637,10 +1639,10 @@  static void intel_sdvo_pre_enable(struct intel_atomic_state *state,
 	else
 		sdvox |= SDVO_PIPE_SEL(crtc->pipe);
 
-	if (DISPLAY_VER(dev_priv) >= 4) {
+	if (DISPLAY_VER(display) >= 4) {
 		/* done in crtc_mode_set as the dpll_md reg must be written early */
-	} else if (IS_I945G(dev_priv) || IS_I945GM(dev_priv) ||
-		   IS_G33(dev_priv) || IS_PINEVIEW(dev_priv)) {
+	} else if (display->platform.i945g || display->platform.i945gm ||
+		   display->platform.g33 || display->platform.pineview) {
 		/* done in crtc_mode_set as it lives inside the dpll register */
 	} else {
 		sdvox |= (crtc_state->pixel_multiplier - 1)
@@ -1648,7 +1650,7 @@  static void intel_sdvo_pre_enable(struct intel_atomic_state *state,
 	}
 
 	if (input_dtd.part2.sdvo_flags & SDVO_NEED_TO_STALL &&
-	    DISPLAY_VER(dev_priv) < 5)
+	    DISPLAY_VER(display) < 5)
 		sdvox |= SDVO_STALL_SELECT;
 	intel_sdvo_write_sdvox(intel_sdvo, sdvox);
 }
@@ -1665,17 +1667,18 @@  static bool intel_sdvo_connector_get_hw_state(struct intel_connector *connector)
 	return active_outputs & intel_sdvo_connector->output_flag;
 }
 
-bool intel_sdvo_port_enabled(struct drm_i915_private *dev_priv,
+bool intel_sdvo_port_enabled(struct intel_display *display,
 			     i915_reg_t sdvo_reg, enum pipe *pipe)
 {
+	struct drm_i915_private *dev_priv = to_i915(display->drm);
 	u32 val;
 
-	val = intel_de_read(dev_priv, sdvo_reg);
+	val = intel_de_read(display, sdvo_reg);
 
 	/* asserts want to know the pipe even if the port is disabled */
 	if (HAS_PCH_CPT(dev_priv))
 		*pipe = (val & SDVO_PIPE_SEL_MASK_CPT) >> SDVO_PIPE_SEL_SHIFT_CPT;
-	else if (IS_CHERRYVIEW(dev_priv))
+	else if (display->platform.cherryview)
 		*pipe = (val & SDVO_PIPE_SEL_MASK_CHV) >> SDVO_PIPE_SEL_SHIFT_CHV;
 	else
 		*pipe = (val & SDVO_PIPE_SEL_MASK) >> SDVO_PIPE_SEL_SHIFT;
@@ -1686,14 +1689,14 @@  bool intel_sdvo_port_enabled(struct drm_i915_private *dev_priv,
 static bool intel_sdvo_get_hw_state(struct intel_encoder *encoder,
 				    enum pipe *pipe)
 {
-	struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
+	struct intel_display *display = to_intel_display(encoder);
 	struct intel_sdvo *intel_sdvo = to_sdvo(encoder);
 	u16 active_outputs = 0;
 	bool ret;
 
 	intel_sdvo_get_active_outputs(intel_sdvo, &active_outputs);
 
-	ret = intel_sdvo_port_enabled(dev_priv, intel_sdvo->sdvo_reg, pipe);
+	ret = intel_sdvo_port_enabled(display, intel_sdvo->sdvo_reg, pipe);
 
 	return ret || active_outputs;
 }
@@ -1701,8 +1704,7 @@  static bool intel_sdvo_get_hw_state(struct intel_encoder *encoder,
 static void intel_sdvo_get_config(struct intel_encoder *encoder,
 				  struct intel_crtc_state *pipe_config)
 {
-	struct drm_device *dev = encoder->base.dev;
-	struct drm_i915_private *dev_priv = to_i915(dev);
+	struct intel_display *display = to_intel_display(encoder);
 	struct intel_sdvo *intel_sdvo = to_sdvo(encoder);
 	struct intel_sdvo_dtd dtd;
 	int encoder_pixel_multiplier = 0;
@@ -1713,7 +1715,7 @@  static void intel_sdvo_get_config(struct intel_encoder *encoder,
 
 	pipe_config->output_types |= BIT(INTEL_OUTPUT_SDVO);
 
-	sdvox = intel_de_read(dev_priv, intel_sdvo->sdvo_reg);
+	sdvox = intel_de_read(display, intel_sdvo->sdvo_reg);
 
 	ret = intel_sdvo_get_input_timing(intel_sdvo, &dtd);
 	if (!ret) {
@@ -1721,7 +1723,7 @@  static void intel_sdvo_get_config(struct intel_encoder *encoder,
 		 * Some sdvo encoders are not spec compliant and don't
 		 * implement the mandatory get_timings function.
 		 */
-		drm_dbg(&dev_priv->drm, "failed to retrieve SDVO DTD\n");
+		drm_dbg_kms(display->drm, "failed to retrieve SDVO DTD\n");
 		pipe_config->quirks |= PIPE_CONFIG_QUIRK_MODE_SYNC_FLAGS;
 	} else {
 		if (dtd.part2.dtd_flags & DTD_FLAG_HSYNC_POSITIVE)
@@ -1744,7 +1746,7 @@  static void intel_sdvo_get_config(struct intel_encoder *encoder,
 	 * encoder->get_config we so already have a valid pixel multiplier on all
 	 * other platforms.
 	 */
-	if (IS_I915G(dev_priv) || IS_I915GM(dev_priv)) {
+	if (display->platform.i915g || display->platform.i915gm) {
 		pipe_config->pixel_multiplier =
 			((sdvox & SDVO_PORT_MULTIPLY_MASK)
 			 >> SDVO_PORT_MULTIPLY_SHIFT) + 1;
@@ -1773,7 +1775,7 @@  static void intel_sdvo_get_config(struct intel_encoder *encoder,
 		}
 	}
 
-	drm_WARN(dev,
+	drm_WARN(display->drm,
 		 encoder_pixel_multiplier != pipe_config->pixel_multiplier,
 		 "SDVO pixel multiplier mismatch, port: %i, encoder: %i\n",
 		 pipe_config->pixel_multiplier, encoder_pixel_multiplier);
@@ -1849,7 +1851,7 @@  static void intel_disable_sdvo(struct intel_atomic_state *state,
 		intel_sdvo_set_encoder_power_state(intel_sdvo,
 						   DRM_MODE_DPMS_OFF);
 
-	temp = intel_de_read(dev_priv, intel_sdvo->sdvo_reg);
+	temp = intel_de_read(display, intel_sdvo->sdvo_reg);
 
 	temp &= ~SDVO_ENABLE;
 	intel_sdvo_write_sdvox(intel_sdvo, temp);
@@ -1900,8 +1902,7 @@  static void intel_enable_sdvo(struct intel_atomic_state *state,
 			      const struct intel_crtc_state *pipe_config,
 			      const struct drm_connector_state *conn_state)
 {
-	struct drm_device *dev = encoder->base.dev;
-	struct drm_i915_private *dev_priv = to_i915(dev);
+	struct intel_display *display = to_intel_display(encoder);
 	struct intel_sdvo *intel_sdvo = to_sdvo(encoder);
 	struct intel_sdvo_connector *intel_sdvo_connector =
 		to_intel_sdvo_connector(conn_state->connector);
@@ -1911,7 +1912,7 @@  static void intel_enable_sdvo(struct intel_atomic_state *state,
 	int i;
 	bool success;
 
-	temp = intel_de_read(dev_priv, intel_sdvo->sdvo_reg);
+	temp = intel_de_read(display, intel_sdvo->sdvo_reg);
 	temp |= SDVO_ENABLE;
 	intel_sdvo_write_sdvox(intel_sdvo, temp);
 
@@ -1926,7 +1927,7 @@  static void intel_enable_sdvo(struct intel_atomic_state *state,
 	 * a given it the status is a success, we succeeded.
 	 */
 	if (success && !input1) {
-		drm_dbg_kms(&dev_priv->drm,
+		drm_dbg_kms(display->drm,
 			    "First %s output reported failure to sync\n",
 			    SDVO_NAME(intel_sdvo));
 	}
@@ -1941,12 +1942,13 @@  static enum drm_mode_status
 intel_sdvo_mode_valid(struct drm_connector *connector,
 		      const struct drm_display_mode *mode)
 {
+	struct intel_display *display = to_intel_display(connector->dev);
 	struct drm_i915_private *i915 = to_i915(connector->dev);
 	struct intel_sdvo *intel_sdvo = intel_attached_sdvo(to_intel_connector(connector));
 	struct intel_sdvo_connector *intel_sdvo_connector =
 		to_intel_sdvo_connector(connector);
 	bool has_hdmi_sink = intel_has_hdmi_sink(intel_sdvo_connector, connector->state);
-	int max_dotclk = i915->display.cdclk.max_dotclk_freq;
+	int max_dotclk = display->cdclk.max_dotclk_freq;
 	enum drm_mode_status status;
 	int clock = mode->clock;
 
@@ -1982,14 +1984,15 @@  intel_sdvo_mode_valid(struct drm_connector *connector,
 
 static bool intel_sdvo_get_capabilities(struct intel_sdvo *intel_sdvo, struct intel_sdvo_caps *caps)
 {
-	struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev);
+	struct intel_display *display = to_intel_display(&intel_sdvo->base);
+
 	BUILD_BUG_ON(sizeof(*caps) != 8);
 	if (!intel_sdvo_get_value(intel_sdvo,
 				  SDVO_CMD_GET_DEVICE_CAPS,
 				  caps, sizeof(*caps)))
 		return false;
 
-	drm_dbg_kms(&i915->drm, "SDVO capabilities:\n"
+	drm_dbg_kms(display->drm, "SDVO capabilities:\n"
 		    "  vendor_id: %d\n"
 		    "  device_id: %d\n"
 		    "  device_rev_id: %d\n"
@@ -2031,17 +2034,17 @@  static u8 intel_sdvo_get_colorimetry_cap(struct intel_sdvo *intel_sdvo)
 
 static u16 intel_sdvo_get_hotplug_support(struct intel_sdvo *intel_sdvo)
 {
-	struct drm_i915_private *dev_priv = to_i915(intel_sdvo->base.base.dev);
+	struct intel_display *display = to_intel_display(&intel_sdvo->base);
 	u16 hotplug;
 
-	if (!I915_HAS_HOTPLUG(dev_priv))
+	if (!I915_HAS_HOTPLUG(display))
 		return 0;
 
 	/*
 	 * HW Erratum: SDVO Hotplug is broken on all i945G chips, there's noise
 	 * on the line.
 	 */
-	if (IS_I945G(dev_priv) || IS_I945GM(dev_priv))
+	if (display->platform.i945g || display->platform.i945gm)
 		return 0;
 
 	if (!intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_HOT_PLUG_SUPPORT,
@@ -2138,13 +2141,12 @@  static enum drm_connector_status
 intel_sdvo_detect(struct drm_connector *connector, bool force)
 {
 	struct intel_display *display = to_intel_display(connector->dev);
-	struct drm_i915_private *i915 = to_i915(connector->dev);
 	struct intel_sdvo *intel_sdvo = intel_attached_sdvo(to_intel_connector(connector));
 	struct intel_sdvo_connector *intel_sdvo_connector = to_intel_sdvo_connector(connector);
 	enum drm_connector_status ret;
 	u16 response;
 
-	drm_dbg_kms(&i915->drm, "[CONNECTOR:%d:%s]\n",
+	drm_dbg_kms(display->drm, "[CONNECTOR:%d:%s]\n",
 		    connector->base.id, connector->name);
 
 	if (!intel_display_device_enabled(display))
@@ -2162,7 +2164,7 @@  intel_sdvo_detect(struct drm_connector *connector, bool force)
 				  &response, 2))
 		return connector_status_unknown;
 
-	drm_dbg_kms(&i915->drm, "SDVO response %d %d [%x]\n",
+	drm_dbg_kms(display->drm, "SDVO response %d %d [%x]\n",
 		    response & 0xff, response >> 8,
 		    intel_sdvo_connector->output_flag);
 
@@ -2301,7 +2303,6 @@  static int intel_sdvo_get_tv_modes(struct drm_connector *connector)
 {
 	struct intel_display *display = to_intel_display(connector->dev);
 	struct intel_sdvo *intel_sdvo = intel_attached_sdvo(to_intel_connector(connector));
-	struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev);
 	struct intel_sdvo_connector *intel_sdvo_connector =
 		to_intel_sdvo_connector(connector);
 	const struct drm_connector_state *conn_state = connector->state;
@@ -2310,7 +2311,7 @@  static int intel_sdvo_get_tv_modes(struct drm_connector *connector)
 	int num_modes = 0;
 	int i;
 
-	drm_dbg_kms(&i915->drm, "[CONNECTOR:%d:%s]\n",
+	drm_dbg_kms(display->drm, "[CONNECTOR:%d:%s]\n",
 		    connector->base.id, connector->name);
 
 	if (!intel_display_driver_check_access(display))
@@ -2352,9 +2353,9 @@  static int intel_sdvo_get_tv_modes(struct drm_connector *connector)
 
 static int intel_sdvo_get_lvds_modes(struct drm_connector *connector)
 {
-	struct drm_i915_private *dev_priv = to_i915(connector->dev);
+	struct intel_display *display = to_intel_display(connector->dev);
 
-	drm_dbg_kms(&dev_priv->drm, "[CONNECTOR:%d:%s]\n",
+	drm_dbg_kms(display->drm, "[CONNECTOR:%d:%s]\n",
 		    connector->base.id, connector->name);
 
 	return intel_panel_get_modes(to_intel_connector(connector));
@@ -2618,14 +2619,14 @@  static struct intel_sdvo_ddc *
 intel_sdvo_select_ddc_bus(struct intel_sdvo *sdvo,
 			  struct intel_sdvo_connector *connector)
 {
-	struct drm_i915_private *dev_priv = to_i915(sdvo->base.base.dev);
+	struct intel_display *display = to_intel_display(&sdvo->base);
 	const struct sdvo_device_mapping *mapping;
 	int ddc_bus;
 
 	if (sdvo->base.port == PORT_B)
-		mapping = &dev_priv->display.vbt.sdvo_mappings[0];
+		mapping = &display->vbt.sdvo_mappings[0];
 	else
-		mapping = &dev_priv->display.vbt.sdvo_mappings[1];
+		mapping = &display->vbt.sdvo_mappings[1];
 
 	if (mapping->initialized)
 		ddc_bus = (mapping->ddc_pin & 0xf0) >> 4;
@@ -2642,14 +2643,13 @@  static void
 intel_sdvo_select_i2c_bus(struct intel_sdvo *sdvo)
 {
 	struct intel_display *display = to_intel_display(&sdvo->base);
-	struct drm_i915_private *dev_priv = to_i915(sdvo->base.base.dev);
 	const struct sdvo_device_mapping *mapping;
 	u8 pin;
 
 	if (sdvo->base.port == PORT_B)
-		mapping = &dev_priv->display.vbt.sdvo_mappings[0];
+		mapping = &display->vbt.sdvo_mappings[0];
 	else
-		mapping = &dev_priv->display.vbt.sdvo_mappings[1];
+		mapping = &display->vbt.sdvo_mappings[1];
 
 	if (mapping->initialized &&
 	    intel_gmbus_is_valid_pin(display, mapping->i2c_pin))
@@ -2657,7 +2657,7 @@  intel_sdvo_select_i2c_bus(struct intel_sdvo *sdvo)
 	else
 		pin = GMBUS_PIN_DPB;
 
-	drm_dbg_kms(&dev_priv->drm, "[ENCODER:%d:%s] I2C pin %d, target addr 0x%x\n",
+	drm_dbg_kms(display->drm, "[ENCODER:%d:%s] I2C pin %d, target addr 0x%x\n",
 		    sdvo->base.base.base.id, sdvo->base.base.name,
 		    pin, sdvo->target_addr);
 
@@ -2687,15 +2687,15 @@  intel_sdvo_is_hdmi_connector(struct intel_sdvo *intel_sdvo)
 static u8
 intel_sdvo_get_target_addr(struct intel_sdvo *sdvo)
 {
-	struct drm_i915_private *dev_priv = to_i915(sdvo->base.base.dev);
+	struct intel_display *display = to_intel_display(&sdvo->base);
 	const struct sdvo_device_mapping *my_mapping, *other_mapping;
 
 	if (sdvo->base.port == PORT_B) {
-		my_mapping = &dev_priv->display.vbt.sdvo_mappings[0];
-		other_mapping = &dev_priv->display.vbt.sdvo_mappings[1];
+		my_mapping = &display->vbt.sdvo_mappings[0];
+		other_mapping = &display->vbt.sdvo_mappings[1];
 	} else {
-		my_mapping = &dev_priv->display.vbt.sdvo_mappings[1];
-		other_mapping = &dev_priv->display.vbt.sdvo_mappings[0];
+		my_mapping = &display->vbt.sdvo_mappings[1];
+		other_mapping = &display->vbt.sdvo_mappings[0];
 	}
 
 	/* If the BIOS described our SDVO device, take advantage of it. */
@@ -2731,7 +2731,7 @@  static int
 intel_sdvo_connector_init(struct intel_sdvo_connector *connector,
 			  struct intel_sdvo *encoder)
 {
-	struct drm_i915_private *i915 = to_i915(encoder->base.base.dev);
+	struct intel_display *display = to_intel_display(&encoder->base);
 	struct intel_sdvo_ddc *ddc = NULL;
 	int ret;
 
@@ -2756,7 +2756,7 @@  intel_sdvo_connector_init(struct intel_sdvo_connector *connector,
 	intel_connector_attach_encoder(&connector->base, &encoder->base);
 
 	if (ddc)
-		drm_dbg_kms(&i915->drm, "[CONNECTOR:%d:%s] using %s\n",
+		drm_dbg_kms(display->drm, "[CONNECTOR:%d:%s] using %s\n",
 			    connector->base.base.base.id, connector->base.base.name,
 			    ddc->ddc.name);
 
@@ -2799,14 +2799,14 @@  static struct intel_sdvo_connector *intel_sdvo_connector_alloc(void)
 static bool
 intel_sdvo_dvi_init(struct intel_sdvo *intel_sdvo, u16 type)
 {
+	struct intel_display *display = to_intel_display(&intel_sdvo->base);
 	struct drm_encoder *encoder = &intel_sdvo->base.base;
 	struct drm_connector *connector;
 	struct intel_encoder *intel_encoder = to_intel_encoder(encoder);
-	struct drm_i915_private *i915 = to_i915(intel_encoder->base.dev);
 	struct intel_connector *intel_connector;
 	struct intel_sdvo_connector *intel_sdvo_connector;
 
-	drm_dbg_kms(&i915->drm, "initialising DVI type 0x%x\n", type);
+	drm_dbg_kms(display->drm, "initialising DVI type 0x%x\n", type);
 
 	intel_sdvo_connector = intel_sdvo_connector_alloc();
 	if (!intel_sdvo_connector)
@@ -2852,13 +2852,13 @@  intel_sdvo_dvi_init(struct intel_sdvo *intel_sdvo, u16 type)
 static bool
 intel_sdvo_tv_init(struct intel_sdvo *intel_sdvo, u16 type)
 {
-	struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev);
+	struct intel_display *display = to_intel_display(&intel_sdvo->base);
 	struct drm_encoder *encoder = &intel_sdvo->base.base;
 	struct drm_connector *connector;
 	struct intel_connector *intel_connector;
 	struct intel_sdvo_connector *intel_sdvo_connector;
 
-	drm_dbg_kms(&i915->drm, "initialising TV type 0x%x\n", type);
+	drm_dbg_kms(display->drm, "initialising TV type 0x%x\n", type);
 
 	intel_sdvo_connector = intel_sdvo_connector_alloc();
 	if (!intel_sdvo_connector)
@@ -2892,13 +2892,13 @@  intel_sdvo_tv_init(struct intel_sdvo *intel_sdvo, u16 type)
 static bool
 intel_sdvo_analog_init(struct intel_sdvo *intel_sdvo, u16 type)
 {
-	struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev);
+	struct intel_display *display = to_intel_display(&intel_sdvo->base);
 	struct drm_encoder *encoder = &intel_sdvo->base.base;
 	struct drm_connector *connector;
 	struct intel_connector *intel_connector;
 	struct intel_sdvo_connector *intel_sdvo_connector;
 
-	drm_dbg_kms(&i915->drm, "initialising analog type 0x%x\n", type);
+	drm_dbg_kms(display->drm, "initialising analog type 0x%x\n", type);
 
 	intel_sdvo_connector = intel_sdvo_connector_alloc();
 	if (!intel_sdvo_connector)
@@ -2926,12 +2926,11 @@  intel_sdvo_lvds_init(struct intel_sdvo *intel_sdvo, u16 type)
 {
 	struct intel_display *display = to_intel_display(&intel_sdvo->base);
 	struct drm_encoder *encoder = &intel_sdvo->base.base;
-	struct drm_i915_private *i915 = to_i915(encoder->dev);
 	struct drm_connector *connector;
 	struct intel_connector *intel_connector;
 	struct intel_sdvo_connector *intel_sdvo_connector;
 
-	drm_dbg_kms(&i915->drm, "initialising LVDS type 0x%x\n", type);
+	drm_dbg_kms(display->drm, "initialising LVDS type 0x%x\n", type);
 
 	intel_sdvo_connector = intel_sdvo_connector_alloc();
 	if (!intel_sdvo_connector)
@@ -2961,12 +2960,12 @@  intel_sdvo_lvds_init(struct intel_sdvo *intel_sdvo, u16 type)
 	intel_panel_add_vbt_sdvo_fixed_mode(intel_connector);
 
 	if (!intel_panel_preferred_fixed_mode(intel_connector)) {
-		mutex_lock(&i915->drm.mode_config.mutex);
+		mutex_lock(&display->drm->mode_config.mutex);
 
 		intel_ddc_get_modes(connector, connector->ddc);
 		intel_panel_add_edid_fixed_modes(intel_connector, false);
 
-		mutex_unlock(&i915->drm.mode_config.mutex);
+		mutex_unlock(&display->drm->mode_config.mutex);
 	}
 
 	intel_panel_init(intel_connector, NULL);
@@ -3015,7 +3014,7 @@  static bool intel_sdvo_output_init(struct intel_sdvo *sdvo, u16 type)
 static bool
 intel_sdvo_output_setup(struct intel_sdvo *intel_sdvo)
 {
-	struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev);
+	struct intel_display *display = to_intel_display(&intel_sdvo->base);
 	static const u16 probe_order[] = {
 		SDVO_OUTPUT_TMDS0,
 		SDVO_OUTPUT_TMDS1,
@@ -3034,7 +3033,7 @@  intel_sdvo_output_setup(struct intel_sdvo *intel_sdvo)
 	flags = intel_sdvo_filter_output_flags(intel_sdvo->caps.output_flags);
 
 	if (flags == 0) {
-		drm_dbg_kms(&i915->drm,
+		drm_dbg_kms(display->drm,
 			    "%s: Unknown SDVO output type (0x%04x)\n",
 			    SDVO_NAME(intel_sdvo), intel_sdvo->caps.output_flags);
 		return false;
@@ -3057,11 +3056,11 @@  intel_sdvo_output_setup(struct intel_sdvo *intel_sdvo)
 
 static void intel_sdvo_output_cleanup(struct intel_sdvo *intel_sdvo)
 {
-	struct drm_device *dev = intel_sdvo->base.base.dev;
+	struct intel_display *display = to_intel_display(&intel_sdvo->base);
 	struct drm_connector *connector, *tmp;
 
 	list_for_each_entry_safe(connector, tmp,
-				 &dev->mode_config.connector_list, head) {
+				 &display->drm->mode_config.connector_list, head) {
 		if (intel_attached_encoder(to_intel_connector(connector)) == &intel_sdvo->base) {
 			drm_connector_unregister(connector);
 			intel_connector_destroy(connector);
@@ -3073,7 +3072,7 @@  static bool intel_sdvo_tv_create_property(struct intel_sdvo *intel_sdvo,
 					  struct intel_sdvo_connector *intel_sdvo_connector,
 					  int type)
 {
-	struct drm_device *dev = intel_sdvo->base.base.dev;
+	struct intel_display *display = to_intel_display(&intel_sdvo->base);
 	struct intel_sdvo_tv_format format;
 	u32 format_map, i;
 
@@ -3098,7 +3097,7 @@  static bool intel_sdvo_tv_create_property(struct intel_sdvo *intel_sdvo,
 
 
 	intel_sdvo_connector->tv_format =
-		drm_property_create(dev, DRM_MODE_PROP_ENUM,
+		drm_property_create(display->drm, DRM_MODE_PROP_ENUM,
 				    "mode", intel_sdvo_connector->format_supported_num);
 	if (!intel_sdvo_connector->tv_format)
 		return false;
@@ -3120,12 +3119,12 @@  static bool intel_sdvo_tv_create_property(struct intel_sdvo *intel_sdvo,
 		    !intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_##NAME, &response, 2)) \
 			return false; \
 		intel_sdvo_connector->name = \
-			drm_property_create_range(dev, 0, #name, 0, data_value[0]); \
+			drm_property_create_range(display->drm, 0, #name, 0, data_value[0]); \
 		if (!intel_sdvo_connector->name) return false; \
 		state_assignment = response; \
 		drm_object_attach_property(&connector->base, \
 					   intel_sdvo_connector->name, 0); \
-		drm_dbg_kms(dev, #name ": max %d, default %d, current %d\n", \
+		drm_dbg_kms(display->drm, #name ": max %d, default %d, current %d\n", \
 			    data_value[0], data_value[1], response); \
 	} \
 } while (0)
@@ -3137,8 +3136,7 @@  intel_sdvo_create_enhance_property_tv(struct intel_sdvo *intel_sdvo,
 				      struct intel_sdvo_connector *intel_sdvo_connector,
 				      struct intel_sdvo_enhancements_reply enhancements)
 {
-	struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev);
-	struct drm_device *dev = intel_sdvo->base.base.dev;
+	struct intel_display *display = to_intel_display(&intel_sdvo->base);
 	struct drm_connector *connector = &intel_sdvo_connector->base.base;
 	struct drm_connector_state *conn_state = connector->state;
 	struct intel_sdvo_connector_state *sdvo_state =
@@ -3161,7 +3159,7 @@  intel_sdvo_create_enhance_property_tv(struct intel_sdvo *intel_sdvo,
 
 		intel_sdvo_connector->max_hscan = data_value[0];
 		intel_sdvo_connector->left =
-			drm_property_create_range(dev, 0, "left_margin", 0, data_value[0]);
+			drm_property_create_range(display->drm, 0, "left_margin", 0, data_value[0]);
 		if (!intel_sdvo_connector->left)
 			return false;
 
@@ -3169,13 +3167,13 @@  intel_sdvo_create_enhance_property_tv(struct intel_sdvo *intel_sdvo,
 					   intel_sdvo_connector->left, 0);
 
 		intel_sdvo_connector->right =
-			drm_property_create_range(dev, 0, "right_margin", 0, data_value[0]);
+			drm_property_create_range(display->drm, 0, "right_margin", 0, data_value[0]);
 		if (!intel_sdvo_connector->right)
 			return false;
 
 		drm_object_attach_property(&connector->base,
 					   intel_sdvo_connector->right, 0);
-		drm_dbg_kms(&i915->drm, "h_overscan: max %d, default %d, current %d\n",
+		drm_dbg_kms(display->drm, "h_overscan: max %d, default %d, current %d\n",
 			    data_value[0], data_value[1], response);
 	}
 
@@ -3194,7 +3192,7 @@  intel_sdvo_create_enhance_property_tv(struct intel_sdvo *intel_sdvo,
 
 		intel_sdvo_connector->max_vscan = data_value[0];
 		intel_sdvo_connector->top =
-			drm_property_create_range(dev, 0,
+			drm_property_create_range(display->drm, 0,
 						  "top_margin", 0, data_value[0]);
 		if (!intel_sdvo_connector->top)
 			return false;
@@ -3203,14 +3201,14 @@  intel_sdvo_create_enhance_property_tv(struct intel_sdvo *intel_sdvo,
 					   intel_sdvo_connector->top, 0);
 
 		intel_sdvo_connector->bottom =
-			drm_property_create_range(dev, 0,
+			drm_property_create_range(display->drm, 0,
 						  "bottom_margin", 0, data_value[0]);
 		if (!intel_sdvo_connector->bottom)
 			return false;
 
 		drm_object_attach_property(&connector->base,
 					   intel_sdvo_connector->bottom, 0);
-		drm_dbg_kms(&i915->drm, "v_overscan: max %d, default %d, current %d\n",
+		drm_dbg_kms(display->drm, "v_overscan: max %d, default %d, current %d\n",
 			    data_value[0], data_value[1], response);
 	}
 
@@ -3233,13 +3231,13 @@  intel_sdvo_create_enhance_property_tv(struct intel_sdvo *intel_sdvo,
 
 		sdvo_state->tv.dot_crawl = response & 0x1;
 		intel_sdvo_connector->dot_crawl =
-			drm_property_create_range(dev, 0, "dot_crawl", 0, 1);
+			drm_property_create_range(display->drm, 0, "dot_crawl", 0, 1);
 		if (!intel_sdvo_connector->dot_crawl)
 			return false;
 
 		drm_object_attach_property(&connector->base,
 					   intel_sdvo_connector->dot_crawl, 0);
-		drm_dbg_kms(&i915->drm, "dot crawl: current %d\n", response);
+		drm_dbg_kms(display->drm, "dot crawl: current %d\n", response);
 	}
 
 	return true;
@@ -3250,7 +3248,7 @@  intel_sdvo_create_enhance_property_lvds(struct intel_sdvo *intel_sdvo,
 					struct intel_sdvo_connector *intel_sdvo_connector,
 					struct intel_sdvo_enhancements_reply enhancements)
 {
-	struct drm_device *dev = intel_sdvo->base.base.dev;
+	struct intel_display *display = to_intel_display(&intel_sdvo->base);
 	struct drm_connector *connector = &intel_sdvo_connector->base.base;
 	u16 response, data_value[2];
 
@@ -3264,7 +3262,7 @@  intel_sdvo_create_enhance_property_lvds(struct intel_sdvo *intel_sdvo,
 static bool intel_sdvo_create_enhance_property(struct intel_sdvo *intel_sdvo,
 					       struct intel_sdvo_connector *intel_sdvo_connector)
 {
-	struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev);
+	struct intel_display *display = to_intel_display(&intel_sdvo->base);
 	union {
 		struct intel_sdvo_enhancements_reply reply;
 		u16 response;
@@ -3276,7 +3274,7 @@  static bool intel_sdvo_create_enhance_property(struct intel_sdvo *intel_sdvo,
 				  SDVO_CMD_GET_SUPPORTED_ENHANCEMENTS,
 				  &enhancements, sizeof(enhancements)) ||
 	    enhancements.response == 0) {
-		drm_dbg_kms(&i915->drm, "No enhancement is supported\n");
+		drm_dbg_kms(display->drm, "No enhancement is supported\n");
 		return true;
 	}
 
@@ -3351,8 +3349,8 @@  static int
 intel_sdvo_init_ddc_proxy(struct intel_sdvo_ddc *ddc,
 			  struct intel_sdvo *sdvo, int ddc_bus)
 {
-	struct drm_i915_private *dev_priv = to_i915(sdvo->base.base.dev);
-	struct pci_dev *pdev = to_pci_dev(dev_priv->drm.dev);
+	struct intel_display *display = to_intel_display(&sdvo->base);
+	struct pci_dev *pdev = to_pci_dev(display->drm->dev);
 
 	ddc->sdvo = sdvo;
 	ddc->ddc_bus = ddc_bus;
@@ -3368,25 +3366,26 @@  intel_sdvo_init_ddc_proxy(struct intel_sdvo_ddc *ddc,
 	return i2c_add_adapter(&ddc->ddc);
 }
 
-static bool is_sdvo_port_valid(struct drm_i915_private *dev_priv, enum port port)
+static bool is_sdvo_port_valid(struct intel_display *display, enum port port)
 {
+	struct drm_i915_private *dev_priv = to_i915(display->drm);
+
 	if (HAS_PCH_SPLIT(dev_priv))
 		return port == PORT_B;
 	else
 		return port == PORT_B || port == PORT_C;
 }
 
-static bool assert_sdvo_port_valid(struct drm_i915_private *dev_priv,
-				   enum port port)
+static bool assert_sdvo_port_valid(struct intel_display *display, enum port port)
 {
-	return !drm_WARN(&dev_priv->drm, !is_sdvo_port_valid(dev_priv, port),
+	return !drm_WARN(display->drm, !is_sdvo_port_valid(display, port),
 			 "Platform does not support SDVO %c\n", port_name(port));
 }
 
-bool intel_sdvo_init(struct drm_i915_private *dev_priv,
+bool intel_sdvo_init(struct intel_display *display,
 		     i915_reg_t sdvo_reg, enum port port)
 {
-	struct intel_display *display = &dev_priv->display;
+	struct drm_i915_private *dev_priv = to_i915(display->drm);
 	struct intel_encoder *intel_encoder;
 	struct intel_sdvo *intel_sdvo;
 	int i;
@@ -3394,7 +3393,7 @@  bool intel_sdvo_init(struct drm_i915_private *dev_priv,
 	if (!assert_port_valid(display, port))
 		return false;
 
-	if (!assert_sdvo_port_valid(dev_priv, port))
+	if (!assert_sdvo_port_valid(display, port))
 		return false;
 
 	intel_sdvo = kzalloc(sizeof(*intel_sdvo), GFP_KERNEL);
@@ -3407,7 +3406,7 @@  bool intel_sdvo_init(struct drm_i915_private *dev_priv,
 	intel_encoder->power_domain = POWER_DOMAIN_PORT_OTHER;
 	intel_encoder->port = port;
 
-	drm_encoder_init(&dev_priv->drm, &intel_encoder->base,
+	drm_encoder_init(display->drm, &intel_encoder->base,
 			 &intel_sdvo_enc_funcs, 0,
 			 "SDVO %c", port_name(port));
 
@@ -3421,7 +3420,7 @@  bool intel_sdvo_init(struct drm_i915_private *dev_priv,
 		u8 byte;
 
 		if (!intel_sdvo_read_byte(intel_sdvo, i, &byte)) {
-			drm_dbg_kms(&dev_priv->drm,
+			drm_dbg_kms(display->drm,
 				    "No SDVO device found on %s\n",
 				    SDVO_NAME(intel_sdvo));
 			goto err;
@@ -3459,7 +3458,7 @@  bool intel_sdvo_init(struct drm_i915_private *dev_priv,
 	}
 
 	if (!intel_sdvo_output_setup(intel_sdvo)) {
-		drm_dbg_kms(&dev_priv->drm,
+		drm_dbg_kms(display->drm,
 			    "SDVO output failed to setup on %s\n",
 			    SDVO_NAME(intel_sdvo));
 		/* Output_setup can leave behind connectors! */
@@ -3496,7 +3495,7 @@  bool intel_sdvo_init(struct drm_i915_private *dev_priv,
 						    &intel_sdvo->pixel_clock_max))
 		goto err_output;
 
-	drm_dbg_kms(&dev_priv->drm, "%s device VID/DID: %02X:%02X.%02X, "
+	drm_dbg_kms(display->drm, "%s device VID/DID: %02X:%02X.%02X, "
 		    "clock range %dMHz - %dMHz, "
 		    "num inputs: %d, "
 		    "output 1: %c, output 2: %c\n",
diff --git a/drivers/gpu/drm/i915/display/intel_sdvo.h b/drivers/gpu/drm/i915/display/intel_sdvo.h
index d1815b4103d4..1a9e40fdd8a8 100644
--- a/drivers/gpu/drm/i915/display/intel_sdvo.h
+++ b/drivers/gpu/drm/i915/display/intel_sdvo.h
@@ -10,22 +10,22 @@ 
 
 #include "i915_reg_defs.h"
 
-struct drm_i915_private;
 enum pipe;
 enum port;
+struct intel_display;
 
 #ifdef I915
-bool intel_sdvo_port_enabled(struct drm_i915_private *dev_priv,
+bool intel_sdvo_port_enabled(struct intel_display *display,
 			     i915_reg_t sdvo_reg, enum pipe *pipe);
-bool intel_sdvo_init(struct drm_i915_private *dev_priv,
+bool intel_sdvo_init(struct intel_display *display,
 		     i915_reg_t reg, enum port port);
 #else
-static inline bool intel_sdvo_port_enabled(struct drm_i915_private *dev_priv,
+static inline bool intel_sdvo_port_enabled(struct intel_display *display,
 					   i915_reg_t sdvo_reg, enum pipe *pipe)
 {
 	return false;
 }
-static inline bool intel_sdvo_init(struct drm_i915_private *dev_priv,
+static inline bool intel_sdvo_init(struct intel_display *display,
 				   i915_reg_t reg, enum port port)
 {
 	return false;