intel-gfx.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
From: Jesse Barnes <jbarnes@virtuousgeek.org>
To: intel-gfx@lists.freedesktop.org
Subject: [PATCH 06/22] drm/i915: add ValleyView clock gating init
Date: Wed, 28 Mar 2012 13:39:26 -0700	[thread overview]
Message-ID: <1332967182-23298-7-git-send-email-jbarnes@virtuousgeek.org> (raw)
In-Reply-To: <1332967182-23298-1-git-send-email-jbarnes@virtuousgeek.org>

Set required clock gating and chicken bits on VLV.

v2: set PIXEL_SUBSPAN_COLLECT_OPT_DISABLE too (Ben)
    move function below ivb version to pretend to be consistent (Ben)

Reviewed-by: Ben Widawsky <ben@bwidawsk.net>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
---
 drivers/gpu/drm/i915/i915_reg.h      |   18 ++++++++++++
 drivers/gpu/drm/i915/intel_display.c |   50 ++++++++++++++++++++++++++++++++++
 2 files changed, 68 insertions(+), 0 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index dcaa1c9..a336ecb 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -633,6 +633,9 @@
 #define   ECO_GATING_CX_ONLY	(1<<3)
 #define   ECO_FLIP_DONE		(1<<0)
 
+#define CACHE_MODE_1		0x7004 /* IVB+ */
+#define   PIXEL_SUBSPAN_COLLECT_OPT_DISABLE (1<<6)
+
 /* GEN6 interrupt control */
 #define GEN6_RENDER_HWSTAM	0x2098
 #define GEN6_RENDER_IMR		0x20a8
@@ -3225,6 +3228,20 @@
 #define  DISP_TILE_SURFACE_SWIZZLING	(1<<13)
 #define  DISP_FBC_WM_DIS		(1<<15)
 
+/* GEN7 chicken */
+#define GEN7_COMMON_SLICE_CHICKEN1		0x7010
+# define GEN7_CSC1_RHWO_OPT_DISABLE_IN_RCC	((1<<10) | (1<<26))
+
+#define GEN7_L3CNTLREG1				0xB01C
+#define  GEN7_WA_FOR_GEN7_L3_CONTROL			0x3C4FFF8C
+
+#define GEN7_L3_CHICKEN_MODE_REGISTER		0xB030
+#define  GEN7_WA_L3_CHICKEN_MODE				0x20000000
+
+/* WaCatErrorRejectionIssue */
+#define GEN7_SQ_CHICKEN_MBCUNIT_CONFIG		0x9030
+#define  GEN7_SQ_CHICKEN_MBCUNIT_SQINTMOB	(1<<11)
+
 /* PCH */
 
 /* south display engine interrupt */
@@ -3828,6 +3845,7 @@
 #define    GT_FIFO_NUM_RESERVED_ENTRIES		20
 
 #define GEN6_UCGCTL2				0x9404
+# define GEN6_RCZUNIT_CLOCK_GATE_DISABLE		(1 << 13)
 # define GEN6_RCPBUNIT_CLOCK_GATE_DISABLE		(1 << 12)
 # define GEN6_RCCUNIT_CLOCK_GATE_DISABLE		(1 << 11)
 
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 5d19621..adf5c37 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -8724,6 +8724,54 @@ static void ivybridge_init_clock_gating(struct drm_device *dev)
 	}
 }
 
