aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/EDID
diff options
context:
space:
mode:
authorDaniel Thompson <daniel.thompson@linaro.org>2014-05-23 11:01:43 -0400
committerDave Airlie <airlied@redhat.com>2014-05-25 22:53:40 -0400
commit4cbe1bfa27dcc8e757c723f27e5a8e8b5fc32117 (patch)
tree5a31eb5614a8f5562031f4be00de30e59520e97c /Documentation/EDID
parent9a6594fc5241ad96cff727a134f336b1f1eaa0f7 (diff)
drm: Add 800x600 (SVGA) screen resolution to the built-in EDIDs
The 800x600 (SVGA) screen resolution was lacking in the set of built-in selectable EDID screen resolutions that can be used to repair misbehaving monitor firmware. This patch adds the related data set and expands the documentation. Note that the SVGA bit occupies a different byte to all the existing users of the established timing bits forcing a rework of the ESTABLISHED_TIMINGS_BITS macro. Tested new EDID on an aged (and misbehaving) industrial LCD panel; existing EDIDs still pass edid-decode's checksum checks. Signed-off-by: Daniel Thompson <daniel.thompson@linaro.org> Cc: Randy Dunlap <rdunlap@infradead.org> Cc: David Airlie <airlied@linux.ie> Cc: Carsten Emde <C.Emde@osadl.org> Cc: linux-doc@vger.kernel.org Cc: dri-devel@lists.freedesktop.org Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'Documentation/EDID')
-rw-r--r--Documentation/EDID/1024x768.S2
-rw-r--r--Documentation/EDID/1280x1024.S2
-rw-r--r--Documentation/EDID/1600x1200.S2
-rw-r--r--Documentation/EDID/1680x1050.S2
-rw-r--r--Documentation/EDID/1920x1080.S2
-rw-r--r--Documentation/EDID/800x600.S41
-rw-r--r--Documentation/EDID/HOWTO.txt2
-rw-r--r--Documentation/EDID/edid.S17
8 files changed, 61 insertions, 9 deletions
diff --git a/Documentation/EDID/1024x768.S b/Documentation/EDID/1024x768.S
index 4b486fe31b32..6f3e4b75e49e 100644
--- a/Documentation/EDID/1024x768.S
+++ b/Documentation/EDID/1024x768.S
@@ -36,7 +36,7 @@
36#define DPI 72 36#define DPI 72
37#define VFREQ 60 /* Hz */ 37#define VFREQ 60 /* Hz */
38#define TIMING_NAME "Linux XGA" 38#define TIMING_NAME "Linux XGA"
39#define ESTABLISHED_TIMINGS_BITS 0x08 /* Bit 3 -> 1024x768 @60 Hz */ 39#define ESTABLISHED_TIMING2_BITS 0x08 /* Bit 3 -> 1024x768 @60 Hz */
40#define HSYNC_POL 0 40#define HSYNC_POL 0
41#define VSYNC_POL 0 41#define VSYNC_POL 0
42#define CRC 0x55 42#define CRC 0x55
diff --git a/Documentation/EDID/1280x1024.S b/Documentation/EDID/1280x1024.S
index a2799fe33a4d..bd9bef2a65af 100644
--- a/Documentation/EDID/1280x1024.S
+++ b/Documentation/EDID/1280x1024.S
@@ -36,7 +36,7 @@
36#define DPI 72 36#define DPI 72
37#define VFREQ 60 /* Hz */ 37#define VFREQ 60 /* Hz */
38#define TIMING_NAME "Linux SXGA" 38#define TIMING_NAME "Linux SXGA"
39#define ESTABLISHED_TIMINGS_BITS 0x00 /* none */ 39/* No ESTABLISHED_TIMINGx_BITS */
40#define HSYNC_POL 1 40#define HSYNC_POL 1
41#define VSYNC_POL 1 41#define VSYNC_POL 1
42#define CRC 0xa0 42#define CRC 0xa0
diff --git a/Documentation/EDID/1600x1200.S b/Documentation/EDID/1600x1200.S
index 0ded64cfd1f5..a45101c6160c 100644
--- a/Documentation/EDID/1600x1200.S
+++ b/Documentation/EDID/1600x1200.S
@@ -36,7 +36,7 @@
36#define DPI 72 36#define DPI 72
37#define VFREQ 60 /* Hz */ 37#define VFREQ 60 /* Hz */
38#define TIMING_NAME "Linux UXGA" 38#define TIMING_NAME "Linux UXGA"
39#define ESTABLISHED_TIMINGS_BITS 0x00 /* none */ 39/* No ESTABLISHED_TIMINGx_BITS */
40#define HSYNC_POL 1 40#define HSYNC_POL 1
41#define VSYNC_POL 1 41#define VSYNC_POL 1
42#define CRC 0x9d 42#define CRC 0x9d
diff --git a/Documentation/EDID/1680x1050.S b/Documentation/EDID/1680x1050.S
index 96f67cafcf2e..b0d7c69282b4 100644
--- a/Documentation/EDID/1680x1050.S
+++ b/Documentation/EDID/1680x1050.S
@@ -36,7 +36,7 @@
36#define DPI 96 36#define DPI 96
37#define VFREQ 60 /* Hz */ 37#define VFREQ 60 /* Hz */
38#define TIMING_NAME "Linux WSXGA" 38#define TIMING_NAME "Linux WSXGA"
39#define ESTABLISHED_TIMINGS_BITS 0x00 /* none */ 39/* No ESTABLISHED_TIMINGx_BITS */
40#define HSYNC_POL 1 40#define HSYNC_POL 1
41#define VSYNC_POL 1 41#define VSYNC_POL 1
42#define CRC 0x26 42#define CRC 0x26
diff --git a/Documentation/EDID/1920x1080.S b/Documentation/EDID/1920x1080.S
index 36ed5d571d0a..3084355e81e7 100644
--- a/Documentation/EDID/1920x1080.S
+++ b/Documentation/EDID/1920x1080.S
@@ -36,7 +36,7 @@
36#define DPI 96 36#define DPI 96
37#define VFREQ 60 /* Hz */ 37#define VFREQ 60 /* Hz */
38#define TIMING_NAME "Linux FHD" 38#define TIMING_NAME "Linux FHD"
39#define ESTABLISHED_TIMINGS_BITS 0x00 /* none */ 39/* No ESTABLISHED_TIMINGx_BITS */
40#define HSYNC_POL 1 40#define HSYNC_POL 1
41#define VSYNC_POL 1 41#define VSYNC_POL 1
42#define CRC 0x05 42#define CRC 0x05
diff --git a/Documentation/EDID/800x600.S b/Documentation/EDID/800x600.S
new file mode 100644
index 000000000000..6644e26d5801
--- /dev/null
+++ b/Documentation/EDID/800x600.S
@@ -0,0 +1,41 @@
1/*
2 800x600.S: EDID data set for standard 800x600 60 Hz monitor
3
4 Copyright (C) 2011 Carsten Emde <C.Emde@osadl.org>
5 Copyright (C) 2014 Linaro Limited
6
7 This program is free software; you can redistribute it and/or
8 modify it under the terms of the GNU General Public License
9 as published by the Free Software Foundation; either version 2
10 of the License, or (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16*/
17
18/* EDID */
19#define VERSION 1
20#define REVISION 3
21
22/* Display */
23#define CLOCK 40000 /* kHz */
24#define XPIX 800
25#define YPIX 600
26#define XY_RATIO XY_RATIO_4_3
27#define XBLANK 256
28#define YBLANK 28
29#define XOFFSET 40
30#define XPULSE 128
31#define YOFFSET (63+1)
32#define YPULSE (63+4)
33#define DPI 72
34#define VFREQ 60 /* Hz */
35#define TIMING_NAME "Linux SVGA"
36#define ESTABLISHED_TIMING1_BITS 0x01 /* Bit 0: 800x600 @ 60Hz */
37#define HSYNC_POL 1
38#define VSYNC_POL 1
39#define CRC 0xc2
40
41#include "edid.S"
diff --git a/Documentation/EDID/HOWTO.txt b/Documentation/EDID/HOWTO.txt
index 7146db1d9e8c..835db332289b 100644
--- a/Documentation/EDID/HOWTO.txt
+++ b/Documentation/EDID/HOWTO.txt
@@ -18,7 +18,7 @@ CONFIG_DRM_LOAD_EDID_FIRMWARE was introduced. It allows to provide an
18individually prepared or corrected EDID data set in the /lib/firmware 18individually prepared or corrected EDID data set in the /lib/firmware
19directory from where it is loaded via the firmware interface. The code 19directory from where it is loaded via the firmware interface. The code
20(see drivers/gpu/drm/drm_edid_load.c) contains built-in data sets for 20(see drivers/gpu/drm/drm_edid_load.c) contains built-in data sets for
21commonly used screen resolutions (1024x768, 1280x1024, 1600x1200, 21commonly used screen resolutions (800x600, 1024x768, 1280x1024, 1600x1200,
221680x1050, 1920x1080) as binary blobs, but the kernel source tree does 221680x1050, 1920x1080) as binary blobs, but the kernel source tree does
23not contain code to create these data. In order to elucidate the origin 23not contain code to create these data. In order to elucidate the origin
24of the built-in binary EDID blobs and to facilitate the creation of 24of the built-in binary EDID blobs and to facilitate the creation of
diff --git a/Documentation/EDID/edid.S b/Documentation/EDID/edid.S
index ea97ae275fca..7ac03276d7a2 100644
--- a/Documentation/EDID/edid.S
+++ b/Documentation/EDID/edid.S
@@ -33,6 +33,17 @@
33#define XY_RATIO_5_4 0b10 33#define XY_RATIO_5_4 0b10
34#define XY_RATIO_16_9 0b11 34#define XY_RATIO_16_9 0b11
35 35
36/* Provide defaults for the timing bits */
37#ifndef ESTABLISHED_TIMING1_BITS
38#define ESTABLISHED_TIMING1_BITS 0x00
39#endif
40#ifndef ESTABLISHED_TIMING2_BITS
41#define ESTABLISHED_TIMING2_BITS 0x00
42#endif
43#ifndef ESTABLISHED_TIMING3_BITS
44#define ESTABLISHED_TIMING3_BITS 0x00
45#endif
46
36#define mfgname2id(v1,v2,v3) \ 47#define mfgname2id(v1,v2,v3) \
37 ((((v1-'@')&0x1f)<<10)+(((v2-'@')&0x1f)<<5)+((v3-'@')&0x1f)) 48 ((((v1-'@')&0x1f)<<10)+(((v2-'@')&0x1f)<<5)+((v3-'@')&0x1f))
38#define swap16(v1) ((v1>>8)+((v1&0xff)<<8)) 49#define swap16(v1) ((v1>>8)+((v1&0xff)<<8))
@@ -139,7 +150,7 @@ white_x_y_msb: .byte 0x50,0x54
139 Bit 2 640x480 @ 75 Hz 150 Bit 2 640x480 @ 75 Hz
140 Bit 1 800x600 @ 56 Hz 151 Bit 1 800x600 @ 56 Hz
141 Bit 0 800x600 @ 60 Hz */ 152 Bit 0 800x600 @ 60 Hz */
142estbl_timing1: .byte 0x00 153estbl_timing1: .byte ESTABLISHED_TIMING1_BITS
143 154
144/* Bit 7 800x600 @ 72 Hz 155/* Bit 7 800x600 @ 72 Hz
145 Bit 6 800x600 @ 75 Hz 156 Bit 6 800x600 @ 75 Hz
@@ -149,11 +160,11 @@ estbl_timing1: .byte 0x00
149 Bit 2 1024x768 @ 72 Hz 160 Bit 2 1024x768 @ 72 Hz
150 Bit 1 1024x768 @ 75 Hz 161 Bit 1 1024x768 @ 75 Hz
151 Bit 0 1280x1024 @ 75 Hz */ 162 Bit 0 1280x1024 @ 75 Hz */
152estbl_timing2: .byte ESTABLISHED_TIMINGS_BITS 163estbl_timing2: .byte ESTABLISHED_TIMING2_BITS
153 164
154/* Bit 7 1152x870 @ 75 Hz (Apple Macintosh II) 165/* Bit 7 1152x870 @ 75 Hz (Apple Macintosh II)
155 Bits 6-0 Other manufacturer-specific display mod */ 166 Bits 6-0 Other manufacturer-specific display mod */
156estbl_timing3: .byte 0x00 167estbl_timing3: .byte ESTABLISHED_TIMING3_BITS
157 168
158/* Standard timing */ 169/* Standard timing */
159/* X resolution, less 31, divided by 8 (256-2288 pixels) */ 170/* X resolution, less 31, divided by 8 (256-2288 pixels) */