headers: snd_pcm_stop_xrun()
authorHauke Mehrtens <hauke@hauke-m.de>
Sat, 15 Nov 2014 22:39:55 +0000 (23:39 +0100)
committerHauke Mehrtens <hauke@hauke-m.de>
Sun, 16 Nov 2014 15:57:09 +0000 (16:57 +0100)
This is used by the saa7134-alsa.c driver.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
backport/backport-include/sound/pcm.h [new file with mode: 0644]

diff --git a/backport/backport-include/sound/pcm.h b/backport/backport-include/sound/pcm.h
new file mode 100644 (file)
index 0000000..469e871
--- /dev/null
@@ -0,0 +1,29 @@
+#ifndef __BACKPORT_SOUND_PCM_H
+#define __BACKPORT_SOUND_PCM_H
+#include_next <sound/pcm.h>
+#include <linux/version.h>
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,19,0)
+/**
+ * snd_pcm_stop_xrun - stop the running streams as XRUN
+ * @substream: the PCM substream instance
+ *
+ * This stops the given running substream (and all linked substreams) as XRUN.
+ * Unlike snd_pcm_stop(), this function takes the substream lock by itself.
+ *
+ * Return: Zero if successful, or a negative error code.
+ */
+static inline int snd_pcm_stop_xrun(struct snd_pcm_substream *substream)
+{
+       unsigned long flags;
+       int ret = 0;
+
+       snd_pcm_stream_lock_irqsave(substream, flags);
+       if (snd_pcm_running(substream))
+               ret = snd_pcm_stop(substream, SNDRV_PCM_STATE_XRUN);
+       snd_pcm_stream_unlock_irqrestore(substream, flags);
+       return ret;
+}
+#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(3,19,0) */
+
+#endif /* __BACKPORT_SOUND_PCM_H */