diff options
author | Daniel Thompson <daniel.thompson@linaro.org> | 2014-05-23 11:01:43 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2014-05-25 22:53:40 -0400 |
commit | 4cbe1bfa27dcc8e757c723f27e5a8e8b5fc32117 (patch) | |
tree | 5a31eb5614a8f5562031f4be00de30e59520e97c /Documentation/EDID | |
parent | 9a6594fc5241ad96cff727a134f336b1f1eaa0f7 (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.S | 2 | ||||
-rw-r--r-- | Documentation/EDID/1280x1024.S | 2 | ||||
-rw-r--r-- | Documentation/EDID/1600x1200.S | 2 | ||||
-rw-r--r-- | Documentation/EDID/1680x1050.S | 2 | ||||
-rw-r--r-- | Documentation/EDID/1920x1080.S | 2 | ||||
-rw-r--r-- | Documentation/EDID/800x600.S | 41 | ||||
-rw-r--r-- | Documentation/EDID/HOWTO.txt | 2 | ||||
-rw-r--r-- | Documentation/EDID/edid.S | 17 |
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 | |||
18 | individually prepared or corrected EDID data set in the /lib/firmware | 18 | individually prepared or corrected EDID data set in the /lib/firmware |
19 | directory from where it is loaded via the firmware interface. The code | 19 | directory 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 |
21 | commonly used screen resolutions (1024x768, 1280x1024, 1600x1200, | 21 | commonly used screen resolutions (800x600, 1024x768, 1280x1024, 1600x1200, |
22 | 1680x1050, 1920x1080) as binary blobs, but the kernel source tree does | 22 | 1680x1050, 1920x1080) as binary blobs, but the kernel source tree does |
23 | not contain code to create these data. In order to elucidate the origin | 23 | not contain code to create these data. In order to elucidate the origin |
24 | of the built-in binary EDID blobs and to facilitate the creation of | 24 | of 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 */ |
142 | estbl_timing1: .byte 0x00 | 153 | estbl_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 */ |
152 | estbl_timing2: .byte ESTABLISHED_TIMINGS_BITS | 163 | estbl_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 */ |
156 | estbl_timing3: .byte 0x00 | 167 | estbl_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) */ |