[PATCH 06/11] drm/i915/crt: convert to struct intel_display

Rodrigo Vivi rodrigo.vivi at intel.com
Wed Oct 23 15:05:09 UTC 2024


On Tue, Oct 22, 2024 at 06:57:23PM +0300, Jani Nikula wrote:
> struct intel_display will replace struct drm_i915_private as the main
> device pointer for display code. Switch CRT code over to it.
> 
> Signed-off-by: Jani Nikula <jani.nikula at intel.com>

Reviewed-by: Rodrigo Vivi <rodrigo.vivi at intel.com>

> ---
>  drivers/gpu/drm/i915/display/intel_crt.c      | 207 +++++++++---------
>  drivers/gpu/drm/i915/display/intel_crt.h      |  10 +-
>  drivers/gpu/drm/i915/display/intel_display.c  |  12 +-
>  .../gpu/drm/i915/display/intel_pch_display.c  |   3 +-
>  4 files changed, 122 insertions(+), 110 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_crt.c b/drivers/gpu/drm/i915/display/intel_crt.c
> index 8222b1c251db..166501e06046 100644
> --- a/drivers/gpu/drm/i915/display/intel_crt.c
> +++ b/drivers/gpu/drm/i915/display/intel_crt.c
> @@ -81,12 +81,13 @@ static struct intel_crt *intel_attached_crt(struct intel_connector *connector)
>  	return intel_encoder_to_crt(intel_attached_encoder(connector));
>  }
>  
> -bool intel_crt_port_enabled(struct drm_i915_private *dev_priv,
> +bool intel_crt_port_enabled(struct intel_display *display,
>  			    i915_reg_t adpa_reg, enum pipe *pipe)
>  {
> +	struct drm_i915_private *dev_priv = to_i915(display->drm);
>  	u32 val;
>  
> -	val = intel_de_read(dev_priv, adpa_reg);
> +	val = intel_de_read(display, adpa_reg);
>  
>  	/* asserts want to know the pipe even if the port is disabled */
>  	if (HAS_PCH_CPT(dev_priv))
> @@ -100,6 +101,7 @@ bool intel_crt_port_enabled(struct drm_i915_private *dev_priv,
>  static bool intel_crt_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_crt *crt = intel_encoder_to_crt(encoder);
>  	intel_wakeref_t wakeref;
> @@ -110,7 +112,7 @@ static bool intel_crt_get_hw_state(struct intel_encoder *encoder,
>  	if (!wakeref)
>  		return false;
>  
> -	ret = intel_crt_port_enabled(dev_priv, crt->adpa_reg, pipe);
> +	ret = intel_crt_port_enabled(display, crt->adpa_reg, pipe);
>  
>  	intel_display_power_put(dev_priv, encoder->power_domain, wakeref);
>  
> @@ -119,11 +121,11 @@ static bool intel_crt_get_hw_state(struct intel_encoder *encoder,
>  
>  static unsigned int intel_crt_get_flags(struct intel_encoder *encoder)
>  {
> -	struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
> +	struct intel_display *display = to_intel_display(encoder);
>  	struct intel_crt *crt = intel_encoder_to_crt(encoder);
>  	u32 tmp, flags = 0;
>  
> -	tmp = intel_de_read(dev_priv, crt->adpa_reg);
> +	tmp = intel_de_read(display, crt->adpa_reg);
>  
>  	if (tmp & ADPA_HSYNC_ACTIVE_HIGH)
>  		flags |= DRM_MODE_FLAG_PHSYNC;
> @@ -168,13 +170,14 @@ static void intel_crt_set_dpms(struct intel_encoder *encoder,
>  			       const struct intel_crtc_state *crtc_state,
>  			       int mode)
>  {
> +	struct intel_display *display = to_intel_display(encoder);
>  	struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
>  	struct intel_crt *crt = intel_encoder_to_crt(encoder);
>  	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
>  	const struct drm_display_mode *adjusted_mode = &crtc_state->hw.adjusted_mode;
>  	u32 adpa;
>  
> -	if (DISPLAY_VER(dev_priv) >= 5)
> +	if (DISPLAY_VER(display) >= 5)
>  		adpa = ADPA_HOTPLUG_BITS;
>  	else
>  		adpa = 0;
> @@ -193,7 +196,7 @@ static void intel_crt_set_dpms(struct intel_encoder *encoder,
>  		adpa |= ADPA_PIPE_SEL(crtc->pipe);
>  
>  	if (!HAS_PCH_SPLIT(dev_priv))
> -		intel_de_write(dev_priv, BCLRPAT(dev_priv, crtc->pipe), 0);
> +		intel_de_write(display, BCLRPAT(display, crtc->pipe), 0);
>  
>  	switch (mode) {
>  	case DRM_MODE_DPMS_ON:
> @@ -210,7 +213,7 @@ static void intel_crt_set_dpms(struct intel_encoder *encoder,
>  		break;
>  	}
>  
> -	intel_de_write(dev_priv, crt->adpa_reg, adpa);
> +	intel_de_write(display, crt->adpa_reg, adpa);
>  }
>  
>  static void intel_disable_crt(struct intel_atomic_state *state,
> @@ -241,9 +244,10 @@ static void hsw_disable_crt(struct intel_atomic_state *state,
>  			    const struct intel_crtc_state *old_crtc_state,
>  			    const struct drm_connector_state *old_conn_state)
>  {
> +	struct intel_display *display = to_intel_display(state);
>  	struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
>  
> -	drm_WARN_ON(&dev_priv->drm, !old_crtc_state->has_pch_encoder);
> +	drm_WARN_ON(display->drm, !old_crtc_state->has_pch_encoder);
>  
>  	intel_set_pch_fifo_underrun_reporting(dev_priv, PIPE_A, false);
>  }
> @@ -253,6 +257,7 @@ static void hsw_post_disable_crt(struct intel_atomic_state *state,
>  				 const struct intel_crtc_state *old_crtc_state,
>  				 const struct drm_connector_state *old_conn_state)
>  {
> +	struct intel_display *display = to_intel_display(state);
>  	struct intel_crtc *crtc = to_intel_crtc(old_crtc_state->uapi.crtc);
>  	struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
>  
> @@ -272,7 +277,7 @@ static void hsw_post_disable_crt(struct intel_atomic_state *state,
>  
>  	hsw_fdi_disable(encoder);
>  
> -	drm_WARN_ON(&dev_priv->drm, !old_crtc_state->has_pch_encoder);
> +	drm_WARN_ON(display->drm, !old_crtc_state->has_pch_encoder);
>  
>  	intel_set_pch_fifo_underrun_reporting(dev_priv, PIPE_A, true);
>  }
> @@ -282,9 +287,10 @@ static void hsw_pre_pll_enable_crt(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(state);
>  	struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
>  
> -	drm_WARN_ON(&dev_priv->drm, !crtc_state->has_pch_encoder);
> +	drm_WARN_ON(display->drm, !crtc_state->has_pch_encoder);
>  
>  	intel_set_pch_fifo_underrun_reporting(dev_priv, PIPE_A, false);
>  }
> @@ -294,11 +300,12 @@ static void hsw_pre_enable_crt(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(state);
>  	struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
>  	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
>  	enum pipe pipe = crtc->pipe;
>  
> -	drm_WARN_ON(&dev_priv->drm, !crtc_state->has_pch_encoder);
> +	drm_WARN_ON(display->drm, !crtc_state->has_pch_encoder);
>  
>  	intel_set_cpu_fifo_underrun_reporting(dev_priv, pipe, false);
>  
> @@ -312,11 +319,12 @@ static void hsw_enable_crt(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(state);
>  	struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
>  	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
>  	enum pipe pipe = crtc->pipe;
>  
> -	drm_WARN_ON(&dev_priv->drm, !crtc_state->has_pch_encoder);
> +	drm_WARN_ON(display->drm, !crtc_state->has_pch_encoder);
>  
>  	intel_ddi_enable_transcoder_func(encoder, crtc_state);
>  
> @@ -346,9 +354,10 @@ static enum drm_mode_status
>  intel_crt_mode_valid(struct drm_connector *connector,
>  		     struct drm_display_mode *mode)
>  {
> +	struct intel_display *display = to_intel_display(connector->dev);
>  	struct drm_device *dev = connector->dev;
>  	struct drm_i915_private *dev_priv = to_i915(dev);
> -	int max_dotclk = dev_priv->display.cdclk.max_dotclk_freq;
> +	int max_dotclk = display->cdclk.max_dotclk_freq;
>  	enum drm_mode_status status;
>  	int max_clock;
>  
> @@ -367,7 +376,7 @@ intel_crt_mode_valid(struct drm_connector *connector,
>  		 * DAC limit supposedly 355 MHz.
>  		 */
>  		max_clock = 270000;
> -	else if (IS_DISPLAY_VER(dev_priv, 3, 4))
> +	else if (IS_DISPLAY_VER(display, 3, 4))
>  		max_clock = 400000;
>  	else
>  		max_clock = 350000;
> @@ -428,6 +437,7 @@ static int hsw_crt_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 *dev_priv = to_i915(encoder->base.dev);
>  	struct drm_display_mode *adjusted_mode =
>  		&pipe_config->hw.adjusted_mode;
> @@ -450,7 +460,7 @@ static int hsw_crt_compute_config(struct intel_encoder *encoder,
>  	if (HAS_PCH_LPT(dev_priv)) {
>  		/* TODO: Check crtc_state->max_link_bpp_x16 instead of bw_constrained */
>  		if (pipe_config->bw_constrained && pipe_config->pipe_bpp < 24) {
> -			drm_dbg_kms(&dev_priv->drm,
> +			drm_dbg_kms(display->drm,
>  				    "LPT only supports 24bpp\n");
>  			return -EINVAL;
>  		}
> @@ -470,6 +480,7 @@ static int hsw_crt_compute_config(struct intel_encoder *encoder,
>  
>  static bool ilk_crt_detect_hotplug(struct drm_connector *connector)
>  {
> +	struct intel_display *display = to_intel_display(connector->dev);
>  	struct drm_device *dev = connector->dev;
>  	struct intel_crt *crt = intel_attached_crt(to_intel_connector(connector));
>  	struct drm_i915_private *dev_priv = to_i915(dev);
> @@ -483,36 +494,36 @@ static bool ilk_crt_detect_hotplug(struct drm_connector *connector)
>  
>  		crt->force_hotplug_required = false;
>  
> -		save_adpa = adpa = intel_de_read(dev_priv, crt->adpa_reg);
> -		drm_dbg_kms(&dev_priv->drm,
> +		save_adpa = adpa = intel_de_read(display, crt->adpa_reg);
> +		drm_dbg_kms(display->drm,
>  			    "trigger hotplug detect cycle: adpa=0x%x\n", adpa);
>  
>  		adpa |= ADPA_CRT_HOTPLUG_FORCE_TRIGGER;
>  		if (turn_off_dac)
>  			adpa &= ~ADPA_DAC_ENABLE;
>  
> -		intel_de_write(dev_priv, crt->adpa_reg, adpa);
> +		intel_de_write(display, crt->adpa_reg, adpa);
>  
> -		if (intel_de_wait_for_clear(dev_priv,
> +		if (intel_de_wait_for_clear(display,
>  					    crt->adpa_reg,
>  					    ADPA_CRT_HOTPLUG_FORCE_TRIGGER,
>  					    1000))
> -			drm_dbg_kms(&dev_priv->drm,
> +			drm_dbg_kms(display->drm,
>  				    "timed out waiting for FORCE_TRIGGER");
>  
>  		if (turn_off_dac) {
> -			intel_de_write(dev_priv, crt->adpa_reg, save_adpa);
> -			intel_de_posting_read(dev_priv, crt->adpa_reg);
> +			intel_de_write(display, crt->adpa_reg, save_adpa);
> +			intel_de_posting_read(display, crt->adpa_reg);
>  		}
>  	}
>  
>  	/* Check the status to see if both blue and green are on now */
> -	adpa = intel_de_read(dev_priv, crt->adpa_reg);
> +	adpa = intel_de_read(display, crt->adpa_reg);
>  	if ((adpa & ADPA_CRT_HOTPLUG_MONITOR_MASK) != 0)
>  		ret = true;
>  	else
>  		ret = false;
> -	drm_dbg_kms(&dev_priv->drm, "ironlake hotplug adpa=0x%x, result %d\n",
> +	drm_dbg_kms(display->drm, "ironlake hotplug adpa=0x%x, result %d\n",
>  		    adpa, ret);
>  
>  	return ret;
> @@ -520,6 +531,7 @@ static bool ilk_crt_detect_hotplug(struct drm_connector *connector)
>  
>  static bool valleyview_crt_detect_hotplug(struct drm_connector *connector)
>  {
> +	struct intel_display *display = to_intel_display(connector->dev);
>  	struct drm_device *dev = connector->dev;
>  	struct intel_crt *crt = intel_attached_crt(to_intel_connector(connector));
>  	struct drm_i915_private *dev_priv = to_i915(dev);
> @@ -542,29 +554,29 @@ static bool valleyview_crt_detect_hotplug(struct drm_connector *connector)
>  	 */
>  	reenable_hpd = intel_hpd_disable(dev_priv, crt->base.hpd_pin);
>  
> -	save_adpa = adpa = intel_de_read(dev_priv, crt->adpa_reg);
> -	drm_dbg_kms(&dev_priv->drm,
> +	save_adpa = adpa = intel_de_read(display, crt->adpa_reg);
> +	drm_dbg_kms(display->drm,
>  		    "trigger hotplug detect cycle: adpa=0x%x\n", adpa);
>  
>  	adpa |= ADPA_CRT_HOTPLUG_FORCE_TRIGGER;
>  
> -	intel_de_write(dev_priv, crt->adpa_reg, adpa);
> +	intel_de_write(display, crt->adpa_reg, adpa);
>  
> -	if (intel_de_wait_for_clear(dev_priv, crt->adpa_reg,
> +	if (intel_de_wait_for_clear(display, crt->adpa_reg,
>  				    ADPA_CRT_HOTPLUG_FORCE_TRIGGER, 1000)) {
> -		drm_dbg_kms(&dev_priv->drm,
> +		drm_dbg_kms(display->drm,
>  			    "timed out waiting for FORCE_TRIGGER");
> -		intel_de_write(dev_priv, crt->adpa_reg, save_adpa);
> +		intel_de_write(display, crt->adpa_reg, save_adpa);
>  	}
>  
>  	/* Check the status to see if both blue and green are on now */
> -	adpa = intel_de_read(dev_priv, crt->adpa_reg);
> +	adpa = intel_de_read(display, crt->adpa_reg);
>  	if ((adpa & ADPA_CRT_HOTPLUG_MONITOR_MASK) != 0)
>  		ret = true;
>  	else
>  		ret = false;
>  
> -	drm_dbg_kms(&dev_priv->drm,
> +	drm_dbg_kms(display->drm,
>  		    "valleyview hotplug adpa=0x%x, result %d\n", adpa, ret);
>  
>  	if (reenable_hpd)
> @@ -575,6 +587,7 @@ static bool valleyview_crt_detect_hotplug(struct drm_connector *connector)
>  
>  static bool intel_crt_detect_hotplug(struct drm_connector *connector)
>  {
> +	struct intel_display *display = to_intel_display(connector->dev);
>  	struct drm_device *dev = connector->dev;
>  	struct drm_i915_private *dev_priv = to_i915(dev);
>  	u32 stat;
> @@ -603,18 +616,18 @@ static bool intel_crt_detect_hotplug(struct drm_connector *connector)
>  					      CRT_HOTPLUG_FORCE_DETECT,
>  					      CRT_HOTPLUG_FORCE_DETECT);
>  		/* wait for FORCE_DETECT to go off */
> -		if (intel_de_wait_for_clear(dev_priv, PORT_HOTPLUG_EN(dev_priv),
> +		if (intel_de_wait_for_clear(display, PORT_HOTPLUG_EN(display),
>  					    CRT_HOTPLUG_FORCE_DETECT, 1000))
> -			drm_dbg_kms(&dev_priv->drm,
> +			drm_dbg_kms(display->drm,
>  				    "timed out waiting for FORCE_DETECT to go off");
>  	}
>  
> -	stat = intel_de_read(dev_priv, PORT_HOTPLUG_STAT(dev_priv));
> +	stat = intel_de_read(display, PORT_HOTPLUG_STAT(display));
>  	if ((stat & CRT_HOTPLUG_MONITOR_MASK) != CRT_HOTPLUG_MONITOR_NONE)
>  		ret = true;
>  
>  	/* clear the interrupt we just generated, if any */
> -	intel_de_write(dev_priv, PORT_HOTPLUG_STAT(dev_priv),
> +	intel_de_write(display, PORT_HOTPLUG_STAT(display),
>  		       CRT_HOTPLUG_INT_STATUS);
>  
>  	i915_hotplug_interrupt_update(dev_priv, CRT_HOTPLUG_FORCE_DETECT, 0);
> @@ -660,8 +673,7 @@ static int intel_crt_ddc_get_modes(struct drm_connector *connector,
>  
>  static bool intel_crt_detect_ddc(struct drm_connector *connector)
>  {
> -	struct intel_crt *crt = intel_attached_crt(to_intel_connector(connector));
> -	struct drm_i915_private *dev_priv = to_i915(crt->base.base.dev);
> +	struct intel_display *display = to_intel_display(connector->dev);
>  	const struct drm_edid *drm_edid;
>  	bool ret = false;
>  
> @@ -674,15 +686,15 @@ static bool intel_crt_detect_ddc(struct drm_connector *connector)
>  		 * have to check the EDID input spec of the attached device.
>  		 */
>  		if (drm_edid_is_digital(drm_edid)) {
> -			drm_dbg_kms(&dev_priv->drm,
> +			drm_dbg_kms(display->drm,
>  				    "CRT not detected via DDC:0x50 [EDID reports a digital panel]\n");
>  		} else {
> -			drm_dbg_kms(&dev_priv->drm,
> +			drm_dbg_kms(display->drm,
>  				    "CRT detected via DDC:0x50 [EDID]\n");
>  			ret = true;
>  		}
>  	} else {
> -		drm_dbg_kms(&dev_priv->drm,
> +		drm_dbg_kms(display->drm,
>  			    "CRT not detected via DDC:0x50 [no valid EDID found]\n");
>  	}
>  
> @@ -695,8 +707,6 @@ static enum drm_connector_status
>  intel_crt_load_detect(struct intel_crt *crt, enum pipe pipe)
>  {
>  	struct intel_display *display = to_intel_display(&crt->base);
> -	struct drm_device *dev = crt->base.base.dev;
> -	struct drm_i915_private *dev_priv = to_i915(dev);
>  	enum transcoder cpu_transcoder = (enum transcoder)pipe;
>  	u32 save_bclrpat;
>  	u32 save_vtotal;
> @@ -707,14 +717,14 @@ intel_crt_load_detect(struct intel_crt *crt, enum pipe pipe)
>  	u8 st00;
>  	enum drm_connector_status status;
>  
> -	drm_dbg_kms(&dev_priv->drm, "starting load-detect on CRT\n");
> +	drm_dbg_kms(display->drm, "starting load-detect on CRT\n");
>  
> -	save_bclrpat = intel_de_read(dev_priv,
> -				     BCLRPAT(dev_priv, cpu_transcoder));
> -	save_vtotal = intel_de_read(dev_priv,
> -				    TRANS_VTOTAL(dev_priv, cpu_transcoder));
> -	vblank = intel_de_read(dev_priv,
> -			       TRANS_VBLANK(dev_priv, cpu_transcoder));
> +	save_bclrpat = intel_de_read(display,
> +				     BCLRPAT(display, cpu_transcoder));
> +	save_vtotal = intel_de_read(display,
> +				    TRANS_VTOTAL(display, cpu_transcoder));
> +	vblank = intel_de_read(display,
> +			       TRANS_VBLANK(display, cpu_transcoder));
>  
>  	vtotal = REG_FIELD_GET(VTOTAL_MASK, save_vtotal) + 1;
>  	vactive = REG_FIELD_GET(VACTIVE_MASK, save_vtotal) + 1;
> @@ -723,25 +733,25 @@ intel_crt_load_detect(struct intel_crt *crt, enum pipe pipe)
>  	vblank_end = REG_FIELD_GET(VBLANK_END_MASK, vblank) + 1;
>  
>  	/* Set the border color to purple. */
> -	intel_de_write(dev_priv, BCLRPAT(dev_priv, cpu_transcoder), 0x500050);
> +	intel_de_write(display, BCLRPAT(display, cpu_transcoder), 0x500050);
>  
> -	if (DISPLAY_VER(dev_priv) != 2) {
> -		u32 transconf = intel_de_read(dev_priv,
> -					      TRANSCONF(dev_priv, cpu_transcoder));
> +	if (DISPLAY_VER(display) != 2) {
> +		u32 transconf = intel_de_read(display,
> +					      TRANSCONF(display, cpu_transcoder));
>  
> -		intel_de_write(dev_priv, TRANSCONF(dev_priv, cpu_transcoder),
> +		intel_de_write(display, TRANSCONF(display, cpu_transcoder),
>  			       transconf | TRANSCONF_FORCE_BORDER);
> -		intel_de_posting_read(dev_priv,
> -				      TRANSCONF(dev_priv, cpu_transcoder));
> +		intel_de_posting_read(display,
> +				      TRANSCONF(display, cpu_transcoder));
>  		/* Wait for next Vblank to substitue
>  		 * border color for Color info */
>  		intel_crtc_wait_for_next_vblank(intel_crtc_for_pipe(display, pipe));
> -		st00 = intel_de_read8(dev_priv, _VGA_MSR_WRITE);
> +		st00 = intel_de_read8(display, _VGA_MSR_WRITE);
>  		status = ((st00 & (1 << 4)) != 0) ?
>  			connector_status_connected :
>  			connector_status_disconnected;
>  
> -		intel_de_write(dev_priv, TRANSCONF(dev_priv, cpu_transcoder),
> +		intel_de_write(display, TRANSCONF(display, cpu_transcoder),
>  			       transconf);
>  	} else {
>  		bool restore_vblank = false;
> @@ -752,13 +762,13 @@ intel_crt_load_detect(struct intel_crt *crt, enum pipe pipe)
>  		* Yes, this will flicker
>  		*/
>  		if (vblank_start <= vactive && vblank_end >= vtotal) {
> -			u32 vsync = intel_de_read(dev_priv,
> -						  TRANS_VSYNC(dev_priv, cpu_transcoder));
> +			u32 vsync = intel_de_read(display,
> +						  TRANS_VSYNC(display, cpu_transcoder));
>  			u32 vsync_start = REG_FIELD_GET(VSYNC_START_MASK, vsync) + 1;
>  
>  			vblank_start = vsync_start;
> -			intel_de_write(dev_priv,
> -				       TRANS_VBLANK(dev_priv, cpu_transcoder),
> +			intel_de_write(display,
> +				       TRANS_VBLANK(display, cpu_transcoder),
>  				       VBLANK_START(vblank_start - 1) |
>  				       VBLANK_END(vblank_end - 1));
>  			restore_vblank = true;
> @@ -772,9 +782,9 @@ intel_crt_load_detect(struct intel_crt *crt, enum pipe pipe)
>  		/*
>  		 * Wait for the border to be displayed
>  		 */
> -		while (intel_de_read(dev_priv, PIPEDSL(dev_priv, pipe)) >= vactive)
> +		while (intel_de_read(display, PIPEDSL(display, pipe)) >= vactive)
>  			;
> -		while ((dsl = intel_de_read(dev_priv, PIPEDSL(dev_priv, pipe))) <= vsample)
> +		while ((dsl = intel_de_read(display, PIPEDSL(display, pipe))) <= vsample)
>  			;
>  		/*
>  		 * Watch ST00 for an entire scanline
> @@ -784,15 +794,15 @@ intel_crt_load_detect(struct intel_crt *crt, enum pipe pipe)
>  		do {
>  			count++;
>  			/* Read the ST00 VGA status register */
> -			st00 = intel_de_read8(dev_priv, _VGA_MSR_WRITE);
> +			st00 = intel_de_read8(display, _VGA_MSR_WRITE);
>  			if (st00 & (1 << 4))
>  				detect++;
> -		} while ((intel_de_read(dev_priv, PIPEDSL(dev_priv, pipe)) == dsl));
> +		} while ((intel_de_read(display, PIPEDSL(display, pipe)) == dsl));
>  
>  		/* restore vblank if necessary */
>  		if (restore_vblank)
> -			intel_de_write(dev_priv,
> -				       TRANS_VBLANK(dev_priv, cpu_transcoder),
> +			intel_de_write(display,
> +				       TRANS_VBLANK(display, cpu_transcoder),
>  				       vblank);
>  		/*
>  		 * If more than 3/4 of the scanline detected a monitor,
> @@ -806,7 +816,7 @@ intel_crt_load_detect(struct intel_crt *crt, enum pipe pipe)
>  	}
>  
>  	/* Restore previous settings */
> -	intel_de_write(dev_priv, BCLRPAT(dev_priv, cpu_transcoder),
> +	intel_de_write(display, BCLRPAT(display, cpu_transcoder),
>  		       save_bclrpat);
>  
>  	return status;
> @@ -843,6 +853,7 @@ intel_crt_detect(struct drm_connector *connector,
>  		 struct drm_modeset_acquire_ctx *ctx,
>  		 bool force)
>  {
> +	struct intel_display *display = to_intel_display(connector->dev);
>  	struct drm_i915_private *dev_priv = to_i915(connector->dev);
>  	struct intel_crt *crt = intel_attached_crt(to_intel_connector(connector));
>  	struct intel_encoder *intel_encoder = &crt->base;
> @@ -850,7 +861,7 @@ intel_crt_detect(struct drm_connector *connector,
>  	intel_wakeref_t wakeref;
>  	int status;
>  
> -	drm_dbg_kms(&dev_priv->drm, "[CONNECTOR:%d:%s] force=%d\n",
> +	drm_dbg_kms(display->drm, "[CONNECTOR:%d:%s] force=%d\n",
>  		    connector->base.id, connector->name,
>  		    force);
>  
> @@ -860,7 +871,7 @@ intel_crt_detect(struct drm_connector *connector,
>  	if (!intel_display_driver_check_access(dev_priv))
>  		return connector->status;
>  
> -	if (dev_priv->display.params.load_detect_test) {
> +	if (display->params.load_detect_test) {
>  		wakeref = intel_display_power_get(dev_priv,
>  						  intel_encoder->power_domain);
>  		goto load_detect;
> @@ -873,18 +884,18 @@ intel_crt_detect(struct drm_connector *connector,
>  	wakeref = intel_display_power_get(dev_priv,
>  					  intel_encoder->power_domain);
>  
> -	if (I915_HAS_HOTPLUG(dev_priv)) {
> +	if (I915_HAS_HOTPLUG(display)) {
>  		/* We can not rely on the HPD pin always being correctly wired
>  		 * up, for example many KVM do not pass it through, and so
>  		 * only trust an assertion that the monitor is connected.
>  		 */
>  		if (intel_crt_detect_hotplug(connector)) {
> -			drm_dbg_kms(&dev_priv->drm,
> +			drm_dbg_kms(display->drm,
>  				    "CRT detected via hotplug\n");
>  			status = connector_status_connected;
>  			goto out;
>  		} else
> -			drm_dbg_kms(&dev_priv->drm,
> +			drm_dbg_kms(display->drm,
>  				    "CRT not detected via hotplug\n");
>  	}
>  
> @@ -897,7 +908,7 @@ intel_crt_detect(struct drm_connector *connector,
>  	 * broken monitor (without edid) to work behind a broken kvm (that fails
>  	 * to have the right resistors for HP detection) needs to fix this up.
>  	 * For now just bail out. */
> -	if (I915_HAS_HOTPLUG(dev_priv)) {
> +	if (I915_HAS_HOTPLUG(display)) {
>  		status = connector_status_disconnected;
>  		goto out;
>  	}
> @@ -917,10 +928,10 @@ intel_crt_detect(struct drm_connector *connector,
>  	} else {
>  		if (intel_crt_detect_ddc(connector))
>  			status = connector_status_connected;
> -		else if (DISPLAY_VER(dev_priv) < 4)
> +		else if (DISPLAY_VER(display) < 4)
>  			status = intel_crt_load_detect(crt,
>  				to_intel_crtc(connector->state->crtc)->pipe);
> -		else if (dev_priv->display.params.load_detect_test)
> +		else if (display->params.load_detect_test)
>  			status = connector_status_disconnected;
>  		else
>  			status = connector_status_unknown;
> @@ -966,19 +977,19 @@ static int intel_crt_get_modes(struct drm_connector *connector)
>  
>  void intel_crt_reset(struct drm_encoder *encoder)
>  {
> -	struct drm_i915_private *dev_priv = to_i915(encoder->dev);
> +	struct intel_display *display = to_intel_display(encoder->dev);
>  	struct intel_crt *crt = intel_encoder_to_crt(to_intel_encoder(encoder));
>  
> -	if (DISPLAY_VER(dev_priv) >= 5) {
> +	if (DISPLAY_VER(display) >= 5) {
>  		u32 adpa;
>  
> -		adpa = intel_de_read(dev_priv, crt->adpa_reg);
> +		adpa = intel_de_read(display, crt->adpa_reg);
>  		adpa &= ~ADPA_CRT_HOTPLUG_MASK;
>  		adpa |= ADPA_HOTPLUG_BITS;
> -		intel_de_write(dev_priv, crt->adpa_reg, adpa);
> -		intel_de_posting_read(dev_priv, crt->adpa_reg);
> +		intel_de_write(display, crt->adpa_reg, adpa);
> +		intel_de_posting_read(display, crt->adpa_reg);
>  
> -		drm_dbg_kms(&dev_priv->drm, "crt adpa set to 0x%x\n", adpa);
> +		drm_dbg_kms(display->drm, "crt adpa set to 0x%x\n", adpa);
>  		crt->force_hotplug_required = true;
>  	}
>  
> @@ -1008,9 +1019,9 @@ static const struct drm_encoder_funcs intel_crt_enc_funcs = {
>  	.destroy = intel_encoder_destroy,
>  };
>  
> -void intel_crt_init(struct drm_i915_private *dev_priv)
> +void intel_crt_init(struct intel_display *display)
>  {
> -	struct intel_display *display = &dev_priv->display;
> +	struct drm_i915_private *dev_priv = to_i915(display->drm);
>  	struct drm_connector *connector;
>  	struct intel_crt *crt;
>  	struct intel_connector *intel_connector;
> @@ -1025,7 +1036,7 @@ void intel_crt_init(struct drm_i915_private *dev_priv)
>  	else
>  		adpa_reg = ADPA;
>  
> -	adpa = intel_de_read(dev_priv, adpa_reg);
> +	adpa = intel_de_read(display, adpa_reg);
>  	if ((adpa & ADPA_DAC_ENABLE) == 0) {
>  		/*
>  		 * On some machines (some IVB at least) CRT can be
> @@ -1035,11 +1046,11 @@ void intel_crt_init(struct drm_i915_private *dev_priv)
>  		 * take. So the only way to tell is attempt to enable
>  		 * it and see what happens.
>  		 */
> -		intel_de_write(dev_priv, adpa_reg,
> +		intel_de_write(display, adpa_reg,
>  			       adpa | ADPA_DAC_ENABLE | ADPA_HSYNC_CNTL_DISABLE | ADPA_VSYNC_CNTL_DISABLE);
> -		if ((intel_de_read(dev_priv, adpa_reg) & ADPA_DAC_ENABLE) == 0)
> +		if ((intel_de_read(display, adpa_reg) & ADPA_DAC_ENABLE) == 0)
>  			return;
> -		intel_de_write(dev_priv, adpa_reg, adpa);
> +		intel_de_write(display, adpa_reg, adpa);
>  	}
>  
>  	crt = kzalloc(sizeof(struct intel_crt), GFP_KERNEL);
> @@ -1052,16 +1063,16 @@ void intel_crt_init(struct drm_i915_private *dev_priv)
>  		return;
>  	}
>  
> -	ddc_pin = dev_priv->display.vbt.crt_ddc_pin;
> +	ddc_pin = display->vbt.crt_ddc_pin;
>  
>  	connector = &intel_connector->base;
>  	crt->connector = intel_connector;
> -	drm_connector_init_with_ddc(&dev_priv->drm, connector,
> +	drm_connector_init_with_ddc(display->drm, connector,
>  				    &intel_crt_connector_funcs,
>  				    DRM_MODE_CONNECTOR_VGA,
>  				    intel_gmbus_get_adapter(display, ddc_pin));
>  
> -	drm_encoder_init(&dev_priv->drm, &crt->base.base, &intel_crt_enc_funcs,
> +	drm_encoder_init(display->drm, &crt->base.base, &intel_crt_enc_funcs,
>  			 DRM_MODE_ENCODER_DAC, "CRT");
>  
>  	intel_connector_attach_encoder(intel_connector, &crt->base);
> @@ -1073,14 +1084,14 @@ void intel_crt_init(struct drm_i915_private *dev_priv)
>  	else
>  		crt->base.pipe_mask = ~0;
>  
> -	if (DISPLAY_VER(dev_priv) != 2)
> +	if (DISPLAY_VER(display) != 2)
>  		connector->interlace_allowed = true;
>  
>  	crt->adpa_reg = adpa_reg;
>  
>  	crt->base.power_domain = POWER_DOMAIN_PORT_CRT;
>  
> -	if (I915_HAS_HOTPLUG(dev_priv) &&
> +	if (I915_HAS_HOTPLUG(display) &&
>  	    !dmi_check_system(intel_spurious_crt_detect)) {
>  		crt->base.hpd_pin = HPD_CRT;
>  		crt->base.hotplug = intel_encoder_hotplug;
> @@ -1090,7 +1101,7 @@ void intel_crt_init(struct drm_i915_private *dev_priv)
>  	}
>  	intel_connector->base.polled = intel_connector->polled;
>  
> -	if (HAS_DDI(dev_priv)) {
> +	if (HAS_DDI(display)) {
>  		assert_port_valid(dev_priv, PORT_E);
>  
>  		crt->base.port = PORT_E;
> @@ -1134,7 +1145,7 @@ void intel_crt_init(struct drm_i915_private *dev_priv)
>  		u32 fdi_config = FDI_RX_POLARITY_REVERSED_LPT |
>  				 FDI_RX_LINK_REVERSAL_OVERRIDE;
>  
> -		dev_priv->display.fdi.rx_config = intel_de_read(dev_priv,
> +		display->fdi.rx_config = intel_de_read(display,
>  								FDI_RX_CTL(PIPE_A)) & fdi_config;
>  	}
>  
> diff --git a/drivers/gpu/drm/i915/display/intel_crt.h b/drivers/gpu/drm/i915/display/intel_crt.h
> index fe7690c2b948..e0abfe96a3d2 100644
> --- a/drivers/gpu/drm/i915/display/intel_crt.h
> +++ b/drivers/gpu/drm/i915/display/intel_crt.h
> @@ -10,20 +10,20 @@
>  
>  enum pipe;
>  struct drm_encoder;
> -struct drm_i915_private;
> +struct intel_display;
>  
>  #ifdef I915
> -bool intel_crt_port_enabled(struct drm_i915_private *dev_priv,
> +bool intel_crt_port_enabled(struct intel_display *display,
>  			    i915_reg_t adpa_reg, enum pipe *pipe);
> -void intel_crt_init(struct drm_i915_private *dev_priv);
> +void intel_crt_init(struct intel_display *display);
>  void intel_crt_reset(struct drm_encoder *encoder);
>  #else
> -static inline bool intel_crt_port_enabled(struct drm_i915_private *dev_priv,
> +static inline bool intel_crt_port_enabled(struct intel_display *display,
>  					  i915_reg_t adpa_reg, enum pipe *pipe)
>  {
>  	return false;
>  }
> -static inline void intel_crt_init(struct drm_i915_private *dev_priv)
> +static inline void intel_crt_init(struct intel_display *display)
>  {
>  }
>  static inline void intel_crt_reset(struct drm_encoder *encoder)
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index c19f01b63936..2479ca0a02d9 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -8147,7 +8147,7 @@ void intel_setup_outputs(struct drm_i915_private *dev_priv)
>  
>  	if (HAS_DDI(dev_priv)) {
>  		if (intel_ddi_crt_present(dev_priv))
> -			intel_crt_init(dev_priv);
> +			intel_crt_init(display);
>  
>  		intel_bios_for_each_encoder(display, intel_ddi_init);
>  
> @@ -8162,7 +8162,7 @@ void intel_setup_outputs(struct drm_i915_private *dev_priv)
>  		 * incorrect sharing of the PPS.
>  		 */
>  		intel_lvds_init(dev_priv);
> -		intel_crt_init(dev_priv);
> +		intel_crt_init(display);
>  
>  		dpd_is_edp = intel_dp_is_port_edp(dev_priv, PORT_D);
>  
> @@ -8193,7 +8193,7 @@ void intel_setup_outputs(struct drm_i915_private *dev_priv)
>  		bool has_edp, has_port;
>  
>  		if (IS_VALLEYVIEW(dev_priv) && dev_priv->display.vbt.int_crt_support)
> -			intel_crt_init(dev_priv);
> +			intel_crt_init(display);
>  
>  		/*
>  		 * The DP_DETECTED bit is the latched state of the DDC
> @@ -8239,14 +8239,14 @@ void intel_setup_outputs(struct drm_i915_private *dev_priv)
>  		vlv_dsi_init(dev_priv);
>  	} else if (IS_PINEVIEW(dev_priv)) {
>  		intel_lvds_init(dev_priv);
> -		intel_crt_init(dev_priv);
> +		intel_crt_init(display);
>  	} else if (IS_DISPLAY_VER(dev_priv, 3, 4)) {
>  		bool found = false;
>  
>  		if (IS_MOBILE(dev_priv))
>  			intel_lvds_init(dev_priv);
>  
> -		intel_crt_init(dev_priv);
> +		intel_crt_init(display);
>  
>  		if (intel_de_read(dev_priv, GEN3_SDVOB) & SDVO_DETECTED) {
>  			drm_dbg_kms(&dev_priv->drm, "probing SDVOB\n");
> @@ -8288,7 +8288,7 @@ void intel_setup_outputs(struct drm_i915_private *dev_priv)
>  		if (IS_I85X(dev_priv))
>  			intel_lvds_init(dev_priv);
>  
> -		intel_crt_init(dev_priv);
> +		intel_crt_init(display);
>  		intel_dvo_init(dev_priv);
>  	}
>  
> diff --git a/drivers/gpu/drm/i915/display/intel_pch_display.c b/drivers/gpu/drm/i915/display/intel_pch_display.c
> index f13ab680c2cf..17739a51fe54 100644
> --- a/drivers/gpu/drm/i915/display/intel_pch_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_pch_display.c
> @@ -76,6 +76,7 @@ static void assert_pch_hdmi_disabled(struct drm_i915_private *dev_priv,
>  static void assert_pch_ports_disabled(struct drm_i915_private *dev_priv,
>  				      enum pipe pipe)
>  {
> +	struct intel_display *display = &dev_priv->display;
>  	enum pipe port_pipe;
>  
>  	assert_pch_dp_disabled(dev_priv, pipe, PORT_B, PCH_DP_B);
> @@ -83,7 +84,7 @@ static void assert_pch_ports_disabled(struct drm_i915_private *dev_priv,
>  	assert_pch_dp_disabled(dev_priv, pipe, PORT_D, PCH_DP_D);
>  
>  	I915_STATE_WARN(dev_priv,
> -			intel_crt_port_enabled(dev_priv, PCH_ADPA, &port_pipe) && port_pipe == pipe,
> +			intel_crt_port_enabled(display, PCH_ADPA, &port_pipe) && port_pipe == pipe,
>  			"PCH VGA enabled on transcoder %c, should be disabled\n",
>  			pipe_name(pipe));
>  
> -- 
> 2.39.5
> 


More information about the Intel-gfx mailing list