drm/i915: Disable high-bpc on pre-1.4 EDID screens
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Fri, 19 Apr 2013 09:24:34 +0000 (11:24 +0200)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Wed, 24 Apr 2013 11:06:05 +0000 (13:06 +0200)
Prevents black screens when using 30bpp framebuffers on my
HDMI screens here. The DP input on the same screen though reports a
1.4 EDID with the correct 8bpc limit set.

v2: Actually check for the right thing!

Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/intel_display.c

index 988e543ec45bfa65f717eb6f3eb844b44ac932a3..15ce99125c64d435baf49be6084b04009a26b762 100644 (file)
@@ -7694,6 +7694,13 @@ pipe_config_set_bpp(struct drm_crtc *crtc,
                                      bpp, connector->display_info.bpc*3);
                        pipe_config->pipe_bpp = connector->display_info.bpc*3;
                }
+
+               /* Clamp bpp to 8 on screens without EDID 1.4 */
+               if (connector->display_info.bpc == 0 && bpp > 24) {
+                       DRM_DEBUG_KMS("clamping display bpp (was %d) to default limit of 24\n",
+                                     bpp);
+                       pipe_config->pipe_bpp = 24;
+               }
        }
 
        return bpp;