summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/xe/display
diff options
context:
space:
mode:
authorJani Nikula <jani.nikula@intel.com>2025-11-17 11:16:08 +0200
committerJani Nikula <jani.nikula@intel.com>2025-11-19 19:33:43 +0200
commitb9241d0ed9cefc7f9b9bb65533494d7776964d79 (patch)
tree6964b786909085493afb1bcba7bbce9d3be62d2e /drivers/gpu/drm/xe/display
parent7e2d78535432e44f908c6c44f73828cfd9c12aee (diff)
drm/{i915, xe}/display: duplicate gen2 irq/error init/reset in display irq
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, and prepares for future cleanups. Although duplication is undesirable in general, in this case the local duplicates lead to a cleaner end result. There's a slight wrinkle in gen2_assert_iir_is_zero(). We need to use non-device based logging until we pass in struct intel_display in a separate change. v2: - Keep xe compat stuff due to series reorder and rebase - Keep the WARN as regular WARN - Rename the functions in the same go Suggested-by: Ville Syrjala <ville.syrjala@linux.intel.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Link: https://patch.msgid.link/296d74731cce57ab7534c57969d3146294adda57.1763370931.git.jani.nikula@intel.com Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Diffstat (limited to 'drivers/gpu/drm/xe/display')
-rw-r--r--drivers/gpu/drm/xe/display/ext/i915_irq.c67
1 files changed, 0 insertions, 67 deletions
diff --git a/drivers/gpu/drm/xe/display/ext/i915_irq.c b/drivers/gpu/drm/xe/display/ext/i915_irq.c
index 3c6bca66ddab..1011c1c754d0 100644
--- a/drivers/gpu/drm/xe/display/ext/i915_irq.c
+++ b/drivers/gpu/drm/xe/display/ext/i915_irq.c
@@ -7,73 +7,6 @@
#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);
-}
-
bool intel_irqs_enabled(struct xe_device *xe)
{
return atomic_read(&xe->irq.enabled);