Merge tag 'v3.9-rc7' into asoc-dma
[deliverable/linux.git] / sound / soc / spear / spear_pcm.c
index 9b76cc5a114897613ed3d19e87b13b649037c4be..d653763f83b736ff9f13c49a5cd079405fd94fb2 100644 (file)
@@ -64,21 +64,8 @@ static int spear_pcm_open(struct snd_pcm_substream *substream)
        if (ret)
                return ret;
 
-       ret = snd_dmaengine_pcm_open(substream, dma_data->filter, dma_data);
-       if (ret)
-               return ret;
-
-       snd_dmaengine_pcm_set_data(substream, dma_data);
-
-       return 0;
-}
-
-static int spear_pcm_close(struct snd_pcm_substream *substream)
-{
-
-       snd_dmaengine_pcm_close(substream);
-
-       return 0;
+       return snd_dmaengine_pcm_open_request_chan(substream, dma_data->filter,
+                               dma_data);
 }
 
 static int spear_pcm_mmap(struct snd_pcm_substream *substream,
@@ -93,7 +80,7 @@ static int spear_pcm_mmap(struct snd_pcm_substream *substream,
 
 static struct snd_pcm_ops spear_pcm_ops = {
        .open           = spear_pcm_open,
-       .close          = spear_pcm_close,
+       .close          = snd_dmaengine_pcm_close_release_chan,
        .ioctl          = snd_pcm_lib_ioctl,
        .hw_params      = spear_pcm_hw_params,
        .hw_free        = spear_pcm_hw_free,
@@ -149,9 +136,9 @@ static void spear_pcm_free(struct snd_pcm *pcm)
 
 static u64 spear_pcm_dmamask = DMA_BIT_MASK(32);
 
-static int spear_pcm_new(struct snd_card *card,
-               struct snd_soc_dai *dai, struct snd_pcm *pcm)
+static int spear_pcm_new(struct snd_soc_pcm_runtime *rtd)
 {
+       struct snd_card *card = rtd->card->snd_card;
        int ret;
 
        if (!card->dev->dma_mask)
@@ -159,16 +146,16 @@ static int spear_pcm_new(struct snd_card *card,
        if (!card->dev->coherent_dma_mask)
                card->dev->coherent_dma_mask = DMA_BIT_MASK(32);
 
-       if (dai->driver->playback.channels_min) {
-               ret = spear_pcm_preallocate_dma_buffer(pcm,
+       if (rtd->cpu_dai->driver->playback.channels_min) {
+               ret = spear_pcm_preallocate_dma_buffer(rtd->pcm,
                                SNDRV_PCM_STREAM_PLAYBACK,
                                spear_pcm_hardware.buffer_bytes_max);
                if (ret)
                        return ret;
        }
 
-       if (dai->driver->capture.channels_min) {
-               ret = spear_pcm_preallocate_dma_buffer(pcm,
+       if (rtd->cpu_dai->driver->capture.channels_min) {
+               ret = spear_pcm_preallocate_dma_buffer(rtd->pcm,
                                SNDRV_PCM_STREAM_CAPTURE,
                                spear_pcm_hardware.buffer_bytes_max);
                if (ret)
This page took 0.025593 seconds and 5 git commands to generate.