summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/xe/xe_irq.c
diff options
context:
space:
mode:
authorMaarten Lankhorst <maarten.lankhorst@linux.intel.com>2023-08-17 23:30:41 +0300
committerRodrigo Vivi <rodrigo.vivi@intel.com>2023-12-21 19:43:39 +0300
commit44e694958b95395bd1c41508c88c8ca141bf9bd7 (patch)
tree1b3e18abe5f05a6716e6dee725a3c2c50d5db30c /drivers/gpu/drm/xe/xe_irq.c
parenta839e365ac88f0fa9f8c7ae92b9e7e66bbd9e4d7 (diff)
downloadlinux-44e694958b95395bd1c41508c88c8ca141bf9bd7.tar.xz
drm/xe/display: Implement display support
As for display, the intent is to share the display code with the i915 driver so that there is maximum reuse there. We do this by recompiling i915/display code twice. Now that i915 has been adapted to support the Xe build, we can add the xe/display support. This initial work is a collaboration of many people and unfortunately this squashed patch won't fully honor the proper credits. But let's try to add a few from the squashed patches: Co-developed-by: Matthew Brost <matthew.brost@intel.com> Co-developed-by: Jani Nikula <jani.nikula@intel.com> Co-developed-by: Lucas De Marchi <lucas.demarchi@intel.com> Co-developed-by: Matt Roper <matthew.d.roper@intel.com> Co-developed-by: Mauro Carvalho Chehab <mchehab@kernel.org> Co-developed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> Co-developed-by: Dave Airlie <airlied@redhat.com> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com> Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
Diffstat (limited to 'drivers/gpu/drm/xe/xe_irq.c')
-rw-r--r--drivers/gpu/drm/xe/xe_irq.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/gpu/drm/xe/xe_irq.c b/drivers/gpu/drm/xe/xe_irq.c
index ef26120e7aa4..c5315e02fc5b 100644
--- a/drivers/gpu/drm/xe/xe_irq.c
+++ b/drivers/gpu/drm/xe/xe_irq.c
@@ -12,6 +12,7 @@
#include "regs/xe_gt_regs.h"
#include "regs/xe_regs.h"
#include "xe_device.h"
+#include "xe_display.h"
#include "xe_drv.h"
#include "xe_gt.h"
#include "xe_guc.h"
@@ -351,10 +352,14 @@ static irqreturn_t xelp_irq_handler(int irq, void *arg)
gt_irq_handler(tile, master_ctl, intr_dw, identity);
+ xe_display_irq_handler(xe, master_ctl);
+
gu_misc_iir = gu_misc_irq_ack(xe, master_ctl);
xelp_intr_enable(xe, false);
+ xe_display_irq_enable(xe, gu_misc_iir);
+
xe_pmu_irq_stats(xe);
return IRQ_HANDLED;
@@ -444,11 +449,14 @@ static irqreturn_t dg1_irq_handler(int irq, void *arg)
* that get reported as Gunit GSE) would only be hooked up to
* the primary tile.
*/
- if (id == 0)
+ if (id == 0) {
+ xe_display_irq_handler(xe, master_ctl);
gu_misc_iir = gu_misc_irq_ack(xe, master_ctl);
+ }
}
dg1_intr_enable(xe, false);
+ xe_display_irq_enable(xe, gu_misc_iir);
xe_pmu_irq_stats(xe);
@@ -542,6 +550,7 @@ static void xe_irq_reset(struct xe_device *xe)
tile = xe_device_get_root_tile(xe);
mask_and_disable(tile, GU_MISC_IRQ_OFFSET);
+ xe_display_irq_reset(xe);
/*
* The tile's top-level status register should be the last one
@@ -556,6 +565,8 @@ static void xe_irq_reset(struct xe_device *xe)
static void xe_irq_postinstall(struct xe_device *xe)
{
+ xe_display_irq_postinstall(xe, xe_root_mmio_gt(xe));
+
/*
* ASLE backlight operations are reported via GUnit GSE interrupts
* on the root tile.