diff options
Diffstat (limited to 'sound/soc/davinci/davinci-pcm.c')
| -rw-r--r-- | sound/soc/davinci/davinci-pcm.c | 50 | 
1 files changed, 6 insertions, 44 deletions
diff --git a/sound/soc/davinci/davinci-pcm.c b/sound/soc/davinci/davinci-pcm.c index 8460edce1c3..7809e9d935f 100644 --- a/sound/soc/davinci/davinci-pcm.c +++ b/sound/soc/davinci/davinci-pcm.c @@ -46,33 +46,11 @@ static void print_buf_info(int slot, char *name)  }  #endif -#define DAVINCI_PCM_FMTBITS	(\ -				SNDRV_PCM_FMTBIT_S8	|\ -				SNDRV_PCM_FMTBIT_U8	|\ -				SNDRV_PCM_FMTBIT_S16_LE	|\ -				SNDRV_PCM_FMTBIT_S16_BE	|\ -				SNDRV_PCM_FMTBIT_U16_LE	|\ -				SNDRV_PCM_FMTBIT_U16_BE	|\ -				SNDRV_PCM_FMTBIT_S24_LE	|\ -				SNDRV_PCM_FMTBIT_S24_BE	|\ -				SNDRV_PCM_FMTBIT_U24_LE	|\ -				SNDRV_PCM_FMTBIT_U24_BE	|\ -				SNDRV_PCM_FMTBIT_S32_LE	|\ -				SNDRV_PCM_FMTBIT_S32_BE	|\ -				SNDRV_PCM_FMTBIT_U32_LE	|\ -				SNDRV_PCM_FMTBIT_U32_BE) -  static struct snd_pcm_hardware pcm_hardware_playback = {  	.info = (SNDRV_PCM_INFO_INTERLEAVED | SNDRV_PCM_INFO_BLOCK_TRANSFER |  		 SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_MMAP_VALID |  		 SNDRV_PCM_INFO_PAUSE | SNDRV_PCM_INFO_RESUME|  		 SNDRV_PCM_INFO_BATCH), -	.formats = DAVINCI_PCM_FMTBITS, -	.rates = SNDRV_PCM_RATE_8000_192000 | SNDRV_PCM_RATE_KNOT, -	.rate_min = 8000, -	.rate_max = 192000, -	.channels_min = 2, -	.channels_max = 384,  	.buffer_bytes_max = 128 * 1024,  	.period_bytes_min = 32,  	.period_bytes_max = 8 * 1024, @@ -86,12 +64,6 @@ static struct snd_pcm_hardware pcm_hardware_capture = {  		 SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_MMAP_VALID |  		 SNDRV_PCM_INFO_PAUSE |  		 SNDRV_PCM_INFO_BATCH), -	.formats = DAVINCI_PCM_FMTBITS, -	.rates = SNDRV_PCM_RATE_8000_192000 | SNDRV_PCM_RATE_KNOT, -	.rate_min = 8000, -	.rate_max = 192000, -	.channels_min = 2, -	.channels_max = 384,  	.buffer_bytes_max = 128 * 1024,  	.period_bytes_min = 32,  	.period_bytes_max = 8 * 1024, @@ -238,7 +210,7 @@ static void davinci_pcm_dma_irq(unsigned link, u16 ch_status, void *data)  	print_buf_info(prtd->ram_channel, "i ram_channel");  	pr_debug("davinci_pcm: link=%d, status=0x%x\n", link, ch_status); -	if (unlikely(ch_status != DMA_COMPLETE)) +	if (unlikely(ch_status != EDMA_DMA_COMPLETE))  		return;  	if (snd_pcm_running(substream)) { @@ -267,10 +239,9 @@ static int allocate_sram(struct snd_pcm_substream *substream,  		return 0;  	ppcm->period_bytes_max = size; -	iram_virt = (void *)gen_pool_alloc(sram_pool, size); +	iram_virt = gen_pool_dma_alloc(sram_pool, size, &iram_phys);  	if (!iram_virt)  		goto exit1; -	iram_phys = gen_pool_virt_to_phys(sram_pool, (unsigned)iram_virt);  	iram_dma = kzalloc(sizeof(*iram_dma), GFP_KERNEL);  	if (!iram_dma)  		goto exit2; @@ -844,18 +815,15 @@ static void davinci_pcm_free(struct snd_pcm *pcm)  	}  } -static u64 davinci_pcm_dmamask = DMA_BIT_MASK(32); -  static int davinci_pcm_new(struct snd_soc_pcm_runtime *rtd)  {  	struct snd_card *card = rtd->card->snd_card;  	struct snd_pcm *pcm = rtd->pcm;  	int ret; -	if (!card->dev->dma_mask) -		card->dev->dma_mask = &davinci_pcm_dmamask; -	if (!card->dev->coherent_dma_mask) -		card->dev->coherent_dma_mask = DMA_BIT_MASK(32); +	ret = dma_coerce_mask_and_coherent(card->dev, DMA_BIT_MASK(32)); +	if (ret) +		return ret;  	if (pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream) {  		ret = davinci_pcm_preallocate_dma_buffer(pcm, @@ -884,16 +852,10 @@ static struct snd_soc_platform_driver davinci_soc_platform = {  int davinci_soc_platform_register(struct device *dev)  { -	return snd_soc_register_platform(dev, &davinci_soc_platform); +	return devm_snd_soc_register_platform(dev, &davinci_soc_platform);  }  EXPORT_SYMBOL_GPL(davinci_soc_platform_register); -void davinci_soc_platform_unregister(struct device *dev) -{ -	snd_soc_unregister_platform(dev); -} -EXPORT_SYMBOL_GPL(davinci_soc_platform_unregister); -  MODULE_AUTHOR("Vladimir Barinov");  MODULE_DESCRIPTION("TI DAVINCI PCM DMA module");  MODULE_LICENSE("GPL");  | 
