Am 2016-02-12 um 14:49 schrieb Takashi Iwai:
On Fri, 12 Feb 2016 14:09:36 +0100, Martin Kepplinger wrote:
Am 2016-02-11 um 10:06 schrieb Takashi Iwai:
On Wed, 10 Feb 2016 18:21:11 +0100, Martin Kepplinger wrote:
Am 2016-02-09 um 12:44 schrieb Takashi Iwai:
On Tue, 09 Feb 2016 07:34:48 +0100, Martin Kepplinger wrote:
The following change:
788d441 ALSA: hda - Use component ops for i915 HDMI/DP audio jack handling
breaks audio over HDMI on my snd_hda_intel laptop. It is the first bad commit.
This was merged for -rc1 and isn't fixed until now, so I got nervous. There are no errors in the log that stand out. I'm no sound or alsa developer, and just reverting it isn't easy since there is stuff depending on this.
I'm happy to test possible fixes and hope v4.5 not to ship with such a big regression ;)
Could you give a bit more detail about your hardware? At best, give alsa-info.sh output (run with --no-upload option). Also, give the output of dmesg, too.
In addition, what shows /proc/asound/card*/eld#*.* files? Does any of it show the proper connection state and ELD?
alsa-info and dmesg are appended, and
root@laptop:/home/martin/dev# cat /proc/asound/card*/eld#* monitor_present 0 eld_valid 0
OK, then could you put some debug print in intel_pin_eld_notify() in sound/pci/hda/patch_hdmi.c? This is the callback to be called by i915 driver at enabling / disabling HDMI/DP audio.
intel_pin_eld_notify() is called during HDMI plugin with
audio_ptr: ffff880242ea8800, port 1
and doesn't return early.
OK, so it was processed but the ELD wasn't updated by some reason.
(Also, to be sure, check whether snd_hdac_i915_register_notifier() in sound/hda/hda_i915.c is called, too.)
snd_hdac_i915_register_notifier() is called during boot.
If intel_pin_eld_notify() is registered but never called, it implies something wrong in i915 driver side. If it gets called, we need to track down: what port value was passed there, and how hdmi_present_sense() and sync_eld_via_acomp() behave there.
I'll try to look at said path, if you have no other idea in the meantime.
Put some debug prints in sync_eld_via_acomp(), e.g. check whether snd_hdac_acomp_get_eld() returns an error or snd_hdmi_parse_eld() returns an error. If you got an error, track down more deeply.
For example, the former function is defined in sound/hda/hdac_i915.c, and it calls the function i915_audio_component_get_eld() in drivers/gpu/drm/i915/intel_audio.c. You can follow what returns an error.
Similarly, the latter function is defined in sound/pci/hda/hda_eld.c. Usually you see a kernel message for parse errors, so I guess this isn't the case, though.
no error in either of the functions. size is always 0, after boot and after HDMI plugin. is that normal?
Takashi