All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vandana Kannan <vandana.kannan@intel.com>
To: intel-gfx@lists.freedesktop.org
Subject: [PATCH v2 2/3] drm/i915: Get CZ clock for VLV
Date: Thu,  7 Aug 2014 18:40:02 +0530	[thread overview]
Message-ID: <1407417003-10564-2-git-send-email-vandana.kannan@intel.com> (raw)
In-Reply-To: <1407417003-10564-1-git-send-email-vandana.kannan@intel.com>

CZ clock is related to data flow from memory to display plane. This is
required for comparison with CD clock before programming PFI credits.

v2: Ville's review comments
	- Re-ordered CCK_CZ_CONTROL
	- Refactored get_clock_speed

Signed-off-by: Vandana Kannan <vandana.kannan@intel.com>
---
 drivers/gpu/drm/i915/i915_drv.h      |  2 ++
 drivers/gpu/drm/i915/i915_reg.h      |  1 +
 drivers/gpu/drm/i915/intel_display.c | 43 ++++++++++++++++++++++++++++++------
 3 files changed, 39 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index dccd0a2..881e0a6 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -2784,6 +2784,8 @@ void vlv_flisdsi_write(struct drm_i915_private *dev_priv, u32 reg, u32 val);
 int vlv_gpu_freq(struct drm_i915_private *dev_priv, int val);
 int vlv_freq_opcode(struct drm_i915_private *dev_priv, int val);
 
+int valleyview_get_cz_clock_speed(struct drm_device *dev);
+
 #define FORCEWAKE_RENDER	(1 << 0)
 #define FORCEWAKE_MEDIA		(1 << 1)
 #define FORCEWAKE_ALL		(FORCEWAKE_RENDER | FORCEWAKE_MEDIA)
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index a8275b7..fb111cd 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -616,6 +616,7 @@ enum punit_power_well {
 #define  DSI_PLL_N1_DIV_MASK			(3 << 16)
 #define  DSI_PLL_M1_DIV_SHIFT			0
 #define  DSI_PLL_M1_DIV_MASK			(0x1ff << 0)
+#define CCK_CZ_CONTROL				0x62
 #define CCK_DISPLAY_CLOCK_CONTROL		0x6b
 #define  CCK_TRUNK_FORCE_ON			(1 << 17)
 #define  CCK_TRUNK_FORCE_OFF			(1 << 16)
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index f1f1b54..2089319 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -5316,30 +5316,59 @@ static int intel_crtc_compute_config(struct intel_crtc *crtc,
 	return 0;
 }
 
-static int valleyview_get_display_clock_speed(struct drm_device *dev)
+enum disp_clk {
+	CDCLK,
+	CZCLK
+};
+
+static int valleyview_get_cck_clock_speed(struct drm_device *dev,
+					  enum disp_clk clk)
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	int vco = valleyview_get_vco(dev_priv);
-	u32 val;
+	u32 val, reg;
 	int divider;
 
-	/* FIXME: Punit isn't quite ready yet */
-	if (IS_CHERRYVIEW(dev))
-		return 400000;
+	switch(clk) {
+	case CDCLK:
+	default:
+		reg = CCK_DISPLAY_CLOCK_CONTROL;
+		break;
+	case CZCLK:
+		reg = CCK_CZ_CONTROL;
+		break;
+	}
+
 	mutex_lock(&dev_priv->dpio_lock);
-	val = vlv_cck_read(dev_priv, CCK_DISPLAY_CLOCK_CONTROL);
+	val = vlv_cck_read(dev_priv, reg);
 	mutex_unlock(&dev_priv->dpio_lock);
 
 	divider = val & CCK_FREQUENCY_VALUES;
 
 	WARN((val & CCK_FREQUENCY_STATUS) !=
 	     (divider << CCK_FREQUENCY_STATUS_SHIFT),
-	     "cdclk change in progress\n");
+	     "%sclk change in progress\n", (clk == CDCLK) ? "cd" : "cz");
 
 	return DIV_ROUND_CLOSEST(vco << 1, divider + 1);
 }
 
+static int valleyview_get_display_clock_speed(struct drm_device *dev)
+{
+	/* FIXME: Punit isn't quite ready yet */
+	if (IS_CHERRYVIEW(dev))
+		return 400000;
+	else
+		return valleyview_get_cck_clock_speed(dev, CDCLK);
+}
+
+int valleyview_get_cz_clock_speed(struct drm_device *dev)
+{
+	return valleyview_get_cck_clock_speed(dev, CZCLK);
+}
+
 static int i945_get_display_clock_speed(struct drm_device *dev)
 {
 	return 400000;
-- 
2.0.1

  reply	other threads:[~2014-08-07 12:58 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-08-04 17:14 [PATCH 1/2] drm/i915: Get CZ clock for VLV Vandana Kannan
2014-08-04 17:14 ` [PATCH 2/2] drm/i915: Program PFI credits " Vandana Kannan
2014-08-05 13:09 ` [PATCH 1/2] drm/i915: Get CZ clock " Ville Syrjälä
2014-08-05 15:27   ` Vandana Kannan
2014-08-05 15:40     ` Ville Syrjälä
2014-08-07 13:10       ` [PATCH 1/3] drm/i915: Renaming CCK related reg definitions Vandana Kannan
2014-08-07 13:10         ` Vandana Kannan [this message]
2014-08-07 13:10         ` [PATCH 3/3] drm/i915: Program PFI credits for VLV Vandana Kannan
2014-08-08 13:03           ` Ville Syrjälä
2014-08-18  9:14             ` Vandana Kannan

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=1407417003-10564-2-git-send-email-vandana.kannan@intel.com \
    --to=vandana.kannan@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.