diff options
author | Mika Kuoppala <mika.kuoppala@linux.intel.com> | 2016-06-07 10:19:18 -0400 |
---|---|---|
committer | Mika Kuoppala <mika.kuoppala@intel.com> | 2016-06-08 09:27:02 -0400 |
commit | 031cd8c85aefad31e7af91eba7bc4735a6dfcc79 (patch) | |
tree | 4c8a75159b022db24e7627ccc101466d42f414d2 /drivers/gpu/drm | |
parent | 303d4ea522e8672a1b62d968a5b6764929adc292 (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.h | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_pm.c | 8 |
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 | ||
7003 | static void skylake_init_clock_gating(struct drm_device *dev) | 7007 | static 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 | ||
7014 | static void broadwell_init_clock_gating(struct drm_device *dev) | 7022 | static void broadwell_init_clock_gating(struct drm_device *dev) |