Docs/EDID: Fixed erroneous bits of XOFFSET, XPULSE, YOFFSET and YPULSE
authorChristoph Niedermaier <cniedermaier@dh-electronics.de>
Mon, 5 Nov 2018 08:48:34 +0000 (09:48 +0100)
committerJonathan Corbet <corbet@lwn.net>
Tue, 6 Nov 2018 14:36:18 +0000 (07:36 -0700)
The problem was found when EDID data sets for displays other
than the provided samples were generated. The patch has
no effect on the provided samples that still match the data
used in drivers/gpu/drm/drm_edid_load.c.

The provided samples use small values for XOFFSET, XPULSE,
YOFFSET and YPULSE, where the error doesn't occur. This fix
corrects the use of that values in case of high values, because
the most significant bits were treated incorrectly.

So in edid.S msbs4 should use bit 8 and 9 of XOFFSET and XPULS.
For YOFFSET and YPULSE msbs4 should use bit 4 and 5.

lsbs2 was introduced for a better overview, without
functional change.

Removing also the useless value 63 of all files, because
it is added in the *.S description files and then it is
subtracted in edid.S.

Signed-off-by: Christoph Niedermaier <cniedermaier@dh-electronics.de>
Reviewed-by: Carsten Emde <C.Emde@osadl.org>
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
Documentation/EDID/1024x768.S
Documentation/EDID/1280x1024.S
Documentation/EDID/1600x1200.S
Documentation/EDID/1680x1050.S
Documentation/EDID/1920x1080.S
Documentation/EDID/800x600.S
Documentation/EDID/HOWTO.txt
Documentation/EDID/edid.S

index 6f3e4b75e49ea639cc45d65d5dbdb9daac9e790f..ff4013e5fa49407db46d4b7cb8b455355ae6c548 100644 (file)
@@ -31,8 +31,8 @@
 #define YBLANK 38
 #define XOFFSET 8
 #define XPULSE 144
-#define YOFFSET (63+3)
-#define YPULSE (63+6)
+#define YOFFSET 3
+#define YPULSE 6
 #define DPI 72
 #define VFREQ 60 /* Hz */
 #define TIMING_NAME "Linux XGA"
index bd9bef2a65af7204bb8541fa195871ec5459e480..ce0e85be379ecf1b57e1b0571980be8b084e03d5 100644 (file)
@@ -31,8 +31,8 @@
 #define YBLANK 42
 #define XOFFSET 48
 #define XPULSE 112
-#define YOFFSET (63+1)
-#define YPULSE (63+3)
+#define YOFFSET 1
+#define YPULSE 3
 #define DPI 72
 #define VFREQ 60 /* Hz */
 #define TIMING_NAME "Linux SXGA"
index a45101c6160c5c418c5a038218d590193f95d6ca..5eeb751ebe1bcdd4b5f3a20dc3355332f4d66403 100644 (file)
@@ -31,8 +31,8 @@
 #define YBLANK 50
 #define XOFFSET 64
 #define XPULSE 192
-#define YOFFSET (63+1)
-#define YPULSE (63+3)
+#define YOFFSET 1
+#define YPULSE 3
 #define DPI 72
 #define VFREQ 60 /* Hz */
 #define TIMING_NAME "Linux UXGA"
index b0d7c69282b46433741ba922e48d42776ec582bd..ec679507e33b3000c739e6c6e246d92c6b71b78d 100644 (file)
@@ -31,8 +31,8 @@
 #define YBLANK 39
 #define XOFFSET 104
 #define XPULSE 176
-#define YOFFSET (63+3)
-#define YPULSE (63+6)
+#define YOFFSET 3
+#define YPULSE 6
 #define DPI 96
 #define VFREQ 60 /* Hz */
 #define TIMING_NAME "Linux WSXGA"
