[PATCH v3 7/7] drm/i915/quirks: convert struct drm_i915_private to struct intel_display

Rodrigo Vivi rodrigo.vivi at intel.com
Tue Apr 16 16:17:37 UTC 2024


On Tue, Apr 09, 2024 at 03:26:49PM +0300, Jani Nikula wrote:
> Use struct intel_display instead of struct drm_i915_private for
> quirks. Also do drive-by conversions in call sites of intel_has_quirk().
> 
> Signed-off-by: Jani Nikula <jani.nikula at intel.com>

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

> ---
>  .../gpu/drm/i915/display/intel_backlight.c    | 40 ++++++-------
>  drivers/gpu/drm/i915/display/intel_ddi.c      |  6 +-
>  .../drm/i915/display/intel_display_driver.c   |  3 +-
>  drivers/gpu/drm/i915/display/intel_panel.c    | 10 ++--
>  drivers/gpu/drm/i915/display/intel_pps.c      |  6 +-
>  drivers/gpu/drm/i915/display/intel_quirks.c   | 56 +++++++++----------
>  drivers/gpu/drm/i915/display/intel_quirks.h   |  6 +-
>  7 files changed, 65 insertions(+), 62 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_backlight.c b/drivers/gpu/drm/i915/display/intel_backlight.c
> index 4d4330410b4d..071668bfe5d1 100644
> --- a/drivers/gpu/drm/i915/display/intel_backlight.c
> +++ b/drivers/gpu/drm/i915/display/intel_backlight.c
> @@ -83,16 +83,16 @@ static u32 scale_hw_to_user(struct intel_connector *connector,
>  
>  u32 intel_backlight_invert_pwm_level(struct intel_connector *connector, u32 val)
>  {
> -	struct drm_i915_private *i915 = to_i915(connector->base.dev);
> +	struct intel_display *display = to_intel_display(connector);
>  	struct intel_panel *panel = &connector->panel;
>  
> -	drm_WARN_ON(&i915->drm, panel->backlight.pwm_level_max == 0);
> +	drm_WARN_ON(display->drm, panel->backlight.pwm_level_max == 0);
>  
> -	if (i915->display.params.invert_brightness < 0)
> +	if (display->params.invert_brightness < 0)
>  		return val;
>  
> -	if (i915->display.params.invert_brightness > 0 ||
> -	    intel_has_quirk(i915, QUIRK_INVERT_BRIGHTNESS)) {
> +	if (display->params.invert_brightness > 0 ||
> +	    intel_has_quirk(display, QUIRK_INVERT_BRIGHTNESS)) {
>  		return panel->backlight.pwm_level_max - val + panel->backlight.pwm_level_min;
>  	}
>  
> @@ -126,15 +126,15 @@ u32 intel_backlight_level_to_pwm(struct intel_connector *connector, u32 val)
>  
>  u32 intel_backlight_level_from_pwm(struct intel_connector *connector, u32 val)
>  {
> -	struct drm_i915_private *i915 = to_i915(connector->base.dev);
> +	struct intel_display *display = to_intel_display(connector);
>  	struct intel_panel *panel = &connector->panel;
>  
> -	drm_WARN_ON_ONCE(&i915->drm,
> +	drm_WARN_ON_ONCE(display->drm,
>  			 panel->backlight.max == 0 || panel->backlight.pwm_level_max == 0);
>  
> -	if (i915->display.params.invert_brightness > 0 ||
> -	    (i915->display.params.invert_brightness == 0 &&
> -	     intel_has_quirk(i915, QUIRK_INVERT_BRIGHTNESS)))
> +	if (display->params.invert_brightness > 0 ||
> +	    (display->params.invert_brightness == 0 &&
> +	     intel_has_quirk(display, QUIRK_INVERT_BRIGHTNESS)))
>  		val = panel->backlight.pwm_level_max - (val - panel->backlight.pwm_level_min);
>  
>  	return scale(val, panel->backlight.pwm_level_min, panel->backlight.pwm_level_max,
> @@ -1642,17 +1642,17 @@ void intel_backlight_update(struct intel_atomic_state *state,
>  
>  int intel_backlight_setup(struct intel_connector *connector, enum pipe pipe)
>  {
> -	struct drm_i915_private *i915 = to_i915(connector->base.dev);
> +	struct intel_display *display = to_intel_display(connector);
>  	struct intel_panel *panel = &connector->panel;
>  	int ret;
>  
>  	if (!connector->panel.vbt.backlight.present) {
> -		if (intel_has_quirk(i915, QUIRK_BACKLIGHT_PRESENT)) {
> -			drm_dbg_kms(&i915->drm,
> +		if (intel_has_quirk(display, QUIRK_BACKLIGHT_PRESENT)) {
> +			drm_dbg_kms(display->drm,
>  				    "[CONNECTOR:%d:%s] no backlight present per VBT, but present per quirk\n",
>  				    connector->base.base.id, connector->base.name);
>  		} else {
> -			drm_dbg_kms(&i915->drm,
> +			drm_dbg_kms(display->drm,
>  				    "[CONNECTOR:%d:%s] no backlight present per VBT\n",
>  				    connector->base.base.id, connector->base.name);
>  			return 0;
> @@ -1660,16 +1660,16 @@ int intel_backlight_setup(struct intel_connector *connector, enum pipe pipe)
>  	}
>  
>  	/* ensure intel_panel has been initialized first */
> -	if (drm_WARN_ON(&i915->drm, !panel->backlight.funcs))
> +	if (drm_WARN_ON(display->drm, !panel->backlight.funcs))
>  		return -ENODEV;
>  
>  	/* set level and max in panel struct */
> -	mutex_lock(&i915->display.backlight.lock);
> +	mutex_lock(&display->backlight.lock);
>  	ret = panel->backlight.funcs->setup(connector, pipe);
> -	mutex_unlock(&i915->display.backlight.lock);
> +	mutex_unlock(&display->backlight.lock);
>  
>  	if (ret) {
> -		drm_dbg_kms(&i915->drm,
> +		drm_dbg_kms(display->drm,
>  			    "[CONNECTOR:%d:%s] failed to setup backlight\n",
>  			    connector->base.base.id, connector->base.name);
>  		return ret;
> @@ -1677,7 +1677,7 @@ int intel_backlight_setup(struct intel_connector *connector, enum pipe pipe)
>  
>  	panel->backlight.present = true;
>  
> -	drm_dbg_kms(&i915->drm,
> +	drm_dbg_kms(display->drm,
>  		    "[CONNECTOR:%d:%s] backlight initialized, %s, brightness %u/%u\n",
>  		    connector->base.base.id, connector->base.name,
>  		    str_enabled_disabled(panel->backlight.enabled),
> @@ -1821,7 +1821,7 @@ void intel_backlight_init_funcs(struct intel_panel *panel)
>  		if (intel_dp_aux_init_backlight_funcs(connector) == 0)
>  			return;
>  
> -		if (!intel_has_quirk(i915, QUIRK_NO_PPS_BACKLIGHT_POWER_HOOK))
> +		if (!intel_has_quirk(&i915->display, QUIRK_NO_PPS_BACKLIGHT_POWER_HOOK))
>  			connector->panel.backlight.power = intel_pps_backlight_power;
>  	}
>  
> diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c
> index 793ef3e387c6..49d947f4ccde 100644
> --- a/drivers/gpu/drm/i915/display/intel_ddi.c
> +++ b/drivers/gpu/drm/i915/display/intel_ddi.c
> @@ -631,6 +631,7 @@ intel_ddi_config_transcoder_func(struct intel_encoder *encoder,
>  
>  void intel_ddi_disable_transcoder_func(const struct intel_crtc_state *crtc_state)
>  {
> +	struct intel_display *display = to_intel_display(crtc_state);
>  	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
>  	struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
>  	enum transcoder cpu_transcoder = crtc_state->cpu_transcoder;
> @@ -661,10 +662,9 @@ void intel_ddi_disable_transcoder_func(const struct intel_crtc_state *crtc_state
>  
>  	intel_de_write(dev_priv, TRANS_DDI_FUNC_CTL(cpu_transcoder), ctl);
>  
> -	if (intel_has_quirk(dev_priv, QUIRK_INCREASE_DDI_DISABLED_TIME) &&
> +	if (intel_has_quirk(display, QUIRK_INCREASE_DDI_DISABLED_TIME) &&
>  	    intel_crtc_has_type(crtc_state, INTEL_OUTPUT_HDMI)) {
> -		drm_dbg_kms(&dev_priv->drm,
> -			    "Quirk Increase DDI disabled time\n");
> +		drm_dbg_kms(display->drm, "Quirk Increase DDI disabled time\n");
>  		/* Quirk time at 100ms for reliable operation */
>  		msleep(100);
>  	}
> diff --git a/drivers/gpu/drm/i915/display/intel_display_driver.c b/drivers/gpu/drm/i915/display/intel_display_driver.c
> index 87dd07e0d138..0b05c3b732e9 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_driver.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_driver.c
> @@ -203,6 +203,7 @@ void intel_display_driver_early_probe(struct drm_i915_private *i915)
>  /* part #1: call before irq install */
>  int intel_display_driver_probe_noirq(struct drm_i915_private *i915)
>  {
> +	struct intel_display *display = &i915->display;
>  	int ret;
>  
>  	if (i915_inject_probe_failure(i915))
> @@ -261,7 +262,7 @@ int intel_display_driver_probe_noirq(struct drm_i915_private *i915)
>  	if (ret)
>  		goto cleanup_vga_client_pw_domain_dmc;
>  
> -	intel_init_quirks(i915);
> +	intel_init_quirks(display);
>  
>  	intel_fbc_init(i915);
>  
> diff --git a/drivers/gpu/drm/i915/display/intel_panel.c b/drivers/gpu/drm/i915/display/intel_panel.c
> index 073ea3166c36..6f4ff6a89c32 100644
> --- a/drivers/gpu/drm/i915/display/intel_panel.c
> +++ b/drivers/gpu/drm/i915/display/intel_panel.c
> @@ -47,10 +47,12 @@
>  
>  bool intel_panel_use_ssc(struct drm_i915_private *i915)
>  {
> -	if (i915->display.params.panel_use_ssc >= 0)
> -		return i915->display.params.panel_use_ssc != 0;
> -	return i915->display.vbt.lvds_use_ssc &&
> -		!intel_has_quirk(i915, QUIRK_LVDS_SSC_DISABLE);
> +	struct intel_display *display = &i915->display;
> +
> +	if (display->params.panel_use_ssc >= 0)
> +		return display->params.panel_use_ssc != 0;
> +	return display->vbt.lvds_use_ssc &&
> +		!intel_has_quirk(display, QUIRK_LVDS_SSC_DISABLE);
>  }
>  
>  const struct drm_display_mode *
> diff --git a/drivers/gpu/drm/i915/display/intel_pps.c b/drivers/gpu/drm/i915/display/intel_pps.c
> index b5d9920f8341..052f4ee406b5 100644
> --- a/drivers/gpu/drm/i915/display/intel_pps.c
> +++ b/drivers/gpu/drm/i915/display/intel_pps.c
> @@ -1350,7 +1350,7 @@ static void pps_init_delays_bios(struct intel_dp *intel_dp,
>  static void pps_init_delays_vbt(struct intel_dp *intel_dp,
>  				struct edp_power_seq *vbt)
>  {
> -	struct drm_i915_private *dev_priv = dp_to_i915(intel_dp);
> +	struct intel_display *display = to_intel_display(intel_dp);
>  	struct intel_connector *connector = intel_dp->attached_connector;
>  
>  	*vbt = connector->panel.vbt.edp.pps;
> @@ -1363,9 +1363,9 @@ static void pps_init_delays_vbt(struct intel_dp *intel_dp,
>  	 * just fails to power back on. Increasing the delay to 800ms
>  	 * seems sufficient to avoid this problem.
>  	 */
> -	if (intel_has_quirk(dev_priv, QUIRK_INCREASE_T12_DELAY)) {
> +	if (intel_has_quirk(display, QUIRK_INCREASE_T12_DELAY)) {
>  		vbt->t11_t12 = max_t(u16, vbt->t11_t12, 1300 * 10);
> -		drm_dbg_kms(&dev_priv->drm,
> +		drm_dbg_kms(display->drm,
>  			    "Increasing T12 panel delay as per the quirk to %d\n",
>  			    vbt->t11_t12);
>  	}
> diff --git a/drivers/gpu/drm/i915/display/intel_quirks.c b/drivers/gpu/drm/i915/display/intel_quirks.c
> index a280448df771..14d5fefc9c5b 100644
> --- a/drivers/gpu/drm/i915/display/intel_quirks.c
> +++ b/drivers/gpu/drm/i915/display/intel_quirks.c
> @@ -9,72 +9,72 @@
>  #include "intel_display_types.h"
>  #include "intel_quirks.h"
>  
> -static void intel_set_quirk(struct drm_i915_private *i915, enum intel_quirk_id quirk)
> +static void intel_set_quirk(struct intel_display *display, enum intel_quirk_id quirk)
>  {
> -	i915->display.quirks.mask |= BIT(quirk);
> +	display->quirks.mask |= BIT(quirk);
>  }
>  
>  /*
>   * Some machines (Lenovo U160) do not work with SSC on LVDS for some reason
>   */
> -static void quirk_ssc_force_disable(struct drm_i915_private *i915)
> +static void quirk_ssc_force_disable(struct intel_display *display)
>  {
> -	intel_set_quirk(i915, QUIRK_LVDS_SSC_DISABLE);
> -	drm_info(&i915->drm, "applying lvds SSC disable quirk\n");
> +	intel_set_quirk(display, QUIRK_LVDS_SSC_DISABLE);
> +	drm_info(display->drm, "applying lvds SSC disable quirk\n");
>  }
>  
>  /*
>   * A machine (e.g. Acer Aspire 5734Z) may need to invert the panel backlight
>   * brightness value
>   */
> -static void quirk_invert_brightness(struct drm_i915_private *i915)
> +static void quirk_invert_brightness(struct intel_display *display)
>  {
> -	intel_set_quirk(i915, QUIRK_INVERT_BRIGHTNESS);
> -	drm_info(&i915->drm, "applying inverted panel brightness quirk\n");
> +	intel_set_quirk(display, QUIRK_INVERT_BRIGHTNESS);
> +	drm_info(display->drm, "applying inverted panel brightness quirk\n");
>  }
>  
>  /* Some VBT's incorrectly indicate no backlight is present */
> -static void quirk_backlight_present(struct drm_i915_private *i915)
> +static void quirk_backlight_present(struct intel_display *display)
>  {
> -	intel_set_quirk(i915, QUIRK_BACKLIGHT_PRESENT);
> -	drm_info(&i915->drm, "applying backlight present quirk\n");
> +	intel_set_quirk(display, QUIRK_BACKLIGHT_PRESENT);
> +	drm_info(display->drm, "applying backlight present quirk\n");
>  }
>  
>  /* Toshiba Satellite P50-C-18C requires T12 delay to be min 800ms
>   * which is 300 ms greater than eDP spec T12 min.
>   */
> -static void quirk_increase_t12_delay(struct drm_i915_private *i915)
> +static void quirk_increase_t12_delay(struct intel_display *display)
>  {
> -	intel_set_quirk(i915, QUIRK_INCREASE_T12_DELAY);
> -	drm_info(&i915->drm, "Applying T12 delay quirk\n");
> +	intel_set_quirk(display, QUIRK_INCREASE_T12_DELAY);
> +	drm_info(display->drm, "Applying T12 delay quirk\n");
>  }
>  
>  /*
>   * GeminiLake NUC HDMI outputs require additional off time
>   * this allows the onboard retimer to correctly sync to signal
>   */
> -static void quirk_increase_ddi_disabled_time(struct drm_i915_private *i915)
> +static void quirk_increase_ddi_disabled_time(struct intel_display *display)
>  {
> -	intel_set_quirk(i915, QUIRK_INCREASE_DDI_DISABLED_TIME);
> -	drm_info(&i915->drm, "Applying Increase DDI Disabled quirk\n");
> +	intel_set_quirk(display, QUIRK_INCREASE_DDI_DISABLED_TIME);
> +	drm_info(display->drm, "Applying Increase DDI Disabled quirk\n");
>  }
>  
> -static void quirk_no_pps_backlight_power_hook(struct drm_i915_private *i915)
> +static void quirk_no_pps_backlight_power_hook(struct intel_display *display)
>  {
> -	intel_set_quirk(i915, QUIRK_NO_PPS_BACKLIGHT_POWER_HOOK);
> -	drm_info(&i915->drm, "Applying no pps backlight power quirk\n");
> +	intel_set_quirk(display, QUIRK_NO_PPS_BACKLIGHT_POWER_HOOK);
> +	drm_info(display->drm, "Applying no pps backlight power quirk\n");
>  }
>  
>  struct intel_quirk {
>  	int device;
>  	int subsystem_vendor;
>  	int subsystem_device;
> -	void (*hook)(struct drm_i915_private *i915);
> +	void (*hook)(struct intel_display *display);
>  };
>  
>  /* For systems that don't have a meaningful PCI subdevice/subvendor ID */
>  struct intel_dmi_quirk {
> -	void (*hook)(struct drm_i915_private *i915);
> +	void (*hook)(struct intel_display *display);
>  	const struct dmi_system_id (*dmi_id_list)[];
>  };
>  
> @@ -203,9 +203,9 @@ static struct intel_quirk intel_quirks[] = {
>  	{ 0x0f31, 0x103c, 0x220f, quirk_invert_brightness },
>  };
>  
> -void intel_init_quirks(struct drm_i915_private *i915)
> +void intel_init_quirks(struct intel_display *display)
>  {
> -	struct pci_dev *d = to_pci_dev(i915->drm.dev);
> +	struct pci_dev *d = to_pci_dev(display->drm->dev);
>  	int i;
>  
>  	for (i = 0; i < ARRAY_SIZE(intel_quirks); i++) {
> @@ -216,15 +216,15 @@ void intel_init_quirks(struct drm_i915_private *i915)
>  		     q->subsystem_vendor == PCI_ANY_ID) &&
>  		    (d->subsystem_device == q->subsystem_device ||
>  		     q->subsystem_device == PCI_ANY_ID))
> -			q->hook(i915);
> +			q->hook(display);
>  	}
>  	for (i = 0; i < ARRAY_SIZE(intel_dmi_quirks); i++) {
>  		if (dmi_check_system(*intel_dmi_quirks[i].dmi_id_list) != 0)
> -			intel_dmi_quirks[i].hook(i915);
> +			intel_dmi_quirks[i].hook(display);
>  	}
>  }
>  
> -bool intel_has_quirk(struct drm_i915_private *i915, enum intel_quirk_id quirk)
> +bool intel_has_quirk(struct intel_display *display, enum intel_quirk_id quirk)
>  {
> -	return i915->display.quirks.mask & BIT(quirk);
> +	return display->quirks.mask & BIT(quirk);
>  }
> diff --git a/drivers/gpu/drm/i915/display/intel_quirks.h b/drivers/gpu/drm/i915/display/intel_quirks.h
> index 10a4d163149f..151c8f4ae576 100644
> --- a/drivers/gpu/drm/i915/display/intel_quirks.h
> +++ b/drivers/gpu/drm/i915/display/intel_quirks.h
> @@ -8,7 +8,7 @@
>  
>  #include <linux/types.h>
>  
> -struct drm_i915_private;
> +struct intel_display;
>  
>  enum intel_quirk_id {
>  	QUIRK_BACKLIGHT_PRESENT,
> @@ -19,7 +19,7 @@ enum intel_quirk_id {
>  	QUIRK_NO_PPS_BACKLIGHT_POWER_HOOK,
>  };
>  
> -void intel_init_quirks(struct drm_i915_private *i915);
> -bool intel_has_quirk(struct drm_i915_private *i915, enum intel_quirk_id quirk);
> +void intel_init_quirks(struct intel_display *display);
> +bool intel_has_quirk(struct intel_display *display, enum intel_quirk_id quirk);
>  
>  #endif /* __INTEL_QUIRKS_H__ */
> -- 
> 2.39.2
> 


More information about the Intel-gfx mailing list