I just attached this patch to https://bugzilla.redhat.com/show_bug.cgi?id=806091, along with the following comments:
This is the "first draft" of an EDID quirk-based approach to solving this problem. I intend to perform a bit of cleanup and break it up into a series of separate patches, but I'm posting it here for any comments about the approach.
The patch does the following:
* 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 quirks.
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?)
Thoughts?