All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eugeni Dodonov <eugeni.dodonov@intel.com>
To: intel-gfx@lists.freedesktop.org
Cc: Eugeni Dodonov <eugeni.dodonov@intel.com>
Subject: [PATCH 08/10] drm/i915: introduce haswell_init_clock_gating
Date: Mon,  2 Jul 2012 11:51:09 -0300	[thread overview]
Message-ID: <1341240671-5843-9-git-send-email-eugeni.dodonov@intel.com> (raw)
In-Reply-To: <1341240671-5843-1-git-send-email-eugeni.dodonov@intel.com>

This is based on Ivy Bridge clock gating for now, but is subject to
changes in the future.

Signed-off-by: Eugeni Dodonov <eugeni.dodonov@intel.com>
---
 drivers/gpu/drm/i915/intel_pm.c | 54 ++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 53 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index 5ea8319..f54196f 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -3415,6 +3415,58 @@ static void gen7_setup_fixed_func_scheduler(struct drm_i915_private *dev_priv)
 	I915_WRITE(GEN7_FF_THREAD_MODE, reg);
 }
 
+static void haswell_init_clock_gating(struct drm_device *dev)
+{
+	struct drm_i915_private *dev_priv = dev->dev_private;
+	int pipe;
+	uint32_t dspclk_gate = VRHUNIT_CLOCK_GATE_DISABLE;
+
+	I915_WRITE(PCH_DSPCLK_GATE_D, dspclk_gate);
+
+	I915_WRITE(WM3_LP_ILK, 0);
+	I915_WRITE(WM2_LP_ILK, 0);
+	I915_WRITE(WM1_LP_ILK, 0);
+
+	/* According to the spec, bit 13 (RCZUNIT) must be set on IVB.
+	 * This implements the WaDisableRCZUnitClockGating workaround.
+	 */
+	I915_WRITE(GEN6_UCGCTL2, GEN6_RCZUNIT_CLOCK_GATE_DISABLE);
+
+	I915_WRITE(ILK_DSPCLK_GATE, IVB_VRHUNIT_CLK_GATE);
+
+	I915_WRITE(IVB_CHICKEN3,
+		   CHICKEN3_DGMG_REQ_OUT_FIX_DISABLE |
+		   CHICKEN3_DGMG_DONE_FIX_DISABLE);
+
+	/* Apply the WaDisableRHWOOptimizationForRenderHang workaround. */
+	I915_WRITE(GEN7_COMMON_SLICE_CHICKEN1,
+		   GEN7_CSC1_RHWO_OPT_DISABLE_IN_RCC);
+
+	/* WaApplyL3ControlAndL3ChickenMode requires those two on Ivy Bridge */
+	I915_WRITE(GEN7_L3CNTLREG1,
+			GEN7_WA_FOR_GEN7_L3_CONTROL);
+	I915_WRITE(GEN7_L3_CHICKEN_MODE_REGISTER,
+			GEN7_WA_L3_CHICKEN_MODE);
+
+	/* This is required by WaCatErrorRejectionIssue */
+	I915_WRITE(GEN7_SQ_CHICKEN_MBCUNIT_CONFIG,
+			I915_READ(GEN7_SQ_CHICKEN_MBCUNIT_CONFIG) |
+			GEN7_SQ_CHICKEN_MBCUNIT_SQINTMOB);
+
+	for_each_pipe(pipe) {
+		I915_WRITE(DSPCNTR(pipe),
+			   I915_READ(DSPCNTR(pipe)) |
+			   DISPPLANE_TRICKLE_FEED_DISABLE);
+		intel_flush_display_plane(dev_priv, pipe);
+	}
+
+	gen7_setup_fixed_func_scheduler(dev_priv);
+
+	/* WaDisable4x2SubspanOptimization */
+	I915_WRITE(CACHE_MODE_1,
+		   _MASKED_BIT_ENABLE(PIXEL_SUBSPAN_COLLECT_OPT_DISABLE));
+}
+
 static void ivybridge_init_clock_gating(struct drm_device *dev)
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
@@ -3824,7 +3876,7 @@ void intel_init_pm(struct drm_device *dev)
 					      "Disable CxSR\n");
 				dev_priv->display.update_wm = NULL;
 			}
-			dev_priv->display.init_clock_gating = ivybridge_init_clock_gating;
+			dev_priv->display.init_clock_gating = haswell_init_clock_gating;
 			dev_priv->display.sanitize_pm = gen6_sanitize_pm;
 		} else
 			dev_priv->display.update_wm = NULL;
-- 
1.7.11.1

  parent reply	other threads:[~2012-07-02 14:49 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-07-02 14:51 [PATCH 00/10] Haswell force wake/rps v3 Eugeni Dodonov
2012-07-02 14:51 ` [PATCH 01/10] drm/i915: Group the GT routines together in both code and vtable Eugeni Dodonov
2012-07-02 16:41   ` Ben Widawsky
2012-07-02 14:51 ` [PATCH 02/10] drm/i915: Implement w/a for sporadic read failures on waking from rc6 Eugeni Dodonov
2012-07-02 16:46   ` Ben Widawsky
2012-07-02 14:51 ` [PATCH 03/10] drm/i915: support Haswell force waking Eugeni Dodonov
2012-07-02 16:49   ` Ben Widawsky
2012-07-02 14:51 ` [PATCH 04/10] drm/i915: add RPS configuration for Haswell Eugeni Dodonov
2012-07-02 17:49   ` Ben Widawsky
2012-07-02 20:02     ` Eugeni Dodonov
2012-07-02 21:19       ` Ben Widawsky
2012-07-04 21:34   ` Chris Wilson
2012-07-02 14:51 ` [PATCH 05/10] drm/i915: slightly improve gt enable/disable routines Eugeni Dodonov
2012-07-02 17:51   ` Ben Widawsky
2012-07-02 14:51 ` [PATCH 06/10] drm/i915: enable RC6 by default on Haswell Eugeni Dodonov
2012-07-02 18:11   ` Ben Widawsky
2012-07-02 14:51 ` [PATCH 07/10] drm/i915: disable RC6 when disabling rps Eugeni Dodonov
2012-07-02 18:36   ` Ben Widawsky
2012-07-02 14:51 ` Eugeni Dodonov [this message]
2012-07-02 18:39   ` [PATCH 08/10] drm/i915: introduce haswell_init_clock_gating Ben Widawsky
2012-07-03 20:24   ` Daniel Vetter
2012-07-04  0:03     ` Eugeni Dodonov
2012-07-04  7:27       ` Daniel Vetter
2012-07-02 14:51 ` [PATCH 09/10] drm/i915: enable RC6 workaround on Haswell Eugeni Dodonov
2012-07-02 18:40   ` Ben Widawsky
2012-07-02 14:51 ` [PATCH 10/10] drm/i915: move force wake support into intel_pm Eugeni Dodonov
2012-07-02 18:41   ` Ben Widawsky
2012-07-04  7:34     ` Daniel Vetter

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1341240671-5843-9-git-send-email-eugeni.dodonov@intel.com \
    --to=eugeni.dodonov@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.