#ifndef __BACKPORT_SOUND_PCM_H
#define __BACKPORT_SOUND_PCM_H
#include_next <sound/pcm.h>
#include <linux/version.h>

#if LINUX_VERSION_IS_LESS(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_IS_LESS(3,19,0) */

#endif /* __BACKPORT_SOUND_PCM_H */
