diff options
Diffstat (limited to 'sound/soc/atmel/atmel-pcm-dma.c')
| -rw-r--r-- | sound/soc/atmel/atmel-pcm-dma.c | 29 | 
1 files changed, 9 insertions, 20 deletions
diff --git a/sound/soc/atmel/atmel-pcm-dma.c b/sound/soc/atmel/atmel-pcm-dma.c index 30184a4a147..1d38fd0bc4e 100644 --- a/sound/soc/atmel/atmel-pcm-dma.c +++ b/sound/soc/atmel/atmel-pcm-dma.c @@ -67,9 +67,10 @@ static const struct snd_pcm_hardware atmel_pcm_dma_hardware = {  static void atmel_pcm_dma_irq(u32 ssc_sr,  	struct snd_pcm_substream *substream)  { +	struct snd_soc_pcm_runtime *rtd = substream->private_data;  	struct atmel_pcm_dma_params *prtd; -	prtd = snd_dmaengine_pcm_get_data(substream); +	prtd = snd_soc_dai_get_dma_data(rtd->cpu_dai, substream);  	if (ssc_sr & prtd->mask->ssc_error) {  		if (snd_pcm_running(substream)) @@ -104,15 +105,13 @@ static bool filter(struct dma_chan *chan, void *slave)  }  static int atmel_pcm_configure_dma(struct snd_pcm_substream *substream, -	struct snd_pcm_hw_params *params) +	struct snd_pcm_hw_params *params, struct atmel_pcm_dma_params *prtd)  { -	struct atmel_pcm_dma_params *prtd;  	struct ssc_device *ssc;  	struct dma_chan *dma_chan;  	struct dma_slave_config slave_config;  	int ret; -	prtd = snd_dmaengine_pcm_get_data(substream);  	ssc = prtd->ssc;  	ret = snd_hwparams_to_dma_slave_config(substream, params, @@ -130,8 +129,6 @@ static int atmel_pcm_configure_dma(struct snd_pcm_substream *substream,  		slave_config.src_maxburst = 1;  	} -	slave_config.device_fc = false; -  	dma_chan = snd_dmaengine_pcm_get_chan(substream);  	if (dmaengine_slave_config(dma_chan, &slave_config)) {  		pr_err("atmel-pcm: failed to configure dma channel\n"); @@ -158,15 +155,13 @@ static int atmel_pcm_hw_params(struct snd_pcm_substream *substream,  	if (ssc->pdev)  		sdata = ssc->pdev->dev.platform_data; -	ret = snd_dmaengine_pcm_open(substream, filter, sdata); +	ret = snd_dmaengine_pcm_open_request_chan(substream, filter, sdata);  	if (ret) {  		pr_err("atmel-pcm: dmaengine pcm open failed\n");  		return -EINVAL;  	} -	snd_dmaengine_pcm_set_data(substream, prtd); - -	ret = atmel_pcm_configure_dma(substream, params); +	ret = atmel_pcm_configure_dma(substream, params, prtd);  	if (ret) {  		pr_err("atmel-pcm: failed to configure dmai\n");  		goto err; @@ -176,15 +171,16 @@ static int atmel_pcm_hw_params(struct snd_pcm_substream *substream,  	return 0;  err: -	snd_dmaengine_pcm_close(substream); +	snd_dmaengine_pcm_close_release_chan(substream);  	return ret;  }  static int atmel_pcm_dma_prepare(struct snd_pcm_substream *substream)  { +	struct snd_soc_pcm_runtime *rtd = substream->private_data;  	struct atmel_pcm_dma_params *prtd; -	prtd = snd_dmaengine_pcm_get_data(substream); +	prtd = snd_soc_dai_get_dma_data(rtd->cpu_dai, substream);  	ssc_writex(prtd->ssc->regs, SSC_IER, prtd->mask->ssc_error);  	ssc_writex(prtd->ssc->regs, SSC_CR, prtd->mask->ssc_enable); @@ -199,16 +195,9 @@ static int atmel_pcm_open(struct snd_pcm_substream *substream)  	return 0;  } -static int atmel_pcm_close(struct snd_pcm_substream *substream) -{ -	snd_dmaengine_pcm_close(substream); - -	return 0; -} -  static struct snd_pcm_ops atmel_pcm_ops = {  	.open		= atmel_pcm_open, -	.close		= atmel_pcm_close, +	.close		= snd_dmaengine_pcm_close_release_chan,  	.ioctl		= snd_pcm_lib_ioctl,  	.hw_params	= atmel_pcm_hw_params,  	.prepare	= atmel_pcm_dma_prepare,  |