static int msm_pcm_new(struct snd_soc_pcm_runtime *rtd) { int ret; struct snd_card *card = rtd->card->snd_card; struct snd_pcm *pcm = rtd->pcm; if (!card->dev->coherent_dma_mask) card->dev->coherent_dma_mask = DMA_BIT_MASK(32); ret = snd_pcm_new_stream(pcm, SNDRV_PCM_STREAM_PLAYBACK, 1); if (ret) return ret; ret = snd_pcm_new_stream(pcm, SNDRV_PCM_STREAM_CAPTURE, 1); if (ret) return ret; snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &msm_pcm_ops); snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &msm_pcm_ops); ret = pcm_preallocate_dma_buffer(pcm, SNDRV_PCM_STREAM_PLAYBACK); if (ret) return ret; ret = pcm_preallocate_dma_buffer(pcm, SNDRV_PCM_STREAM_CAPTURE); if (ret) msm_pcm_free_dma_buffers(pcm); return ret; }
static int msm_pcm_new(struct snd_card *card, struct snd_soc_dai *codec_dai, struct snd_pcm *pcm) { int ret; if (!card->dev->coherent_dma_mask) card->dev->coherent_dma_mask = DMA_32BIT_MASK; ret = snd_pcm_new_stream(pcm, SNDRV_PCM_STREAM_PLAYBACK, 1); if (ret) return ret; ret = snd_pcm_new_stream(pcm, SNDRV_PCM_STREAM_CAPTURE, 1); if (ret) return ret; snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &msm_pcm_ops); snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &msm_pcm_ops); ret = pcm_preallocate_dma_buffer(pcm, SNDRV_PCM_STREAM_PLAYBACK); if (ret) return ret; ret = pcm_preallocate_dma_buffer(pcm, SNDRV_PCM_STREAM_CAPTURE); if (ret) msm_pcm_free_dma_buffers(pcm); return ret; }
static int msm_pcm_new(struct snd_card *card, struct snd_soc_dai *codec_dai, struct snd_pcm *pcm) { int ret; if (!card->dev->coherent_dma_mask) card->dev->coherent_dma_mask = DMA_32BIT_MASK; if (codec_dai->playback.channels_min) { ret = pcm_preallocate_dma_buffer(pcm, SNDRV_PCM_STREAM_PLAYBACK); if (ret) return ret; } if (codec_dai->capture.channels_min) { ret = pcm_preallocate_dma_buffer(pcm, SNDRV_PCM_STREAM_CAPTURE); if (ret) msm_pcm_free_dma_buffers(pcm); } return ret; }