drm/edid: Add quirk for Sony PVM-2541A to get 12 bpc hdmi deep color.
authorMario Kleiner <mario.kleiner.de@gmail.com>
Fri, 23 May 2014 19:40:55 +0000 (21:40 +0200)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 2 Jun 2014 22:37:35 +0000 (18:37 -0400)
The Sony PVM-2541A OLED high precision color display supports
both 10 bpc and 12 bpc hdmi deep color input, but its edid
does not signal any deep color support.

Add a quirk to force it being treated as a 12 bpc panel.

Signed-off-by: Mario Kleiner <mario.kleiner.de@gmail.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/drm_edid.c

index 3989c18..643f830 100644 (file)
@@ -70,6 +70,8 @@
 #define EDID_QUIRK_FORCE_REDUCED_BLANKING      (1 << 7)
 /* Force 8bpc */
 #define EDID_QUIRK_FORCE_8BPC                  (1 << 8)
+/* Force 12bpc */
+#define EDID_QUIRK_FORCE_12BPC                 (1 << 9)
 
 struct detailed_mode_closure {
        struct drm_connector *connector;
@@ -125,6 +127,9 @@ static struct edid_quirk {
        { "SAM", 596, EDID_QUIRK_PREFER_LARGE_60 },
        { "SAM", 638, EDID_QUIRK_PREFER_LARGE_60 },
 
+       /* Sony PVM-2541A does up to 12 bpc, but only reports max 8 bpc */
+       { "SNY", 0x2541, EDID_QUIRK_FORCE_12BPC },
+
        /* ViewSonic VA2026w */
        { "VSC", 5020, EDID_QUIRK_FORCE_REDUCED_BLANKING },
 
@@ -3660,6 +3665,9 @@ int drm_add_edid_modes(struct drm_connector *connector, struct edid *edid)
        if (quirks & EDID_QUIRK_FORCE_8BPC)
                connector->display_info.bpc = 8;
 
+       if (quirks & EDID_QUIRK_FORCE_12BPC)
+               connector->display_info.bpc = 12;
+
        return num_modes;
 }
 EXPORT_SYMBOL(drm_add_edid_modes);