A simple approach would be adding a control element containing byte-array of ELD/EDID.
Are there any examples of such controls? Or are we talking about a new kind of control?
Look for SNDRV_CTL_ELEM_TYPE_BYTES. Some codecs provide these.
I started doing some work on this, adding a persistent 256-byte buffer to store the ELD data instead of dynamically allocating and freeing the buffer. I am kind of lost with the controls though, never looked at this part of ALSA before. In all the HDA code, all controls have an IFACE_MIXER type, while all the code that uses ELEM_TYPE_BYTES the type is IFACE_PCM. Does this matter at all? Likewise, there's a 'generic_hdmi_build_controls' routine in which I could add the ELD control, but it uses cvt structures. I think it would make more sense to relate ELD controls to pins, as done with the proc information. Quite a learning experience...