diff options
author | Peter Ujfalusi <peter.ujfalusi@ti.com> | 2016-05-09 13:39:14 +0300 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2016-05-09 18:24:31 +0300 |
commit | 19357366633cfc53532b587180af3655f0e453f3 (patch) | |
tree | 0c95e622a3b3d6b3f8ff5b9b1854bc7b772fbb9a /sound/soc/davinci/davinci-mcasp.c | |
parent | 5f9a50c3e55ee887b7a0ccb68045b92579972b55 (diff) | |
download | linux-19357366633cfc53532b587180af3655f0e453f3.tar.xz |
ASoC: davinci-mcasp: Do not allow multiple streams in one direction
Make sure that the user can not start multiple streams with the same
direction.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound/soc/davinci/davinci-mcasp.c')
-rw-r--r-- | sound/soc/davinci/davinci-mcasp.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/sound/soc/davinci/davinci-mcasp.c b/sound/soc/davinci/davinci-mcasp.c index e1324989bd6b..020d8660e4e5 100644 --- a/sound/soc/davinci/davinci-mcasp.c +++ b/sound/soc/davinci/davinci-mcasp.c @@ -1230,11 +1230,15 @@ static int davinci_mcasp_startup(struct snd_pcm_substream *substream, int i, dir; int tdm_slots = mcasp->tdm_slots; - if (mcasp->tdm_mask[substream->stream]) - tdm_slots = hweight32(mcasp->tdm_mask[substream->stream]); + /* Do not allow more then one stream per direction */ + if (mcasp->substreams[substream->stream]) + return -EBUSY; mcasp->substreams[substream->stream] = substream; + if (mcasp->tdm_mask[substream->stream]) + tdm_slots = hweight32(mcasp->tdm_mask[substream->stream]); + if (mcasp->op_mode == DAVINCI_MCASP_DIT_MODE) return 0; |