aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm
diff options
context:
space:
mode:
authorMika Kuoppala <mika.kuoppala@linux.intel.com>2016-06-07 10:19:18 -0400
committerMika Kuoppala <mika.kuoppala@intel.com>2016-06-08 09:27:02 -0400
commit031cd8c85aefad31e7af91eba7bc4735a6dfcc79 (patch)
tree4c8a75159b022db24e7627ccc101466d42f414d2 /drivers/gpu/drm
parent303d4ea522e8672a1b62d968a5b6764929adc292 (diff)
drm/i195/fbc: Add WaFbcNukeOnHostModify
Bspec states that we need to set nuke on modify all to prevent screen corruption with fbc on skl and kbl. v2: proper workaround name References: HSD#2227109, HSDES#1404569388 Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Link: http://patchwork.freedesktop.org/patch/msgid/1465309159-30531-27-git-send-email-mika.kuoppala@intel.com
Diffstat (limited to 'drivers/gpu/drm')
-rw-r--r--drivers/gpu/drm/i915/i915_reg.h1
-rw-r--r--drivers/gpu/drm/i915/intel_pm.c8
2 files changed, 9 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index da88444cecc5..312f254f62ae 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -2209,6 +2209,7 @@ enum skl_disp_power_wells {
2209#define ILK_DPFC_STATUS _MMIO(0x43210) 2209#define ILK_DPFC_STATUS _MMIO(0x43210)
2210#define ILK_DPFC_FENCE_YOFF _MMIO(0x43218) 2210#define ILK_DPFC_FENCE_YOFF _MMIO(0x43218)
2211#define ILK_DPFC_CHICKEN _MMIO(0x43224) 2211#define ILK_DPFC_CHICKEN _MMIO(0x43224)
2212#define ILK_DPFC_NUKE_ON_ANY_MODIFICATION (1<<23)
2212#define ILK_FBC_RT_BASE _MMIO(0x2128) 2213#define ILK_FBC_RT_BASE _MMIO(0x2128)
2213#define ILK_FBC_RT_VALID (1<<0) 2214#define ILK_FBC_RT_VALID (1<<0)
2214#define SNB_FBC_FRONT_BUFFER (1<<1) 2215#define SNB_FBC_FRONT_BUFFER (1<<1)
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index 8df9b5288679..1464d7ba69d4 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -6998,6 +6998,10 @@ static void kabylake_init_clock_gating(struct drm_device *dev)
6998 if (IS_KBL_REVID(dev_priv, 0, KBL_REVID_B0)) 6998 if (IS_KBL_REVID(dev_priv, 0, KBL_REVID_B0))
6999 I915_WRITE(GEN6_UCGCTL1, I915_READ(GEN6_UCGCTL1) | 6999 I915_WRITE(GEN6_UCGCTL1, I915_READ(GEN6_UCGCTL1) |
7000 GEN6_GAMUNIT_CLOCK_GATE_DISABLE); 7000 GEN6_GAMUNIT_CLOCK_GATE_DISABLE);
7001
7002 /* WaFbcNukeOnHostModify:kbl */
7003 I915_WRITE(ILK_DPFC_CHICKEN, I915_READ(ILK_DPFC_CHICKEN) |
7004 ILK_DPFC_NUKE_ON_ANY_MODIFICATION);
7001} 7005}
7002 7006
7003static void skylake_init_clock_gating(struct drm_device *dev) 7007static void skylake_init_clock_gating(struct drm_device *dev)
@@ -7009,6 +7013,10 @@ static void skylake_init_clock_gating(struct drm_device *dev)
7009 /* WAC6entrylatency:skl */ 7013 /* WAC6entrylatency:skl */
7010 I915_WRITE(FBC_LLC_READ_CTRL, I915_READ(FBC_LLC_READ_CTRL) | 7014 I915_WRITE(FBC_LLC_READ_CTRL, I915_READ(FBC_LLC_READ_CTRL) |
7011 FBC_LLC_FULLY_OPEN); 7015 FBC_LLC_FULLY_OPEN);
7016
7017 /* WaFbcNukeOnHostModify:skl */
7018 I915_WRITE(ILK_DPFC_CHICKEN, I915_READ(ILK_DPFC_CHICKEN) |
7019 ILK_DPFC_NUKE_ON_ANY_MODIFICATION);
7012} 7020}
7013 7021
7014static void broadwell_init_clock_gating(struct drm_device *dev) 7022static void broadwell_init_clock_gating(struct drm_device *dev)