All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paulo Zanoni <przanoni@gmail.com>
To: intel-gfx@lists.freedesktop.org
Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
Subject: [PATCH 02/14] drm/i915: add intel_ddi_set_pipe_settings
Date: Mon, 15 Oct 2012 15:51:30 -0300	[thread overview]
Message-ID: <1350327102-4463-3-git-send-email-przanoni@gmail.com> (raw)
In-Reply-To: <1350327102-4463-1-git-send-email-przanoni@gmail.com>

From: Paulo Zanoni <paulo.r.zanoni@intel.com>

In theory, all the DDI pipe settings should be set here, including
timing and M/N registers. For now, let's just set the DP MSA
attributes.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
---
 drivers/gpu/drm/i915/i915_reg.h      | 10 ++++++++++
 drivers/gpu/drm/i915/intel_ddi.c     | 34 ++++++++++++++++++++++++++++++++++
 drivers/gpu/drm/i915/intel_display.c |  4 +++-
 drivers/gpu/drm/i915/intel_drv.h     |  1 +
 4 files changed, 48 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 8200c31..7ca8b7d 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -4533,6 +4533,16 @@
 #define  PIPE_CLK_SEL_DISABLED		(0x0<<29)
 #define  PIPE_CLK_SEL_PORT(x)		((x+1)<<29)
 
+#define _PIPEA_MSA_MISC			0x60410
+#define _PIPEB_MSA_MISC			0x61410
+#define PIPE_MSA_MISC(pipe) _PIPE(pipe, _PIPEA_MSA_MISC, _PIPEB_MSA_MISC)
+#define  PIPE_MSA_SYNC_CLK		(1<<0)
+#define  PIPE_MSA_6_BPC			(0<<5)
+#define  PIPE_MSA_8_BPC			(1<<5)
+#define  PIPE_MSA_10_BPC		(2<<5)
+#define  PIPE_MSA_12_BPC		(3<<5)
+#define  PIPE_MSA_16_BPC		(3<<5)
+
 /* LCPLL Control */
 #define LCPLL_CTL			0x130040
 #define  LCPLL_PLL_DISABLE		(1<<31)
diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
index 9659c227..e58df71 100644
--- a/drivers/gpu/drm/i915/intel_ddi.c
+++ b/drivers/gpu/drm/i915/intel_ddi.c
@@ -827,6 +827,40 @@ bool intel_ddi_pll_mode_set(struct drm_crtc *crtc, int clock)
 	return true;
 }
 