index 3084355e81e76103ce7f29e0ff12d26c7e097746..e0657af801ddf15fbff7126ef92855d6d6f54feb 100644 (file)
@@ -31,8 +31,8 @@
 #define YBLANK 45
 #define XOFFSET 88
 #define XPULSE 44
-#define YOFFSET (63+4)
-#define YPULSE (63+5)
+#define YOFFSET 4
+#define YPULSE 5
 #define DPI 96
 #define VFREQ 60 /* Hz */
 #define TIMING_NAME "Linux FHD"
index 6644e26d58015c38a864222c839cfe8369da8c63..b6853b2db869fd9c3c931d3296d65b5042a968c6 100644 (file)
@@ -28,8 +28,8 @@
 #define YBLANK 28
 #define XOFFSET 40
 #define XPULSE 128
-#define YOFFSET (63+1)
-#define YPULSE (63+4)
+#define YOFFSET 1
+#define YPULSE 4
 #define DPI 72
 #define VFREQ 60 /* Hz */
 #define TIMING_NAME "Linux SVGA"
index 835db332289b35aa0d126dc7065572dfd82e801e..7d05a7d30a79746f3730f876ea78057a96f538fa 100644 (file)
@@ -45,8 +45,8 @@ EDID:
 
 #define YPIX vdisp
 #define YBLANK vtotal-vdisp
-#define YOFFSET (63+(vsyncstart-vdisp))
-#define YPULSE (63+(vsyncend-vsyncstart))
+#define YOFFSET vsyncstart-vdisp
+#define YPULSE vsyncend-vsyncstart
 
 The CRC value in the last line
   #define CRC 0x55
index ef082dcc6084d77df02aae964b157c016f6f1d7b..c3d13815526dbd64b1b6b2d54c9afd31974b7c8a 100644 (file)
 #define mfgname2id(v1,v2,v3) \
        ((((v1-'@')&0x1f)<<10)+(((v2-'@')&0x1f)<<5)+((v3-'@')&0x1f))
 #define swap16(v1) ((v1>>8)+((v1&0xff)<<8))
+#define lsbs2(v1,v2) (((v1&0x0f)<<4)+(v2&0x0f))
 #define msbs2(v1,v2) ((((v1>>8)&0x0f)<<4)+((v2>>8)&0x0f))
 #define msbs4(v1,v2,v3,v4) \
-       (((v1&0x03)>>2)+((v2&0x03)>>4)+((v3&0x03)>>6)+((v4&0x03)>>8))
+       ((((v1>>8)&0x03)<<6)+(((v2>>8)&0x03)<<4)+\
+       (((v3>>4)&0x03)<<2)+((v4>>4)&0x03))
 #define pixdpi2mm(pix,dpi) ((pix*25)/dpi)
 #define xsize pixdpi2mm(XPIX,DPI)
 #define ysize pixdpi2mm(YPIX,DPI)
@@ -200,9 +202,9 @@ y_msbs:             .byte   msbs2(YPIX,YBLANK)
 x_snc_off_lsb: .byte   XOFFSET&0xff
 /* Horizontal sync pulse width pixels 8 lsbits (0-1023) */
 x_snc_pls_lsb: .byte   XPULSE&0xff
-/* Bits 7-4    Vertical sync offset lines 4 lsbits -63)
-   Bits 3-0    Vertical sync pulse width lines 4 lsbits -63) */
-y_snc_lsb:     .byte   ((YOFFSET-63)<<4)+(YPULSE-63)
+/* Bits 7-4    Vertical sync offset lines 4 lsbits (0-63)
+   Bits 3-0    Vertical sync pulse width lines 4 lsbits (0-63) */
+y_snc_lsb:     .byte   lsbs2(YOFFSET, YPULSE)
 /* Bits 7-6    Horizontal sync offset pixels 2 msbits
    Bits 5-4    Horizontal sync pulse width pixels 2 msbits
    Bits 3-2    Vertical sync offset lines 2 msbits