Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c4a42915 authored by Jean-Francois Moine's avatar Jean-Francois Moine Committed by Mark Brown
Browse files

ASoC: kirkwood: prevent double streaming



The kirkwood audio subsystem presents 2 PCM's for one source.
Streaming on a second PCM while the first one is active
cuts this last one.
Then, ending the last stream gives a kernel trap in free_irq().

Signed-off-by: default avatarJean-Francois Moine <moinejf@free.fr>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent bc0195aa
Loading
Loading
Loading
Loading
+4 −0
Original line number Original line Diff line number Diff line
@@ -148,10 +148,14 @@ static int kirkwood_dma_open(struct snd_pcm_substream *substream)
	dram = mv_mbus_dram_info();
	dram = mv_mbus_dram_info();
	addr = substream->dma_buffer.addr;
	addr = substream->dma_buffer.addr;
	if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
	if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
		if (priv->substream_play)
			return -EBUSY;
		priv->substream_play = substream;
		priv->substream_play = substream;
		kirkwood_dma_conf_mbus_windows(priv->io,
		kirkwood_dma_conf_mbus_windows(priv->io,
			KIRKWOOD_PLAYBACK_WIN, addr, dram);
			KIRKWOOD_PLAYBACK_WIN, addr, dram);
	} else {
	} else {
		if (priv->substream_rec)
			return -EBUSY;
		priv->substream_rec = substream;
		priv->substream_rec = substream;
		kirkwood_dma_conf_mbus_windows(priv->io,
		kirkwood_dma_conf_mbus_windows(priv->io,
			KIRKWOOD_RECORD_WIN, addr, dram);
			KIRKWOOD_RECORD_WIN, addr, dram);