video: Fix EDID macros H_SYNC_WIDTH and H_SYNC_OFFSET
authorMartin Decky <martin@decky.cz>
Sun, 13 Feb 2011 19:28:40 +0000 (19:28 +0000)
committerPaul Mundt <lethal@linux-sh.org>
Tue, 22 Mar 2011 07:45:03 +0000 (16:45 +0900)
commitdfc906daeec03b3f2d306ae260d398d97ba232c5
tree040bf43704f0d1b13e2164023a681a50c43b83e0
parentd6244bc0ed0c52a795e6f4dcab3886daf3e74fac
video: Fix EDID macros H_SYNC_WIDTH and H_SYNC_OFFSET

The macros for getting the values for horizontal sync width and offset
do not respect the EDID specification. Both these values are 10 bit
values according to [1], not 6 bit values. The lower 8 bits are stored
in byte 8 and byte 9 of the DTD respectively, while two additional bits
for each value are stored in byte 11. The original macros just slammed
the bits together.

Although the original macros usually worked fine because the higher two
bits are rarely used, it can cause severe problems on plasma panels
running at 1920x1080 @ 50 Hz with drivers that rely on the correct
parsing of the EDID data by fbmon.c (e.g. udlfb).

The patch should apply cleanly to both the fbdev-2.6.git branch and
linux-next.git branch.

[1] VESA Enhanced Extended Display Identification Data Standard,
     Release A, Revision 2, page 34, notes 7 & 8, VESA, Sep 2006

Signed-off-by: Martin Decky <martin@decky.cz>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
drivers/video/edid.h