drm/i915/skl: Implement WaDisableLSQCROPERFforOCL
authorDamien Lespiau <damien.lespiau@intel.com>
Mon, 9 Feb 2015 19:33:18 +0000 (19:33 +0000)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Fri, 13 Feb 2015 22:28:35 +0000 (23:28 +0100)
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
Reviewed-by: Nick Hoath <nicholas.hoath@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/i915_drv.h
drivers/gpu/drm/i915/i915_reg.h
drivers/gpu/drm/i915/intel_pm.c

index 4cea57add113c7c8c41ef16b4946846a5ddd8d98..b37604bbdf1af201d0d42bb9ae36e0a210426ccc 100644 (file)
@@ -2396,6 +2396,7 @@ struct drm_i915_cmd_table {
 #define SKL_REVID_B0           (0x1)
 #define SKL_REVID_C0           (0x2)
 #define SKL_REVID_D0           (0x3)
+#define SKL_REVID_E0           (0x4)
 
 /*
  * The genX designation typically refers to the render engine, so render
index b610764768d7528f50fb27da6c14bd11e6290d17..0fb6a4f6c6f75c39278af091998a37801132e2de 100644 (file)
@@ -5259,6 +5259,9 @@ enum skl_disp_power_wells {
 #define GEN7_L3SQCREG4                         0xb034
 #define  L3SQ_URB_READ_CAM_MATCH_DISABLE       (1<<27)
 
+#define GEN8_L3SQCREG4                         0xb118
+#define  GEN8_LQSC_RO_PERF_DIS                 (1<<27)
+
 /* GEN8 chicken */
 #define HDC_CHICKEN0                           0x7300
 #define  HDC_FENCE_DEST_SLM_DISABLE            (1<<14)
index af8dca28c5053220869c1ba773c38b30e9a3aed5..d7750176091b1951fb4f64cce9600ea978f24377 100644 (file)
@@ -65,6 +65,11 @@ static void skl_init_clock_gating(struct drm_device *dev)
                           GEN8_GAPSUNIT_CLOCK_GATE_DISABLE |
                           GEN8_SDEUNIT_CLOCK_GATE_DISABLE);
        }
+
+       if (INTEL_REVID(dev) <= SKL_REVID_E0)
+               /* WaDisableLSQCROPERFforOCL:skl */
+               I915_WRITE(GEN8_L3SQCREG4, I915_READ(GEN8_L3SQCREG4) |
+                          GEN8_LQSC_RO_PERF_DIS);
 }
 
 static void i915_pineview_get_mem_freq(struct drm_device *dev)