ALSA: hda - Fix missing ELD update at unplugging
authorTakashi Iwai <tiwai@suse.de>
Mon, 21 Mar 2016 15:07:30 +0000 (16:07 +0100)
committerTakashi Iwai <tiwai@suse.de>
Mon, 21 Mar 2016 15:25:07 +0000 (16:25 +0100)
i915 get_eld ops may return an error when no encoder is connected, and
currently we regard the error as fatal and skip the whole ELD
handling.  This ended up with the missing ELD update at unplugging.

This patch fixes the issue by treating the error as the unplugged
state, instead of skipping the rest.

Reported-by: Libin Yang <libin.yang@linux.intel.com>
Cc: <stable@vger.kernel.org> # v4.5
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/hda/patch_hdmi.c

index 7ae614d27954f83ed99711db6f31aaf174261ffb..5af372d018346751f1dc264b413218ff08adcd22 100644 (file)
@@ -1484,11 +1484,10 @@ static void sync_eld_via_acomp(struct hda_codec *codec,
        int size;
 
        mutex_lock(&per_pin->lock);
+       eld->monitor_present = false;
        size = snd_hdac_acomp_get_eld(&codec->bus->core, per_pin->pin_nid,
                                      &eld->monitor_present, eld->eld_buffer,
                                      ELD_MAX_SIZE);
-       if (size < 0)
-               goto unlock;
        if (size > 0) {
                size = min(size, ELD_MAX_SIZE);
                if (snd_hdmi_parse_eld(codec, &eld->info,