diff options
Diffstat (limited to 'sound')
-rw-r--r-- | sound/soc/imx/imx-pcm-dma-mx2.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/sound/soc/imx/imx-pcm-dma-mx2.c b/sound/soc/imx/imx-pcm-dma-mx2.c index 1cf2fe889f6a..7d7fbb5d2a91 100644 --- a/sound/soc/imx/imx-pcm-dma-mx2.c +++ b/sound/soc/imx/imx-pcm-dma-mx2.c | |||
@@ -88,11 +88,13 @@ static int imx_ssi_dma_alloc(struct snd_pcm_substream *substream, | |||
88 | iprtd->dma_data.dma_request = dma_params->dma; | 88 | iprtd->dma_data.dma_request = dma_params->dma; |
89 | 89 | ||
90 | /* Try to grab a DMA channel */ | 90 | /* Try to grab a DMA channel */ |
91 | dma_cap_zero(mask); | 91 | if (!iprtd->dma_chan) { |
92 | dma_cap_set(DMA_SLAVE, mask); | 92 | dma_cap_zero(mask); |
93 | iprtd->dma_chan = dma_request_channel(mask, filter, iprtd); | 93 | dma_cap_set(DMA_SLAVE, mask); |
94 | if (!iprtd->dma_chan) | 94 | iprtd->dma_chan = dma_request_channel(mask, filter, iprtd); |
95 | return -EINVAL; | 95 | if (!iprtd->dma_chan) |
96 | return -EINVAL; | ||
97 | } | ||
96 | 98 | ||
97 | switch (params_format(params)) { | 99 | switch (params_format(params)) { |
98 | case SNDRV_PCM_FORMAT_S16_LE: | 100 | case SNDRV_PCM_FORMAT_S16_LE: |