At Thu, 6 Sep 2012 09:09:00 +0200, Pierre Ossman wrote:
On Thu, 06 Sep 2012 07:59:52 +0200 Takashi Iwai tiwai@suse.de wrote:
At Wed, 5 Sep 2012 19:22:39 +0200, Pierre Ossman wrote:
Some follow up questions, to confirm I haven't confused things:
- The ELD really needs to go into the hardware, not just end up in the hands of the audio driver? IOW, we cannot override this?
Usually ELD won't go to the hardware as is but translated in a different way in the graphics side.
- The HDA interface only defines reading the ELD, so writing it would have to be done by the graphics driver using some GPU interface?
Yes.
If so, I need to poke the AMD guys as I couldn't find any information in the public documentation about writing the ELD.
It's not about "writing" ELD. If you got no valid ELD, it is the graphics driver who didn't send it. The graphics hardware certainly sends some audio information, and the graphics driver translates into an ELD and notifies to the audio codec. This part is missing or wrongly done, supposedly.
I've studied the Intel driver to get some feel for it, and it seems to work like this:
The graphics driver gets the EDID data from the GPU.
The kernel constructs the ELD structure from the EDID.
The graphics driver writes the ELD to some GPU registers.
The audio driver reads the ELD via the HDA interface.
But if you're saying that the hardware doesn't really need the ELD, then steps 3-4 could be replaced by a pure software channel.
No, what I meant is about the audio codec perspective. From the audio codec, it has no direct hardware access to GPU that actually handles the ELD register things. It always communicate via HD-audio verbs to send/receive DIP bytes so the actual work is purely in the graphics driver side.
This would be convenient as it is currently unknown how to do 3) on radeon.
(2 is currently missing in the radeon driver, but it is trivial to add AFAICT)
Yeah, that's the big missing piece.
Takashi