Duplicate gen2_irq_reset(), gen2_assert_iir_is_zero(), gen2_irq_init(),
gen2_error_reset(), and gen2_error_init() in intel_display_irq.c.

This allows us to drop the duplicates from xe, drop the display
dependency on i915_drv.h, and subsequently remove the compat i915_irq.h
header. Although duplication is undesirable in general, in this case the
local duplicates are the cleaner alternative.

There's a slight wrinkle in gen2_assert_iir_is_zero(). It uses
uncore->i915->drm. Leave it out for now in the interest of properly
passing in struct intel_display in a separate change.

Suggested-by: Ville Syrjala <[email protected]>
Signed-off-by: Jani Nikula <[email protected]>
---
 .../gpu/drm/i915/display/intel_display_irq.c  | 69 ++++++++++++++++-
 drivers/gpu/drm/xe/Makefile                   |  2 -
 .../gpu/drm/xe/compat-i915-headers/i915_irq.h |  6 --
 drivers/gpu/drm/xe/display/ext/i915_irq.c     | 75 -------------------
 4 files changed, 68 insertions(+), 84 deletions(-)
 delete mode 100644 drivers/gpu/drm/xe/compat-i915-headers/i915_irq.h
 delete mode 100644 drivers/gpu/drm/xe/display/ext/i915_irq.c

diff --git a/drivers/gpu/drm/i915/display/intel_display_irq.c 
b/drivers/gpu/drm/i915/display/intel_display_irq.c
index 11bc47d22aa4..62f11fac47bb 100644
--- a/drivers/gpu/drm/i915/display/intel_display_irq.c
+++ b/drivers/gpu/drm/i915/display/intel_display_irq.c
@@ -7,7 +7,6 @@
 #include <drm/drm_vblank.h>
 #include <drm/intel/display_parent_interface.h>
 
-#include "i915_irq.h"
 #include "i915_reg.h"
 #include "icl_dsi_regs.h"
 #include "intel_crtc.h"
@@ -33,6 +32,74 @@
 #include "intel_psr_regs.h"
 #include "intel_uncore.h"
 
+static void gen2_irq_reset(struct intel_uncore *uncore, struct i915_irq_regs 
regs)
+{
+       intel_uncore_write(uncore, regs.imr, 0xffffffff);
+       intel_uncore_posting_read(uncore, regs.imr);
+
+       intel_uncore_write(uncore, regs.ier, 0);
+
+       /* IIR can theoretically queue up two events. Be paranoid. */
+       intel_uncore_write(uncore, regs.iir, 0xffffffff);
+       intel_uncore_posting_read(uncore, regs.iir);
+       intel_uncore_write(uncore, regs.iir, 0xffffffff);
+       intel_uncore_posting_read(uncore, regs.iir);
+}
+
+/*
+ * We should clear IMR at preinstall/uninstall, and just check at postinstall.
+ */
+static void gen2_assert_iir_is_zero(struct intel_uncore *uncore, i915_reg_t 
reg)
+{
+       u32 val = intel_uncore_read(uncore, reg);
+
+       if (val == 0)
+               return;
+
+#if 0  /* FIXME */
+       drm_WARN(&uncore->i915->drm, 1,
+                "Interrupt register 0x%x is not zero: 0x%08x\n",
+                i915_mmio_reg_offset(reg), val);
+#endif
+       intel_uncore_write(uncore, reg, 0xffffffff);
+       intel_uncore_posting_read(uncore, reg);
+       intel_uncore_write(uncore, reg, 0xffffffff);
+       intel_uncore_posting_read(uncore, reg);
+}
+
+static void gen2_irq_init(struct intel_uncore *uncore, struct i915_irq_regs 
regs,
+                         u32 imr_val, u32 ier_val)
+{
+       gen2_assert_iir_is_zero(uncore, regs.iir);
+
+       intel_uncore_write(uncore, regs.ier, ier_val);
+       intel_uncore_write(uncore, regs.imr, imr_val);
+       intel_uncore_posting_read(uncore, regs.imr);
+}
+
+static void gen2_error_reset(struct intel_uncore *uncore, struct 
i915_error_regs regs)
+{
+       intel_uncore_write(uncore, regs.emr, 0xffffffff);
+       intel_uncore_posting_read(uncore, regs.emr);
+
+       intel_uncore_write(uncore, regs.eir, 0xffffffff);
+       intel_uncore_posting_read(uncore, regs.eir);
+       intel_uncore_write(uncore, regs.eir, 0xffffffff);
+       intel_uncore_posting_read(uncore, regs.eir);
+}
+
+static void gen2_error_init(struct intel_uncore *uncore, struct 
i915_error_regs regs,
+                           u32 emr_val)
+{
+       intel_uncore_write(uncore, regs.eir, 0xffffffff);
+       intel_uncore_posting_read(uncore, regs.eir);
+       intel_uncore_write(uncore, regs.eir, 0xffffffff);
+       intel_uncore_posting_read(uncore, regs.eir);
+
+       intel_uncore_write(uncore, regs.emr, emr_val);
+       intel_uncore_posting_read(uncore, regs.emr);
+}
+
 static void
 intel_display_irq_regs_init(struct intel_display *display, struct 
i915_irq_regs regs,
                            u32 imr_val, u32 ier_val)
diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
index 7b4ca591a4ae..3bf64fdcf93a 100644
--- a/drivers/gpu/drm/xe/Makefile
+++ b/drivers/gpu/drm/xe/Makefile
@@ -189,7 +189,6 @@ endif
 
 # i915 Display compat #defines and #includes
 subdir-ccflags-$(CONFIG_DRM_XE_DISPLAY) += \
-       -I$(src)/display/ext \
        -I$(src)/compat-i915-headers \
        -I$(srctree)/drivers/gpu/drm/i915/display/ \
        -Ddrm_i915_private=xe_device
@@ -206,7 +205,6 @@ $(obj)/i915-display/%.o: 
$(srctree)/drivers/gpu/drm/i915/display/%.c FORCE
 
 # Display code specific to xe
 xe-$(CONFIG_DRM_XE_DISPLAY) += \
-       display/ext/i915_irq.o \
        display/intel_bo.o \
        display/intel_fb_bo.o \
        display/intel_fbdev_fb.o \
diff --git a/drivers/gpu/drm/xe/compat-i915-headers/i915_irq.h 
b/drivers/gpu/drm/xe/compat-i915-headers/i915_irq.h
deleted file mode 100644
index 61707a07f91f..000000000000
--- a/drivers/gpu/drm/xe/compat-i915-headers/i915_irq.h
+++ /dev/null
@@ -1,6 +0,0 @@
-/* SPDX-License-Identifier: MIT */
-/*
- * Copyright © 2023 Intel Corporation
- */
-
-#include "../../i915/i915_irq.h"
diff --git a/drivers/gpu/drm/xe/display/ext/i915_irq.c 
b/drivers/gpu/drm/xe/display/ext/i915_irq.c
deleted file mode 100644
index b198dd1988bb..000000000000
--- a/drivers/gpu/drm/xe/display/ext/i915_irq.c
+++ /dev/null
@@ -1,75 +0,0 @@
-// SPDX-License-Identifier: MIT
-/*
- * Copyright © 2023 Intel Corporation
- */
-
-#include "i915_irq.h"
-#include "i915_reg.h"
-#include "intel_uncore.h"
-
-void gen2_irq_reset(struct intel_uncore *uncore, struct i915_irq_regs regs)
-{
-       intel_uncore_write(uncore, regs.imr, 0xffffffff);
-       intel_uncore_posting_read(uncore, regs.imr);
-
-       intel_uncore_write(uncore, regs.ier, 0);
-
-       /* IIR can theoretically queue up two events. Be paranoid. */
-       intel_uncore_write(uncore, regs.iir, 0xffffffff);
-       intel_uncore_posting_read(uncore, regs.iir);
-       intel_uncore_write(uncore, regs.iir, 0xffffffff);
-       intel_uncore_posting_read(uncore, regs.iir);
-}
-
-/*
- * We should clear IMR at preinstall/uninstall, and just check at postinstall.
- */
-void gen2_assert_iir_is_zero(struct intel_uncore *uncore, i915_reg_t reg)
-{
-       struct xe_device *xe = container_of(uncore, struct xe_device, uncore);
-       u32 val = intel_uncore_read(uncore, reg);
-
-       if (val == 0)
-               return;
-
-       drm_WARN(&xe->drm, 1,
-                "Interrupt register 0x%x is not zero: 0x%08x\n",
-                i915_mmio_reg_offset(reg), val);
-       intel_uncore_write(uncore, reg, 0xffffffff);
-       intel_uncore_posting_read(uncore, reg);
-       intel_uncore_write(uncore, reg, 0xffffffff);
-       intel_uncore_posting_read(uncore, reg);
-}
-
-void gen2_irq_init(struct intel_uncore *uncore, struct i915_irq_regs regs,
-                  u32 imr_val, u32 ier_val)
-{
-       gen2_assert_iir_is_zero(uncore, regs.iir);
-
-       intel_uncore_write(uncore, regs.ier, ier_val);
-       intel_uncore_write(uncore, regs.imr, imr_val);
-       intel_uncore_posting_read(uncore, regs.imr);
-}
-
-void gen2_error_reset(struct intel_uncore *uncore, struct i915_error_regs regs)
-{
-       intel_uncore_write(uncore, regs.emr, 0xffffffff);
-       intel_uncore_posting_read(uncore, regs.emr);
-
-       intel_uncore_write(uncore, regs.eir, 0xffffffff);
-       intel_uncore_posting_read(uncore, regs.eir);
-       intel_uncore_write(uncore, regs.eir, 0xffffffff);
-       intel_uncore_posting_read(uncore, regs.eir);
-}
-
-void gen2_error_init(struct intel_uncore *uncore, struct i915_error_regs regs,
-                    u32 emr_val)
-{
-       intel_uncore_write(uncore, regs.eir, 0xffffffff);
-       intel_uncore_posting_read(uncore, regs.eir);
-       intel_uncore_write(uncore, regs.eir, 0xffffffff);
-       intel_uncore_posting_read(uncore, regs.eir);
-
-       intel_uncore_write(uncore, regs.emr, emr_val);
-       intel_uncore_posting_read(uncore, regs.emr);
-}
-- 
2.47.3

Reply via email to