+void intel_ddi_set_pipe_settings(struct drm_crtc *crtc)
+{
+	struct drm_i915_private *dev_priv = crtc->dev->dev_private;
+	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
+	struct intel_encoder *intel_encoder = intel_ddi_get_crtc_encoder(crtc);
+	enum pipe pipe = intel_crtc->pipe;
+	int type = intel_encoder->type;
+	uint32_t temp;
+
+	if (type == INTEL_OUTPUT_DISPLAYPORT || type == INTEL_OUTPUT_EDP) {
+
+		temp = PIPE_MSA_SYNC_CLK;
+		switch (intel_crtc->bpp) {
+		case 18:
+			temp |= PIPE_MSA_6_BPC;
+			break;
+		case 24:
+			temp |= PIPE_MSA_8_BPC;
+			break;
+		case 30:
+			temp |= PIPE_MSA_10_BPC;
+			break;
+		case 36:
+			temp |= PIPE_MSA_12_BPC;
+			break;
+		default:
+			temp |= PIPE_MSA_8_BPC;
+			WARN(1, "%d bpp unsupported by pipe DDI function\n",
+			     intel_crtc->bpp);
+		}
+		I915_WRITE(PIPE_MSA_MISC(pipe), temp);
+	}
+}
+
 void intel_ddi_enable_pipe_func(struct drm_crtc *crtc)
 {
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 705ed80..f48986b9 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -3218,8 +3218,10 @@ static void ironlake_crtc_enable(struct drm_crtc *crtc)
 	 */
 	intel_crtc_load_lut(crtc);
 
-	if (IS_HASWELL(dev))
+	if (IS_HASWELL(dev)) {
+		intel_ddi_set_pipe_settings(crtc);
 		intel_ddi_enable_pipe_func(crtc);
+	}
 
 	intel_enable_pipe(dev_priv, pipe, is_pch_port);
 	intel_enable_plane(dev_priv, plane, pipe);
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index 7e1e670..ed75a36 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -597,5 +597,6 @@ extern bool intel_ddi_pll_mode_set(struct drm_crtc *crtc, int clock);
 extern void intel_ddi_pre_enable(struct intel_encoder *intel_encoder);
 extern void intel_ddi_post_disable(struct intel_encoder *intel_encoder);
 extern void intel_ddi_put_crtc_pll(struct drm_crtc *crtc);
+extern void intel_ddi_set_pipe_settings(struct drm_crtc *crtc);
 
 #endif /* __INTEL_DRV_H__ */
-- 
1.7.11.4

  parent reply	other threads:[~2012-10-15 18:52 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-10-15 18:51 [PATCH 00/14] Haswell DP enablement Paulo Zanoni
2012-10-15 18:51 ` [PATCH 01/14] drm/i915: add DP support to intel_ddi_enable_pipe_func Paulo Zanoni
2012-10-16 10:04   ` Jani Nikula
2012-10-15 18:51 ` Paulo Zanoni [this message]
2012-10-16  8:05   ` [PATCH 02/14] drm/i915: add intel_ddi_set_pipe_settings Jani Nikula
2012-10-15 18:51 ` [PATCH 03/14] drm/i915: add DP support to intel_ddi_pll_mode_set Paulo Zanoni
2012-10-15 18:51 ` [PATCH 04/14] drm/i915: add DP support to intel_ddi_disable_port Paulo Zanoni
2012-10-16 10:05   ` Jani Nikula
2012-10-15 18:51 ` [PATCH 05/14] drm/i915: add DP support to intel_ddi_mode_set Paulo Zanoni
2012-10-18 18:00   ` Lespiau, Damien
2012-10-15 18:51 ` [PATCH 06/14] drm/i915: add basic Haswell DP link train bits Paulo Zanoni
2012-10-16 11:47   ` Jani Nikula
2012-10-15 18:51 ` [PATCH 07/14] drm/i915: use TU_SIZE macro at intel_dp_set_m_n Paulo Zanoni
2012-10-16 11:49   ` Jani Nikula
2012-10-17 20:27     ` Daniel Vetter
2012-10-18 17:14       ` Paulo Zanoni
2012-10-18 19:36         ` Daniel Vetter
2012-10-15 18:51 ` [PATCH 08/14] drm/i915: fix Haswell DP M/N registers Paulo Zanoni
2012-10-15 20:29   ` Adam Jackson
2012-10-15 20:39     ` Daniel Vetter
2012-10-15 20:45       ` Paulo Zanoni
2012-10-18 15:42   ` [PATCH 08/83] " Paulo Zanoni
2012-10-15 18:51 ` [PATCH 09/14] drm/i915: fix DP AUX register definitions on Haswell Paulo Zanoni
2012-10-18 13:57   ` Lespiau, Damien
2012-10-15 18:51 ` [PATCH 10/14] drm/i915: add DP support to intel_ddi_get_encoder_port Paulo Zanoni
2012-10-18 14:06   ` Lespiau, Damien
2012-10-15 18:51 ` [PATCH 11/14] drm/i915: add DP support to intel_ddi_get_hw_state Paulo Zanoni
2012-10-18 14:14   ` Lespiau, Damien
2012-10-15 18:51 ` [PATCH 12/14] drm/i915: add DP support to intel_enable_ddi Paulo Zanoni
2012-10-18 14:20   ` Lespiau, Damien
2012-10-15 18:51 ` [PATCH 13/14] drm/i915: implement Haswell DP link train sequence Paulo Zanoni
2012-10-18 17:34   ` Lespiau, Damien
2012-10-15 18:51 ` [PATCH 14/14] drm/i915: set the correct function pointers for Haswell DP Paulo Zanoni
2012-10-18 17:36   ` Lespiau, Damien

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=1350327102-4463-3-git-send-email-przanoni@gmail.com \
    --to=przanoni@gmail.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=paulo.r.zanoni@intel.com \
    /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.