drm/i915: detect PCH encoders on Haswell
authorEugeni Dodonov <eugeni.dodonov@intel.com>
Wed, 9 May 2012 23:30:31 +0000 (20:30 -0300)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Sat, 19 May 2012 20:39:45 +0000 (22:39 +0200)
On Haswell, the recommended PCH-connected output is the one driven by DDI
E in FDI mode, used for VGA connection. All the others are handled by the
CPU.

Note that this does not accounts for Haswell/PPT combination yet, so if we
encounter such combination an error message is thrown to indicate that
things could go wrong.

v2: improve non-LPT detection warning per Daniel Vetter's suggestion.

Signed-off-by: Eugeni Dodonov <eugeni.dodonov@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/intel_display.c

index cc910e69f7097d9b4592cc814235f7b9f57120ff..bb049a178632f168facf0e60c6c06f6caf61e819 100644 (file)
@@ -2610,6 +2610,22 @@ static bool intel_crtc_driving_pch(struct drm_crtc *crtc)
                if (encoder->base.crtc != crtc)
                        continue;
 
+               /* On Haswell, LPT PCH handles the VGA connection via FDI, and Haswell
+                * CPU handles all others */
+               if (IS_HASWELL(dev)) {
+                       /* It is still unclear how this will work on PPT, so throw up a warning */
+                       WARN_ON(!HAS_PCH_LPT(dev));
+
+                       if (encoder->type == DRM_MODE_ENCODER_DAC) {
+                               DRM_DEBUG_KMS("Haswell detected DAC encoder, assuming is PCH\n");
+                               return true;
+                       } else {
+                               DRM_DEBUG_KMS("Haswell detected encoder %d, assuming is CPU\n",
+                                               encoder->type);
+                               return false;
+                       }
+               }
+
                switch (encoder->type) {
                case INTEL_OUTPUT_EDP:
                        if (!intel_encoder_is_pch_edp(&encoder->base))