On Thu, Sep 18, 2025 at 03:25:48PM +0300, Jani Nikula wrote:
> Abstract ilk_display_irq_reset(), moving display related reset
> there. This results in a slightly different order for the reset,
> hopefully with no impact.
>
> Signed-off-by: Jani Nikula <[email protected]>
> ---
> .../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 | 11 +----------
> 3 files changed, 18 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display_irq.c
> b/drivers/gpu/drm/i915/display/intel_display_irq.c
> index 93c2e42f98c9..91ca62d9f067 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_irq.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_irq.c
> @@ -1985,7 +1985,7 @@ void vlv_display_irq_postinstall(struct intel_display
> *display)
> spin_unlock_irq(&display->irq.lock);
> }
>
> -void ibx_display_irq_reset(struct intel_display *display)
> +static void ibx_display_irq_reset(struct intel_display *display)
> {
> if (HAS_PCH_NOP(display))
> return;
> @@ -1996,6 +1996,21 @@ void ibx_display_irq_reset(struct intel_display
> *display)
> intel_de_write(display, SERR_INT, 0xffffffff);
> }
>
> +void ilk_display_irq_reset(struct intel_display *display)
> +{
> + struct intel_uncore *uncore = to_intel_uncore(display->drm);
> +
> + gen2_irq_reset(uncore, DE_IRQ_REGS);
> + display->irq.ilk_de_imr_mask = ~0u;
> +
> + if (display->platform.haswell) {
> + intel_de_write(display, EDP_PSR_IMR, 0xffffffff);
> + intel_de_write(display, EDP_PSR_IIR, 0xffffffff);
> + }
> +
> + ibx_display_irq_reset(display);
> +}
> +
> void gen8_display_irq_reset(struct intel_display *display)
> {
> enum pipe pipe;
> diff --git a/drivers/gpu/drm/i915/display/intel_display_irq.h
> b/drivers/gpu/drm/i915/display/intel_display_irq.h
> index c66db3851da4..cee120347064 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_irq.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_irq.h
> @@ -56,7 +56,7 @@ u32 gen11_gu_misc_irq_ack(struct intel_display *display,
> const u32 master_ctl);
> void gen11_gu_misc_irq_handler(struct intel_display *display, const u32 iir);
>
> void i9xx_display_irq_reset(struct intel_display *display);
> -void ibx_display_irq_reset(struct intel_display *display);
> +void ilk_display_irq_reset(struct intel_display *display);
> void vlv_display_irq_reset(struct intel_display *display);
> void gen8_display_irq_reset(struct intel_display *display);
> void gen11_display_irq_reset(struct intel_display *display);
> diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
> index ab65402bc6bf..1571f9de3c71 100644
> --- a/drivers/gpu/drm/i915/i915_irq.c
> +++ b/drivers/gpu/drm/i915/i915_irq.c
> @@ -658,20 +658,11 @@ static void ilk_irq_reset(struct drm_i915_private
> *dev_priv)
> struct intel_display *display = dev_priv->display;
> struct intel_uncore *uncore = &dev_priv->uncore;
>
> - gen2_irq_reset(uncore, DE_IRQ_REGS);
> - display->irq.ilk_de_imr_mask = ~0u;
> -
> if (GRAPHICS_VER(dev_priv) == 7)
> intel_uncore_write(uncore, GEN7_ERR_INT, 0xffffffff);
GEN7_ERR_INT is display stuff as well.
>
> - if (IS_HASWELL(dev_priv)) {
> - intel_uncore_write(uncore, EDP_PSR_IMR, 0xffffffff);
> - intel_uncore_write(uncore, EDP_PSR_IIR, 0xffffffff);
> - }
> -
> gen5_gt_irq_reset(to_gt(dev_priv));
> -
> - ibx_display_irq_reset(display);
> + ilk_display_irq_reset(display);
> }
>
> static void valleyview_irq_reset(struct drm_i915_private *dev_priv)
> --
> 2.47.3
--
Ville Syrjälä
Intel