#include <linux/module.h>
 #include <linux/platform_device.h>
 #include <drm/bridge/dw_hdmi.h>
+#include <drm/drm_edid.h>
 
 #include <sound/asoundef.h>
 #include <sound/core.h>
 #include <sound/initval.h>
 #include <sound/pcm.h>
+#include <sound/pcm_drm_eld.h>
 #include <sound/pcm_iec958.h>
 
 #include "dw_hdmi-audio.h"
 
        runtime->hw = dw_hdmi_hw;
 
+       ret = snd_pcm_hw_constraint_eld(runtime, dw->data.eld);
+       if (ret < 0)
+               return ret;
+
        ret = snd_pcm_limit_hw_rates(runtime);
        if (ret < 0)
                return ret;
 
                hdmi->sink_has_audio = drm_detect_monitor_audio(edid);
                drm_mode_connector_update_edid_property(connector, edid);
                ret = drm_add_edid_modes(connector, edid);
+               /* Store the ELD */
+               drm_edid_to_eld(connector, edid);
                kfree(edid);
        } else {
                dev_dbg(hdmi->dev, "failed to get edid\n");
                audio.base = hdmi->regs;
                audio.irq = irq;
                audio.hdmi = hdmi;
+               audio.eld = hdmi->connector.eld;
 
                pdevinfo.name = "dw-hdmi-ahb-audio";
                pdevinfo.data = &audio;