Re: [PATCH 1/4] drm/i915/irq: add dedicated intel_display_irq_init()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Aug 08, 2023 at 06:53:28PM +0300, Jani Nikula wrote:
> Continue splitting display from the rest.
> 
> Signed-off-by: Jani Nikula <jani.nikula@xxxxxxxxx>
> ---
>  .../gpu/drm/i915/display/intel_display_driver.c |  2 ++
>  .../gpu/drm/i915/display/intel_display_irq.c    | 17 +++++++++++++++++
>  .../gpu/drm/i915/display/intel_display_irq.h    |  2 ++
>  drivers/gpu/drm/i915/i915_irq.c                 | 17 -----------------
>  4 files changed, 21 insertions(+), 17 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display_driver.c b/drivers/gpu/drm/i915/display/intel_display_driver.c
> index b909814ae02b..8f144d4d3c39 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_driver.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_driver.c
> @@ -28,6 +28,7 @@
>  #include "intel_crtc.h"
>  #include "intel_display_debugfs.h"
>  #include "intel_display_driver.h"
> +#include "intel_display_irq.h"
>  #include "intel_display_power.h"
>  #include "intel_display_types.h"
>  #include "intel_dkl_phy.h"
> @@ -177,6 +178,7 @@ void intel_display_driver_early_probe(struct drm_i915_private *i915)
>  	if (!HAS_DISPLAY(i915))
>  		return;
>  
> +	intel_display_irq_init(i915);

nice clean up, even the order of the calls stayed absolutely the same


Reviewed-by: Rodrigo Vivi <rodrigo.vivi@xxxxxxxxx>

>  	intel_dkl_phy_init(i915);
>  	intel_color_init_hooks(i915);
>  	intel_init_cdclk_hooks(i915);
> diff --git a/drivers/gpu/drm/i915/display/intel_display_irq.c b/drivers/gpu/drm/i915/display/intel_display_irq.c
> index e6f172cc665a..168f6d4ce208 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_irq.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_irq.c
> @@ -1699,3 +1699,20 @@ void gen11_de_irq_postinstall(struct drm_i915_private *dev_priv)
>  			   GEN11_DISPLAY_IRQ_ENABLE);
>  }
>  
> +void intel_display_irq_init(struct drm_i915_private *i915)
> +{
> +	i915->drm.vblank_disable_immediate = true;
> +
> +	/*
> +	 * Most platforms treat the display irq block as an always-on power
> +	 * domain. vlv/chv can disable it at runtime and need special care to
> +	 * avoid writing any of the display block registers outside of the power
> +	 * domain. We defer setting up the display irqs in this case to the
> +	 * runtime pm.
> +	 */
> +	i915->display_irqs_enabled = true;
> +	if (IS_VALLEYVIEW(i915) || IS_CHERRYVIEW(i915))
> +		i915->display_irqs_enabled = false;
> +
> +	intel_hotplug_irq_init(i915);
> +}
> diff --git a/drivers/gpu/drm/i915/display/intel_display_irq.h b/drivers/gpu/drm/i915/display/intel_display_irq.h
> index 874893f4f16d..8a2d069d3aac 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_irq.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_irq.h
> @@ -78,4 +78,6 @@ void i965_pipestat_irq_handler(struct drm_i915_private *i915, u32 iir, u32 pipe_
>  void valleyview_pipestat_irq_handler(struct drm_i915_private *i915, u32 pipe_stats[I915_MAX_PIPES]);
>  void i8xx_pipestat_irq_handler(struct drm_i915_private *i915, u16 iir, u32 pipe_stats[I915_MAX_PIPES]);
>  
> +void intel_display_irq_init(struct drm_i915_private *i915);
> +
>  #endif /* __INTEL_DISPLAY_IRQ_H__ */
> diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
> index 512fc0ef94a4..1723c215dcf6 100644
> --- a/drivers/gpu/drm/i915/i915_irq.c
> +++ b/drivers/gpu/drm/i915/i915_irq.c
> @@ -1343,23 +1343,6 @@ void intel_irq_init(struct drm_i915_private *dev_priv)
>  	/* pre-gen11 the guc irqs bits are in the upper 16 bits of the pm reg */
>  	if (HAS_GT_UC(dev_priv) && GRAPHICS_VER(dev_priv) < 11)
>  		to_gt(dev_priv)->pm_guc_events = GUC_INTR_GUC2HOST << 16;
> -
> -	if (!HAS_DISPLAY(dev_priv))
> -		return;
> -
> -	dev_priv->drm.vblank_disable_immediate = true;
> -
> -	/* Most platforms treat the display irq block as an always-on
> -	 * power domain. vlv/chv can disable it at runtime and need
> -	 * special care to avoid writing any of the display block registers
> -	 * outside of the power domain. We defer setting up the display irqs
> -	 * in this case to the runtime pm.
> -	 */
> -	dev_priv->display_irqs_enabled = true;
> -	if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
> -		dev_priv->display_irqs_enabled = false;
> -
> -	intel_hotplug_irq_init(dev_priv);
>  }
>  
>  /**
> -- 
> 2.39.2
> 



[Index of Archives]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux