]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/xe/dg2: Fix using wrong PAT table
authorLucas De Marchi <lucas.demarchi@intel.com>
Wed, 27 Sep 2023 19:38:57 +0000 (12:38 -0700)
committerRodrigo Vivi <rodrigo.vivi@intel.com>
Thu, 21 Dec 2023 16:41:20 +0000 (11:41 -0500)
DG2 should use the MCR variant to program the PAT registers, like PVC,
but shouldn't use the same table as PVC.

Reviewed-by: Matt Roper <matthew.d.roper@intel.com>
Link: https://lore.kernel.org/r/20230927193902.2849159-7-lucas.demarchi@intel.com
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
drivers/gpu/drm/xe/xe_pat.c

index 28f401c500d8fa1d1c9b5e006c75c797b5be7148..a4bebdedbbd96b48b3d4a3728f2d120790bd6f69 100644 (file)
@@ -108,10 +108,18 @@ void xe_pat_init_early(struct xe_device *xe)
                xe->pat.ops = &mtl_pat_ops;
                xe->pat.table = mtl_pat_table;
                xe->pat.n_entries = ARRAY_SIZE(mtl_pat_table);
-       } else if (xe->info.platform == XE_PVC || xe->info.platform == XE_DG2) {
+       } else if (xe->info.platform == XE_PVC) {
                xe->pat.ops = &dg2_pat_ops;
                xe->pat.table = pvc_pat_table;
                xe->pat.n_entries = ARRAY_SIZE(pvc_pat_table);
+       } else if (xe->info.platform == XE_DG2) {
+               /*
+                * Table is the same as previous platforms, but programming
+                * method has changed.
+                */
+               xe->pat.ops = &dg2_pat_ops;
+               xe->pat.table = tgl_pat_table;
+               xe->pat.n_entries = ARRAY_SIZE(tgl_pat_table);
        } else if (GRAPHICS_VERx100(xe) <= 1210) {
                xe->pat.ops = &tgl_pat_ops;
                xe->pat.table = tgl_pat_table;