This quirk is meant for screens with EDID tables that misrepresent
certain modes as stereo which causes them to be incorrectly ignored.

Signed-off-by: Michał Szolc <[email protected]>
---
 drivers/gpu/drm/drm_edid.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
index df3c25bac761..774530b081d2 100644
--- a/drivers/gpu/drm/drm_edid.c
+++ b/drivers/gpu/drm/drm_edid.c
@@ -96,6 +96,8 @@ enum drm_edid_internal_quirk {
        EDID_QUIRK_NON_DESKTOP,
        /* Cap the DSC target bitrate to 15bpp */
        EDID_QUIRK_CAP_DSC_15BPP,
+       /* Ignore stereo flag of modes */
+       EDID_QUIRK_IGNORE_STEREO_FLAG,
 };
 
 #define MICROSOFT_IEEE_OUI     0xca125c
@@ -3538,7 +3540,8 @@ static struct drm_display_mode *drm_mode_detailed(struct 
drm_connector *connecto
        if (hactive < 64 || vactive < 64)
                return NULL;
 
-       if (pt->misc & DRM_EDID_PT_STEREO) {
+       if (pt->misc & DRM_EDID_PT_STEREO &&
+               !drm_edid_has_internal_quirk(connector, 
EDID_QUIRK_IGNORE_STEREO_FLAG)) {
                drm_dbg_kms(dev, "[CONNECTOR:%d:%s] Stereo mode not 
supported\n",
                            connector->base.id, connector->name);
                return NULL;
-- 
2.55.0

Reply via email to