[Bug 101583] [KBL] intel NUC6CAYH no LSPCON HDMI audio output
bugzilla-daemon at freedesktop.org
bugzilla-daemon at freedesktop.org
Fri Sep 1 11:56:21 UTC 2017
https://bugs.freedesktop.org/show_bug.cgi?id=101583
--- Comment #28 from Joseph Nuzman <jnuzman at gmail.com> ---
Posting to this bug, as https://bugs.freedesktop.org/show_bug.cgi?id=101793 was
marked as duplicate.
I found some time to track down why ELD connector type was coming up as HDMI
rather than DP.
The ELD for a connector is set using the drm_edid_to_eld() routine (in i915,
reached by get_modes helper). This drm routine leaves the connector type field
of the ELD for the driver to set.
[ 2.172863] [drm:drm_edid_to_eld [drm]] ELD monitor SAMSUNG
Later, the intel_audio_codec_enable() routine sets the connector type field in
ELD correctly as DP. Note, however, that the enable routine is only called
once.
[ 2.429813] [drm:intel_audio_codec_enable [i915]] ELD on
[CONNECTOR:48:DP-1], [ENCODER:47:DDI B]
The audio driver will request a copy of the ELD. But before that happens, the
drm_edid_to_eld() routine is invoked again, overwriting the ELD and resetting
the connector type previously set.
[ 2.877015] [drm:drm_edid_to_eld [drm]] ELD monitor SAMSUNG
After this, the audio driver invokes a call back to get a copy of the ELD.
This is already missing the corrected connector type field.
[ 3.020995] [drm:i915_audio_component_get_eld [i915]] Not valid for port B
Both the drm_edid_to_eld() and i915_audio_component_get_eld() routines will be
called multiple times later, but the connector type field is never set again.
The attached patch sets the connector type field after each time the
intel_connector_update_modes() helper rewrites the ELD. With the patch
applied, connector type is detected correctly by the audio driver as DP, and
HDMI audio works on my SKL NUC.
$ cat /proc/asound/card0/eld#2.0
monitor_present 1
eld_valid 1
monitor_name SAMSUNG
connection_type DisplayPort
eld_version [0x2] CEA-861D or below
edid_version [0x3] CEA-861-B, C or D
manufacture_id 0x2d4c
product_id 0xa7a
port_id 0x0
support_hdcp 0
support_ai 1
audio_sync_delay 0
speakers [0x1] FL/FR
sad_count 1
sad0_coding_type [0x1] LPCM
sad0_channels 2
sad0_rates [0xe0] 32000 44100 48000
sad0_bits [0xe0000] 16 20 24
Note that the intel_audio_codec_enable() routine is also setting the audio
delay field in the ELD. It may be that this field should also be set by the
intel_connector_update_modes() routine. It seems that the audio driver only
uses this field to expose the audio_sync_delay in procfs.
--
You are receiving this mail because:
You are the QA Contact for the bug.
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/intel-gfx-bugs/attachments/20170901/a98113c3/attachment.html>
More information about the intel-gfx-bugs
mailing list