]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
drm/edid: set ELD for firmware and debugfs override EDIDs
authorJani Nikula <jani.nikula@intel.com>
Thu, 26 Mar 2015 08:42:00 +0000 (10:42 +0200)
committerSasha Levin <sasha.levin@oracle.com>
Thu, 23 Apr 2015 18:58:19 +0000 (14:58 -0400)
[ Upstream commit ad692b46dbf122ef90aadce3b389ef64c90e861d ]

If the user supplies EDID through firmware or debugfs override, the
driver callbacks are bypassed and the connector ELD does not get
updated, and audio fails. Set ELD for firmware and debugfs EDIDs too.

There should be no harm in gratuitously doing this for non HDMI/DP
connectors, as it's still up to the driver to use the ELD, if any.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=82349
Reference: https://bugs.freedesktop.org/show_bug.cgi?id=80691
Reported-by: Emil <emilsvennesson@gmail.com>
Reported-by: Rob Engle <grenoble@gmail.com>
Tested-by: Jolan Luff <jolan@gormsby.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: stable@vger.kernel.org
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
drivers/gpu/drm/drm_edid_load.c
drivers/gpu/drm/drm_probe_helper.c

index 0a235fe61c9b9bfd929a1f4a71461bc6ad2bd3d7..144a0368ccd085bed6c1f50ab83f8c87d2a51fd0 100644 (file)
@@ -288,6 +288,7 @@ int drm_load_edid_firmware(struct drm_connector *connector)
 
        drm_mode_connector_update_edid_property(connector, edid);
        ret = drm_add_edid_modes(connector, edid);
+       drm_edid_to_eld(connector, edid);
        kfree(edid);
 
        return ret;
index 6857e9ad6339c7a8ab94aea908be59323985df44..5edc61f2f2125ecdece34a60022e153148c75a60 100644 (file)
@@ -151,6 +151,7 @@ static int drm_helper_probe_single_connector_modes_merge_bits(struct drm_connect
                        struct edid *edid = (struct edid *) connector->edid_blob_ptr->data;
 
                        count = drm_add_edid_modes(connector, edid);
+                       drm_edid_to_eld(connector, edid);
                } else
                        count = (*connector_funcs->get_modes)(connector);
        }