aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMario Kleiner <mario.kleiner.de@gmail.com>2014-05-23 15:40:55 -0400
committerAlex Deucher <alexander.deucher@amd.com>2014-06-02 18:37:35 -0400
commitbc5b96414cf8fe1cf73f778144ed6e10cbd849b4 (patch)
treea690529897b23892cb16f1c7e405379f73a22125
parentd0c94692e0a360828745a469bcf90b5c4f9273d0 (diff)
drm/edid: Add quirk for Sony PVM-2541A to get 12 bpc hdmi deep color.
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>
-rw-r--r--drivers/gpu/drm/drm_edid.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
index 3989c185579f..643f830f3413 100644
--- a/drivers/gpu/drm/drm_edid.c
+++ b/drivers/gpu/drm/drm_edid.c
@@ -70,6 +70,8 @@
70#define EDID_QUIRK_FORCE_REDUCED_BLANKING (1 << 7) 70#define EDID_QUIRK_FORCE_REDUCED_BLANKING (1 << 7)
71/* Force 8bpc */ 71/* Force 8bpc */
72#define EDID_QUIRK_FORCE_8BPC (1 << 8) 72#define EDID_QUIRK_FORCE_8BPC (1 << 8)
73/* Force 12bpc */
74#define EDID_QUIRK_FORCE_12BPC (1 << 9)
73 75
74struct detailed_mode_closure { 76struct detailed_mode_closure {
75 struct drm_connector *connector; 77 struct drm_connector *connector;
@@ -125,6 +127,9 @@ static struct edid_quirk {
125 { "SAM", 596, EDID_QUIRK_PREFER_LARGE_60 }, 127 { "SAM", 596, EDID_QUIRK_PREFER_LARGE_60 },
126 { "SAM", 638, EDID_QUIRK_PREFER_LARGE_60 }, 128 { "SAM", 638, EDID_QUIRK_PREFER_LARGE_60 },
127 129
130 /* Sony PVM-2541A does up to 12 bpc, but only reports max 8 bpc */
131 { "SNY", 0x2541, EDID_QUIRK_FORCE_12BPC },
132
128 /* ViewSonic VA2026w */ 133 /* ViewSonic VA2026w */
129 { "VSC", 5020, EDID_QUIRK_FORCE_REDUCED_BLANKING }, 134 { "VSC", 5020, EDID_QUIRK_FORCE_REDUCED_BLANKING },
130 135
@@ -3660,6 +3665,9 @@ int drm_add_edid_modes(struct drm_connector *connector, struct edid *edid)
3660 if (quirks & EDID_QUIRK_FORCE_8BPC) 3665 if (quirks & EDID_QUIRK_FORCE_8BPC)
3661 connector->display_info.bpc = 8; 3666 connector->display_info.bpc = 8;
3662 3667
3668 if (quirks & EDID_QUIRK_FORCE_12BPC)
3669 connector->display_info.bpc = 12;
3670
3663 return num_modes; 3671 return num_modes;
3664} 3672}
3665EXPORT_SYMBOL(drm_add_edid_modes); 3673EXPORT_SYMBOL(drm_add_edid_modes);