[Intel-gfx] [PATCH v5] drm/i915: pass ELD to HDMI/DP audio driver

Christopher White c.white at pulseforce.com
Wed Nov 9 10:30:18 CET 2011


Couldn't resist connecting to my machine over VNC even though I'm not home.

So, I booted it with the new patch and see that while you HAVE found the 
bug, the new register addresses still seem to be wrong. Instead of the 
audio registers containing their default, pre-filled, standard 2-speaker 
configuration, it's now being overwritten - which is good. With garbage 
- which is bad. ;-) One possible cause is that the SandyBridge addresses 
shouldn't use the same register addresses as IvyBridge after all. This 
will have to be double checked.

Instead of /proc/asound/card0/eld#3.0 containing the default 2-speaker 
configuration, it now contains:
monitor_present        1
eld_valid        1
monitor_name
connection_type        HDMI
eld_version        [0x0] reserved
edid_version        [0x0] no CEA EDID Timing Extension block present
manufacture_id        0x0
product_id        0x0
port_id            0x0
support_hdcp        0
support_ai        0
audio_sync_delay    0
speakers        [0x0]
sad_count        0

You can see that the data is obviously zeroed out, and I bet it's due to 
a misaligned address.

Booting with drm.debug=6 produced the attached log file which I've 
included for completeness. However, there's nothing strange in it.


Christopher

On 11/9/11 10:00 AM, Christopher White wrote:
> Good day, Fengguang! Great work! This sounds very promising!
>
> I went through the ELD parsing code myself (drm_edid_to_eld), as my 
> programmer mind's curiosity killed me even though I didn't really have 
> time for it, and I could see that it grabs the CEA extension block, 
> grabs the monitor name string, then goes through each data block 
> collection, copying all short descriptor data for each of the block 
> types we're interested in. Good and clean code.
>
> So, I came to the same conclusion - that the parsing code was 
> completely correct. I'm therefore very happy to hear that you've found 
> the real problem; trying to write the ELD structure to the wrong audio 
> registers on SandyBridge. Yep, that HAS to be it!
>
> I've applied the patch and the kernel is currently being re-built, but 
> I've got to leave home so I won't report back until later today.
>
> However, I am confident that you've found the true cause of the 
> problem. Superb work once again!
>
> You're going to make a lot of Home Theater PC owners very happy.
>
>
> Christopher White
>
> On 11/9/11 7:59 AM, Wu Fengguang wrote:
>> Hi Christopher,
>>
>> I don't find anything wrong with the ELD parsing code, however I do
>> find a bug that prevented ELD from being passed to the audio driver on
>> SandyBridge.
>>
>> I just posted the fix. For your convenience, it's attached in this
>> email too.
>>
>> Thanks,
>> Fengguang
>>
>> On Fri, Oct 28, 2011 at 03:57:23AM +0800, Christopher White wrote:
>>> There appears to be some issues with the patch? I'm on SandyBridge and
>>> using the HD3000's HDMI.
>>>
>>> I've now tried manually merging the ELD patch (both files Wu Fengguang
>>> submitted) and compiling Kernel 3.0.4. I've also tried drm-intel-next
>>> Kernel 3.1 pre-built from
>>> http://kernel.ubuntu.com/~kernel-ppa/mainline/drm-intel-next/current/  as
>>> I knew it was built from keithp's latest drm-intel-next repository.
>>>
>>> Both of these methods had the patch applied, yet neither were able to
>>> read the ELD correctly from my Onkyo TX-SR607 receiver.
>>>
>>> If I manually dump the EDID from my receiver and analyze it with Monitor
>>> Asset Manager (by EnTech Taiwan), it shows that the ELD contains an 8
>>> channel specification up to 192 kHz, and that's what's being exposed
>>> over HDMI to the Intel graphics adapter, yet this isn't detected. It
>>> just plain isn't being read, and is falling back to the default 2ch
>>> 16kHz configuration. It's exactly as it was in the past, before this
>>> patch attempt.
>>>
>>> You can see my 256 byte EDID dump, straight from the receiver, over at:
>>> http://www.pulseforce.com/node/edid.dump
>>>
>>> It shows exactly what the receiver is exposing over HDMI, proving that
>>> it's not the device that's at fault.
>>>
>>> Any ideas what's wrong? Here's the HDMI messages from the startup log:
>>>
>>> HDMI status: Pin=7 Presence_Detect=1 ELD_Valid=1
>>> HDMI: detected monitor  at connection type HDMI
>>> HDMI: available speakers: FL/FR
>>> HDMI: supports coding type LPCM: channels = 2, rates = 44100 48000
>>> 88200, bits = 16
>>> HDMI hot plug event: Pin=7 Presence_Detect=1 ELD_Valid=1
>>> HDMI status: Pin=7 Presence_Detect=1 ELD_Valid=1
>>> input: HDA Intel PCH HDMI/DP as
>>> /devices/pci0000:00/0000:00:1b.0/sound/card0/input9
>>> HDMI: detected monitor  at connection type HDMI
>>> HDMI: available speakers: FL/FR
>>> HDMI: supports coding type LPCM: channels = 2, rates = 44100 48000
>>> 88200, bits = 16
>>> HDMI hot plug event: Pin=7 Presence_Detect=1 ELD_Valid=1
>>> HDMI status: Pin=7 Presence_Detect=1 ELD_Valid=1
>>> HDMI: detected monitor  at connection type HDMI
>>> HDMI: available speakers: FL/FR
>>> HDMI: supports coding type LPCM: channels = 2, rates = 44100 48000
>>> 88200, bits = 16
>>>
>>>
>>>
>>> Christopher White
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/intel-gfx/attachments/20111109/2af881f3/attachment.html>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: dmesg.log
URL: <http://lists.freedesktop.org/archives/intel-gfx/attachments/20111109/2af881f3/attachment.ksh>


More information about the Intel-gfx mailing list