[PATCH] drm: EDID quirk improvements
Paul Menzel
paulepanter at users.sourceforge.net
Sat Aug 11 12:37:02 PDT 2012
Dear Ian,
Am Freitag, den 10.08.2012, 13:44 -0500 schrieb Ian Pilcher:
[…]
> diff --git a/Documentation/EDID/edid_quirks.txt b/Documentation/EDID/edid_quirks.txt
> new file mode 100644
> index 0000000..256ded0
> --- /dev/null
> +++ b/Documentation/EDID/edid_quirks.txt
[…]
> +Overview
> +========
> +
> +EDID quirks provide a mechanism for working around display hardware with buggy
> +EDID data.
> +
> +An individual EDID quirk maps a display type (identified by its EDID
> +manufacturer ID and product code[1]) to a set of flags. For example, the current
> +list of quirks built into the kernel is:
> +
> + ACR:0xad46:0x00000001
> + API:0x7602:0x00000001
> + ACR:0x0977:0x00000020
> + MAX:0x05ec:0x00000001
> + MAX:0x077e:0x00000001
> + EPI:0xe780:0x00000002
> + EPI:0x2028:0x00000001
> + FCM:0x3520:0x0000000c
> + LPL:0x0000:0x00000010
> + LPL:0x2a00:0x00000010
> + PHL:0xe014:0x00000020
> + PTS:0x02fd:0x00000020
> + SAM:0x021d:0x00000040
> + SAM:0x0254:0x00000001
> + SAM:0x027e:0x00000001
> + VSC:0x139c:0x00000080
> + GSM:0x563f:0x00000300
reading the document again, I guess keeping this list up to date will be
forgotten and duplicating this information is not necessary. Maybe just
add one or two example quirks.
I cannot think of a `grep` command to run to list all quirks, so maybe
just mention that all the quirks are stored in `edid_quirk_list[]` in
`drivers/gpu/drm/drm_edid.c` [1].
> +
> +The first field of each quirk is the manufacturer ID, the second field is the
> +product code, and the third field is the quirk flags.
> +
> +NOTE: All of the manufacturer IDs above are displayed as 3-character strings,
> + because they are conformant IDs that have been properly encoded:
> +
> + - The most-significant bit of the encoded ID is 0
> + - They only contain ASCII characters in the range A-Z
> +
> + IDs that do not conform to these rules are displayed as "raw" hexadecimal
> + values.
> +
> +The current quirk flags are:
> +
> + /* First detailed mode wrong, use largest 60Hz mode */
> + #define EDID_QUIRK_PREFER_LARGE_60 0x00000001
> +
> + /* Reported 135MHz pixel clock is too high, needs adjustment */
> + #define EDID_QUIRK_135_CLOCK_TOO_HIGH 0x00000002
> +
> + /* Prefer the largest mode at 75 Hz */
> + #define EDID_QUIRK_PREFER_LARGE_75 0x00000004
> +
> + /* Detail timing is in cm not mm */
> + #define EDID_QUIRK_DETAILED_IN_CM 0x00000008
> +
> + /* Detailed timing descriptors have bogus size values, so just take the
> + * maximum size and use that.
> + */
> + #define EDID_QUIRK_DETAILED_USE_MAXIMUM_SIZE 0x00000010
> +
> + /* Monitor forgot to set the first detailed is preferred bit. */
> + #define EDID_QUIRK_FIRST_DETAILED_PREFERRED 0x00000020
> +
> + /* use +hsync +vsync for detailed mode */
> + #define EDID_QUIRK_DETAILED_SYNC_PP 0x00000040
> +
> + /* Force reduced-blanking timings for detailed modes */
> + #define EDID_QUIRK_FORCE_REDUCED_BLANKING 0x00000080
> +
> + /* Display is confused by InfoFrames; don't sent any */
> + #define EDID_QUIRK_DISABLE_INFOFRAMES 0x00000100
> +
> + /* Display doesn't have any audio output */
> + #define EDID_QUIRK_NO_AUDIO 0x00000200
That might be also hard to keep up to date. Maybe also just note that
these quirks are defined in the beginning of
`drivers/gpu/drm/drm_edid.c` [1] and that these are bit shifts(?) [2].
[1] http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob;f=drivers/gpu/drm/drm_edid.c;h=a8743c399e83234c976ebdb4b471542a0645c42d;hb=HEAD
[2] https://en.wikipedia.org/wiki/Bitwise_operation#Shifts_in_C.2C_C.2B.2B.2C_C.23
[…]
Thanks,
Paul
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part
URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20120811/0f054575/attachment.pgp>
More information about the dri-devel
mailing list