ALSA: hda - Fix superfluous HDMI jack repoll
authorTakashi Iwai <tiwai@suse.de>
Thu, 10 Dec 2015 13:35:09 +0000 (14:35 +0100)
committerTakashi Iwai <tiwai@suse.de>
Thu, 10 Dec 2015 13:35:09 +0000 (14:35 +0100)
The recent commit [e90247f9fcee: ALSA: hda - Split ELD update code
from hdmi_present_sense()] rewrote the HDMI jack handling code, but a
slight behavior change sneaked in unexpectedly.  When the jack isn't
connected, it tries repoll unnecessarily.

This patch addresses the flaw, to the right behavior as before.

Fixes: e90247f9fcee ('ALSA: hda - Split ELD update code from hdmi_present_sense()')
Reported-and-tested-by: David Henningsson <david.henningsson@canonical.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/hda/patch_hdmi.c

index 35a78a6f87a67dd0ed9b7cdcc1d29f54e2eb8241..2a7d29a07f317537576abc4f49e4c380604de90a 100644 (file)
@@ -1605,6 +1605,7 @@ static bool hdmi_present_sense(struct hdmi_spec_per_pin *per_pin, int repoll)
         */
        int present;
        bool ret;
+       bool do_repoll = false;
 
        snd_hda_power_up_pm(codec);
        present = snd_hda_pin_sense(codec, pin_nid);
@@ -1629,9 +1630,11 @@ static bool hdmi_present_sense(struct hdmi_spec_per_pin *per_pin, int repoll)
                                                    eld->eld_size) < 0)
                                eld->eld_valid = false;
                }
+               if (!eld->eld_valid && repoll)
+                       do_repoll = true;
        }
 
-       if (!eld->eld_valid && repoll)
+       if (do_repoll)
                schedule_delayed_work(&per_pin->work, msecs_to_jiffies(300));
        else
                update_eld(codec, per_pin, eld);