diff options
author | Maarten Lankhorst <maarten.lankhorst@linux.intel.com> | 2023-08-17 23:30:41 +0300 |
---|---|---|
committer | Rodrigo Vivi <rodrigo.vivi@intel.com> | 2023-12-21 19:43:39 +0300 |
commit | 44e694958b95395bd1c41508c88c8ca141bf9bd7 (patch) | |
tree | 1b3e18abe5f05a6716e6dee725a3c2c50d5db30c /drivers/gpu/drm/xe/xe_irq.c | |
parent | a839e365ac88f0fa9f8c7ae92b9e7e66bbd9e4d7 (diff) | |
download | linux-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.c | 13 |
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. |