intel-gfx.lists.freedesktop.org archive mirror
 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 38/41] drm/i915: detect digital outputs on Haswell
Date: Thu, 29 Mar 2012 12:32:54 -0300	[thread overview]
Message-ID: <1333035177-19607-39-git-send-email-eugeni.dodonov@intel.com> (raw)
In-Reply-To: <1333035177-19607-1-git-send-email-eugeni.dodonov@intel.com>

Digital port detection on Haswell is indicated by the presence of a bit in
DDI_BUF_CTL for port A, and by a different register for ports B, C and D.
So we check for those bits during the initialization time and let the hdmi
function know about those.

Note that this bit does not indicates whether the output is DP or HDMI.
However, the DDI buffers can be programmed in a way that is shared between
DP/HDMI and FDI/HDMI except for PORT E.

So for now, we detect those digital outputs as being HDMI, but proper DP
support is still pending.

Signed-off-by: Eugeni Dodonov <eugeni.dodonov@intel.com>
---
 drivers/gpu/drm/i915/intel_display.c |   50 +++++++++++++++++++++++-----------
 1 file changed, 34 insertions(+), 16 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 5aaf592..c457592 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -8372,26 +8372,44 @@ static void intel_setup_outputs(struct drm_device *dev)
 	if (HAS_PCH_SPLIT(dev)) {
 		int found;
 
-		if (I915_READ(HDMIB) & PORT_DETECTED) {
-			/* PCH SDVOB multiplex with HDMIB */
-			found = intel_sdvo_init(dev, PCH_SDVOB);
-			if (!found)
-				intel_hdmi_init(dev, HDMIB);
-			if (!found && (I915_READ(PCH_DP_B) & DP_DETECTED))
-				intel_dp_init(dev, PCH_DP_B);
-		}
+		if (IS_HASWELL(dev)) {
+			/* Haswell uses DDI functions to detect digital outputs */
+			found = I915_READ(DDI_BUF_CTL_A) & DDI_INIT_DISPLAY_DETECTED;
+			if (found)
+				intel_hdmi_init(dev, DDI_BUF_CTL_A);
+
+			/* DDI B, C and D detection is indicated by the SFUSE_STRAP
+			 * register */
+			found = I915_READ(SFUSE_STRAP);
+
+			if (found & SFUSE_STRAP_DDIB_DETECTED)
+				intel_hdmi_init(dev, DDI_BUF_CTL(PORT_B));
+			if (found & SFUSE_STRAP_DDIC_DETECTED)
+				intel_hdmi_init(dev, DDI_BUF_CTL(PORT_C));
+			if (found & SFUSE_STRAP_DDID_DETECTED)
+				intel_hdmi_init(dev, DDI_BUF_CTL(PORT_D));
+		} else {
+			if (I915_READ(HDMIB) & PORT_DETECTED) {
+				/* PCH SDVOB multiplex with HDMIB */
+				found = intel_sdvo_init(dev, PCH_SDVOB);
+				if (!found)
+					intel_hdmi_init(dev, HDMIB);
+				if (!found && (I915_READ(PCH_DP_B) & DP_DETECTED))
+					intel_dp_init(dev, PCH_DP_B);
+			}
 
-		if (I915_READ(HDMIC) & PORT_DETECTED)
-			intel_hdmi_init(dev, HDMIC);
+			if (I915_READ(HDMIC) & PORT_DETECTED)
+				intel_hdmi_init(dev, HDMIC);
 
-		if (I915_READ(HDMID) & PORT_DETECTED)
-			intel_hdmi_init(dev, HDMID);
+			if (I915_READ(HDMID) & PORT_DETECTED)
+				intel_hdmi_init(dev, HDMID);
 
-		if (I915_READ(PCH_DP_C) & DP_DETECTED)
-			intel_dp_init(dev, PCH_DP_C);
+			if (I915_READ(PCH_DP_C) & DP_DETECTED)
+				intel_dp_init(dev, PCH_DP_C);
 
-		if (!dpd_is_edp && (I915_READ(PCH_DP_D) & DP_DETECTED))
-			intel_dp_init(dev, PCH_DP_D);
+			if (!dpd_is_edp && (I915_READ(PCH_DP_D) & DP_DETECTED))
+				intel_dp_init(dev, PCH_DP_D);
+		}
 
 	} else if (SUPPORTS_DIGITAL_OUTPUTS(dev)) {
 		bool found = false;
-- 
1.7.9.5

  parent reply	other threads:[~2012-03-29 16:00 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-03-29 15:32 [PATCH 00/41] [RFC] Haswell v2 Eugeni Dodonov
2012-03-29 15:32 ` [PATCH 01/41] drm/i915: transform HAS_PCH_SPLIT in a feature check Eugeni Dodonov
2012-03-29 15:32 ` [PATCH 02/41] drm/i915: add Haswell devices and their PCI IDs Eugeni Dodonov
2012-03-29 15:32 ` [PATCH 03/41] drm/i915: hook Haswell devices in place Eugeni Dodonov
2012-03-29 15:32 ` [PATCH 04/41] drm/i915: add support for LynxPoint PCH Eugeni Dodonov
2012-03-29 15:32 ` [PATCH 05/41] drm/i915: add support for power wells Eugeni Dodonov
2012-03-29 15:32 ` [PATCH 06/41] drm/i915: add enumeration for DDI ports Eugeni Dodonov
2012-03-29 15:32 ` [PATCH 07/41] drm/i915: add DDI registers Eugeni Dodonov
2012-03-29 15:32 ` [PATCH 08/41] drm/i915: add DP_TP_CTL registers Eugeni Dodonov
2012-03-29 15:32 ` [PATCH 09/41] drm/i915: add DP_TP_STATUS registers Eugeni Dodonov
2012-03-29 15:32 ` [PATCH 10/41] drm/i915: add definitions for DDI_BUF_CTL registers Eugeni Dodonov
2012-03-29 15:32 ` [PATCH 11/41] drm/i915: add definition of DDI buffer translations regs Eugeni Dodonov
2012-03-29 15:32 ` [PATCH 12/41] drm/i915: add definition of LPT FDI port width registers Eugeni Dodonov
2012-03-29 20:25   ` Daniel Vetter
2012-03-29 15:32 ` [PATCH 13/41] drm/i915: add SBI registers Eugeni Dodonov
2012-03-29 15:32 ` [PATCH 14/41] drm/i915: add support for SBI ops Eugeni Dodonov
2012-03-29 20:27   ` Daniel Vetter
2012-03-29 15:32 ` [PATCH 15/41] drm/i915: add PIXCLK_GATE register Eugeni Dodonov
2012-03-29 15:32 ` [PATCH 16/41] drm/i915: add S PLL control Eugeni Dodonov
2012-03-29 15:32 ` [PATCH 17/41] drm/i915: add port clock selection support for HSW Eugeni Dodonov
2012-03-29 15:32 ` [PATCH 18/41] drm/i915: add SSC offsets for SBI access Eugeni Dodonov
2012-03-29 15:32 ` [PATCH 19/41] drm/i915: add LCPLL control registers Eugeni Dodonov
2012-03-29 15:32 ` [PATCH 20/41] drm/i915: add WRPLL clocks Eugeni Dodonov
2012-03-29 15:32 ` [PATCH 21/41] drm/i915: add WM_LINETIME registers Eugeni Dodonov
2012-03-29 15:32 ` [PATCH 22/41] drm/i915: add SFUSE_STRAP registers for digital port detection Eugeni Dodonov
2012-03-29 20:35   ` Daniel Vetter
2012-03-29 15:32 ` [PATCH 23/41] drm/i915: calculate same watermarks on Haswell as on Ivy Bridge Eugeni Dodonov
2012-03-29 15:32 ` [PATCH 24/41] drm/i915: share forcewaking code between IVB and HSW Eugeni Dodonov
2012-03-29 15:32 ` [PATCH 25/41] drm/i915: haswell has 3 pipes as well Eugeni Dodonov
2012-03-29 15:32 ` [PATCH 26/41] drm/i915: reuse Ivybridge interrupts code for Haswell Eugeni Dodonov
2012-03-29 15:32 ` [PATCH 27/41] drm/i915: share pipe count handling with Ivybridge Eugeni Dodonov
2012-03-29 15:32 ` [PATCH 28/41] drm/i915: share IVB cursor routine with Haswell Eugeni Dodonov
2012-03-29 15:32 ` [PATCH 29/41] drm/i915: show unknown sdvox registers on hdmi init Eugeni Dodonov
2012-03-29 15:32 ` [PATCH 30/41] drm/i915: enable power wells on haswell init Eugeni Dodonov
2012-03-29 15:32 ` [PATCH 31/41] drm/i915: disable rc6 on haswell for now Eugeni Dodonov
2012-03-29 15:32 ` [PATCH 32/41] drm/i915: program WM_LINETIME on Haswell Eugeni Dodonov
2012-03-29 15:32 ` [PATCH 33/41] drm/i915: initialize DDI buffer translations Eugeni Dodonov
2012-03-29 15:32 ` [PATCH 34/41] drm/i915: perform Haswell DDI link training in FDI mode Eugeni Dodonov
2012-03-29 15:32 ` [PATCH 35/41] drm/i915: disable pipe DDI function when disabling pipe Eugeni Dodonov
2012-03-29 15:32 ` [PATCH 36/41] drm/i915: do not use fdi_normal_train on haswell Eugeni Dodonov
2012-03-29 15:32 ` [PATCH 37/41] drm/i915: program iCLKIP on Lynx Point Eugeni Dodonov
2012-03-29 15:32 ` Eugeni Dodonov [this message]
2012-03-29 15:32 ` [PATCH 39/41] drm/i915: add support for DDI-controlled digital outputs Eugeni Dodonov
2012-03-29 15:32 ` [PATCH 40/41] drm/i915: prepare HDMI link for Haswell Eugeni Dodonov
2012-03-29 15:32 ` [PATCH 41/41] drm/i915: add debugging bits for haswell modesetting Eugeni Dodonov

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=1333035177-19607-39-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 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).