Am 2016-02-22 um 15:12 schrieb Takashi Iwai:
On Mon, 22 Feb 2016 15:02:56 +0100, Martin Kepplinger wrote:
And how about my questions in the previous mail? Does i915_audio_component_get_eld() is called and returns 0? And is monitor_present set true or false?
i915_audio_component_get_eld() returns 0 and monitor_present is 0.
If i915_audio_component_get_eld() is called but returns zero, track the code flow there. It means either intel_encoder is NULL or intel_dig_port->audio_connector is NULL.
intel_dig_port->audio_connector is NULL!
(when called during boot and during HDMI plugin)
Interesting. The relevant code flow should be like:
intel_audio_codec_enable() -> acomp->audio_ops->pin_eld_notify() -> intel_pin_eld_notify() -> check_presence_and_report() -> hdmi_present_sense() -> sync_eld_via_acomp() -> snd_hdac_acomp_get_eld() -> i915_audio_component_get_eld()
So, at first, check whether intel_dig_port in both intel_audio_codec_enable() and i915_audio_component_get_eld() points to the same object address. The audio_connector must be set in intel_audio_codec_enable(), thus basically it must be non-NULL at i915_audio_component_get_eld(), too.
intel_dig_port is *not* the same object in these 2 places. During plugin, see:
[ 146.934091] in intel_audio_codec_enable: intel_dig_port is ffff8800a1f54000 [ 146.934121] in i915_audio_component_get_eld: intel_dig_port is ffff880244f7d000
sorry for the slow responses. I'll try to go back that direction unless again someone comes up with other suggestions.
martin