[PATCH 2/4] drm/i915: Implement display w/a 1140 for glk/cnl

Ville Syrjala
2019-01-31T07:42:22Z

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Display w/a #1140 tells us we have to program the transition
watermark to the minimum value on glk/cnl. Let's do that.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
drivers/gpu/drm/i915/intel_pm.c | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index 5ce60faef28c..d91aec396a4c 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -4844,8 +4844,7 @@ static void skl_compute_transition_wm(const struct intel_crtc_state *cstate,
{
struct drm_device *dev = cstate->base.crtc->dev;
const struct drm_i915_private *dev_priv = to_i915(dev);
- u16 trans_min, trans_y_tile_min;
- const u16 trans_amount = 10; /* This is configurable amount */
+ u16 trans_min, trans_y_tile_min, trans_amount;
u16 wm0_sel_res_b, trans_offset_b, res_blocks;

/*
@@ -4859,9 +4858,16 @@ static void skl_compute_transition_wm(const struct intel_crtc_state *cstate,
if (!dev_priv->ipc_enabled)
return;

- trans_min = 14;
if (INTEL_GEN(dev_priv) >= 11)
trans_min = 4;
+ else
+ trans_min = 14;
+
+ /* Display WA #1140: glk,cnl */
+ if (IS_CANNONLAKE(dev_priv) || IS_GEMINILAKE(dev_priv))
+ trans_amount = 0;
+ else
+ trans_amount = 10; /* This is configurable amount */

trans_offset_b = trans_min + trans_amount;

--
2.19.2