Enhancing EDID quirk functionality
ajax at redhat.com
Thu May 3 12:42:32 PDT 2012
On 5/3/12 2:01 PM, Ian Pilcher wrote:
> The patch does the following:
This looks good, thank you for taking it on.
> * Changes the vendor field of struct edid_quirk to an array, rather
> than a pointer. (This has already been sent to the dri-devel list.)
> * Adds two new quirks EDID_QUIRK_DISABLE_INFOFRAMES and
> EDID_QUIRK_NO_AUDIO. This first quirk causes drm_detect_hdmi_monitor
> to return false; the second causes drm_detect_monitor_audio to
> return false.
> * Logs the EDID vendor and model of connected monitors.
> * Adds an edid_quirks parameter to the drm module, for user-defined
I'd like to see documentation for the bit values of the quirks as well.
And, ideally, this would also have some runtime API for manipulating the
quirk list, so that way you can test new quirks without needing a reboot
To close the loop all the way on that I'd also want to be able to scrape
the quirk list back out from that API, but that's not completely clean
right now. We're being a little cavalier with the quirk list as it
stands because we don't differentiate among phy layers, and I can easily
imagine a monitor that needs a quirk on DVI but where the same quirk on
the same monitors' VGA would break it. I don't think this has caused
problems yet, but.
> With this patch, my display works when I add
> drm.edid_quirks=GSM:0x563f:0x180 to my kernel command line. (0x80,
> EDID_QUIRK_DISABLE_INFOFRAMES, makes it work with the nouveau driver;
> 0x100, EDID_QUIRK_NO_AUDIO, makes it work with the i915 driver. I.e.,
> the i915 driver is sending audio InfoFrames even when
> drm_detect_hdmi_monitor returns false; bug?)
InfoFrames are not valid for non-HDMI sinks, so yes, I'd call that a bug.
Your original bug report is a little strange, particularly:
Where the EDID for DP-1 appears to be truncated: the "extension" field
(second byte from the end) is 1 as you'd expect for an HDMI monitor, but
there's no extension block. How big of a file do you get from
/sys/class/drm/*/edid for that port?
More information about the dri-devel