ALSA: hda - jack poll once if jackpoll_interval==0
authorWang Xingchao <xingchao.wang@linux.intel.com>
Fri, 26 Jul 2013 03:34:45 +0000 (23:34 -0400)
committerTakashi Iwai <tiwai@suse.de>
Mon, 29 Jul 2013 12:19:10 +0000 (14:19 +0200)
With jackpoll_interval != 0, it's used to poll jack event periodically
in a delayed work. if it's 0, give the caller chance to probe jack status
but will not restart the delayed work.

In the next patch which enable WAKEEN feature, HDA controller was able to wake
up system when it's in D3, it's useful to detect Jack hotplug event and notify
userspace. By default the jackpoll_interval=0, this patch let jack poll once
without starting the delayed work.

Signed-off-by: Wang Xingchao <xingchao.wang@linux.intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/hda/hda_codec.c

index 8a005f0e5ca484c842e2fe5f684275abafbde248..fdbb09a9b9e53cc095ac41c0ac6b44d6bfcb871b 100644 (file)
@@ -1216,11 +1216,13 @@ static void hda_jackpoll_work(struct work_struct *work)
 {
        struct hda_codec *codec =
                container_of(work, struct hda_codec, jackpoll_work.work);
-       if (!codec->jackpoll_interval)
-               return;
 
        snd_hda_jack_set_dirty_all(codec);
        snd_hda_jack_poll_all(codec);
+
+       if (!codec->jackpoll_interval)
+               return;
+
        queue_delayed_work(codec->bus->workq, &codec->jackpoll_work,
                           codec->jackpoll_interval);
 }