+static void valleyview_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);
+	}
+
+	I915_WRITE(CACHE_MODE_1, I915_READ(CACHE_MODE_1) |
+		   (PIXEL_SUBSPAN_COLLECT_OPT_DISABLE << 16) |
+		   PIXEL_SUBSPAN_COLLECT_OPT_DISABLE);
+}
+
 static void g4x_init_clock_gating(struct drm_device *dev)
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
@@ -9078,6 +9126,8 @@ static void intel_init_display(struct drm_device *dev)
 			dev_priv->display.update_wm = NULL;
 	} else if (IS_VALLEYVIEW(dev)) {
 		dev_priv->display.update_wm = valleyview_update_wm;
+		dev_priv->display.init_clock_gating =
+			valleyview_init_clock_gating;
 	} else if (IS_PINEVIEW(dev)) {
 		if (!intel_get_cxsr_latency(IS_PINEVIEW_G(dev),
 					    dev_priv->is_ddr3,
-- 
1.7.5.4

  parent reply	other threads:[~2012-03-28 20:39 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-03-28 20:39 ValleyView patches Jesse Barnes
2012-03-28 20:39 ` [PATCH 01/22] drm/i915: add ValleyView driver structs and IS_VALLEYVIEW macro Jesse Barnes
2012-03-28 20:39 ` [PATCH 02/22] drm/i915: ValleyView watermark support Jesse Barnes
2012-03-28 20:39 ` [PATCH 03/22] drm/i915: PLL defines for VLV Jesse Barnes
2012-03-28 20:39 ` [PATCH 04/22] drm/i915: interrupt bit definitions " Jesse Barnes
2012-03-28 21:33   ` Daniel Vetter
2012-03-28 21:39     ` Jesse Barnes
2012-03-28 21:47       ` Daniel Vetter
2012-03-28 21:50         ` Jesse Barnes
2012-03-28 20:39 ` [PATCH 05/22] drm/i915: add DPIO support Jesse Barnes
2012-03-28 20:39 ` Jesse Barnes [this message]
2012-03-28 20:39 ` [PATCH 07/22] drm/i915: split PLL update code out of i9xx_crtc_mode_set Jesse Barnes
2012-03-28 20:39 ` [PATCH 08/22] drm/i915: split LVDS " Jesse Barnes
2012-03-28 20:39 ` [PATCH 09/22] drm/i915: ValleyView mode setting limits and PLL functions Jesse Barnes
2012-03-28 20:39 ` [PATCH 10/22] drm/i915: program drain latency regs on ValleyView Jesse Barnes
2012-03-28 20:39 ` [PATCH 11/22] drm/i915: Enable DP panel power sequencing for ValleyView Jesse Barnes
2012-03-28 21:59   ` Daniel Vetter
2012-03-28 23:57     ` Jesse Barnes
2012-03-28 20:39 ` [PATCH 12/22] drm/i915: Enable HDMI on ValleyView Jesse Barnes
2012-03-28 20:39 ` [PATCH 13/22] agp/intel: map more registers for use by the GTT code Jesse Barnes
2012-03-28 20:39 ` [PATCH 14/22] agp/intel: add ValleyView AGP driver Jesse Barnes
2012-03-28 20:39 ` [PATCH 15/22] agp/intel: bind " Jesse Barnes
2012-03-28 20:39 ` [PATCH 16/22] drm/i915: add ValleyView specific CRT detect function Jesse Barnes
2012-03-28 20:39 ` [PATCH 17/22] drm/i915: add ValleyView specific force wake get/put functions Jesse Barnes
2012-03-28 20:39 ` [PATCH 18/22] drm/i915: ValleyView IRQ support Jesse Barnes
2012-03-30 16:46   ` Daniel Vetter
2012-03-30 16:52     ` Daniel Vetter
2012-03-28 20:39 ` [PATCH 19/22] drm/i915: check for disabled interrupts on ValleyView Jesse Barnes
2012-03-28 20:39 ` [PATCH 20/22] drm/i915: add HDMI and DP port enumeration " Jesse Barnes
2012-03-28 20:39 ` [PATCH 21/22] drm/i915: disable turbo on ValleyView for now Jesse Barnes
2012-03-28 22:02   ` Daniel Vetter
2012-03-28 23:57     ` Jesse Barnes
2012-03-28 20:39 ` [PATCH 22/22] drm/i915: bind driver to ValleyView chipsets Jesse Barnes
2012-03-29  9:06 ` ValleyView patches 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=1332967182-23298-7-git-send-email-jbarnes@virtuousgeek.org \
    --to=jbarnes@virtuousgeek.org \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).