DG2's replicated register ranges are almost the same at XeHP SDV with
the exception of one LNCF sub-range that switches to gslice steering.
We can re-use the XeHP SDV mslice steering table and just provide a
DG2-specific LNCF steering table.

Bspec: 66534
Cc: Daniele Ceraolo Spurio <daniele.ceraolospu...@intel.com>
Signed-off-by: Matt Roper <matthew.d.ro...@intel.com>
---
 drivers/gpu/drm/i915/gt/intel_gt.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_gt.c 
b/drivers/gpu/drm/i915/gt/intel_gt.c
index 9d1c99c9c0dd..d640fd37792f 100644
--- a/drivers/gpu/drm/i915/gt/intel_gt.c
+++ b/drivers/gpu/drm/i915/gt/intel_gt.c
@@ -103,6 +103,12 @@ static const struct intel_mmio_range 
xehpsdv_lncf_steering_table[] = {
        {},
 };
 
+static const struct intel_mmio_range dg2_lncf_steering_table[] = {
+       { 0x00B000, 0x00B0FF },
+       { 0x00D880, 0x00D8FF },
+       {},
+};
+
 static u16 slicemask(struct intel_gt *gt, int count)
 {
        u64 dss_mask = intel_sseu_get_subslices(&gt->info.sseu, 0);
@@ -127,7 +133,10 @@ int intel_gt_init_mmio(struct intel_gt *gt)
                        (intel_uncore_read(gt->uncore, GEN10_MIRROR_FUSE3) &
                         GEN12_MEML3_EN_MASK);
 
-       if (IS_XEHPSDV(gt->i915)) {
+       if (IS_DG2(gt->i915)) {
+               gt->steering_table[MSLICE] = xehpsdv_mslice_steering_table;
+               gt->steering_table[LNCF] = dg2_lncf_steering_table;
+       } else if (IS_XEHPSDV(gt->i915)) {
                gt->steering_table[MSLICE] = xehpsdv_mslice_steering_table;
                gt->steering_table[LNCF] = xehpsdv_lncf_steering_table;
        } else if (GRAPHICS_VER(gt->i915) >= 11 &&
-- 
2.25.4

Reply via email to