diff options
Diffstat (limited to 'sound/soc/fsl/fsl_dma.c')
| -rw-r--r-- | sound/soc/fsl/fsl_dma.c | 27 | 
1 files changed, 17 insertions, 10 deletions
diff --git a/sound/soc/fsl/fsl_dma.c b/sound/soc/fsl/fsl_dma.c index 8c2981b70f64..fce2010d3c53 100644 --- a/sound/soc/fsl/fsl_dma.c +++ b/sound/soc/fsl/fsl_dma.c @@ -37,6 +37,8 @@  #include "fsl_dma.h"  #include "fsl_ssi.h"	/* For the offset of stx0 and srx0 */ +#define DRV_NAME "fsl_dma" +  /*   * The formats that the DMA controller supports, which is anything   * that is 8, 16, or 32 bits. @@ -56,7 +58,7 @@  			    SNDRV_PCM_FMTBIT_U32_LE     | \  			    SNDRV_PCM_FMTBIT_U32_BE)  struct dma_object { -	struct snd_soc_platform_driver dai; +	struct snd_soc_component_driver dai;  	dma_addr_t ssi_stx_phys;  	dma_addr_t ssi_srx_phys;  	unsigned int ssi_fifo_depth; @@ -203,7 +205,8 @@ static irqreturn_t fsl_dma_isr(int irq, void *dev_id)  	struct fsl_dma_private *dma_private = dev_id;  	struct snd_pcm_substream *substream = dma_private->substream;  	struct snd_soc_pcm_runtime *rtd = substream->private_data; -	struct device *dev = rtd->platform->dev; +	struct snd_soc_component *component = snd_soc_rtdcom_lookup(rtd, DRV_NAME); +	struct device *dev = component->dev;  	struct ccsr_dma_channel __iomem *dma_channel = dma_private->dma_channel;  	irqreturn_t ret = IRQ_NONE;  	u32 sr, sr2 = 0; @@ -385,9 +388,10 @@ static int fsl_dma_open(struct snd_pcm_substream *substream)  {  	struct snd_pcm_runtime *runtime = substream->runtime;  	struct snd_soc_pcm_runtime *rtd = substream->private_data; -	struct device *dev = rtd->platform->dev; +	struct snd_soc_component *component = snd_soc_rtdcom_lookup(rtd, DRV_NAME); +	struct device *dev = component->dev;  	struct dma_object *dma = -		container_of(rtd->platform->driver, struct dma_object, dai); +		container_of(component->driver, struct dma_object, dai);  	struct fsl_dma_private *dma_private;  	struct ccsr_dma_channel __iomem *dma_channel;  	dma_addr_t ld_buf_phys; @@ -539,7 +543,8 @@ static int fsl_dma_hw_params(struct snd_pcm_substream *substream,  	struct snd_pcm_runtime *runtime = substream->runtime;  	struct fsl_dma_private *dma_private = runtime->private_data;  	struct snd_soc_pcm_runtime *rtd = substream->private_data; -	struct device *dev = rtd->platform->dev; +	struct snd_soc_component *component = snd_soc_rtdcom_lookup(rtd, DRV_NAME); +	struct device *dev = component->dev;  	/* Number of bits per sample */  	unsigned int sample_bits = @@ -702,7 +707,8 @@ static snd_pcm_uframes_t fsl_dma_pointer(struct snd_pcm_substream *substream)  	struct snd_pcm_runtime *runtime = substream->runtime;  	struct fsl_dma_private *dma_private = runtime->private_data;  	struct snd_soc_pcm_runtime *rtd = substream->private_data; -	struct device *dev = rtd->platform->dev; +	struct snd_soc_component *component = snd_soc_rtdcom_lookup(rtd, DRV_NAME); +	struct device *dev = component->dev;  	struct ccsr_dma_channel __iomem *dma_channel = dma_private->dma_channel;  	dma_addr_t position;  	snd_pcm_uframes_t frames; @@ -799,9 +805,10 @@ static int fsl_dma_close(struct snd_pcm_substream *substream)  	struct snd_pcm_runtime *runtime = substream->runtime;  	struct fsl_dma_private *dma_private = runtime->private_data;  	struct snd_soc_pcm_runtime *rtd = substream->private_data; -	struct device *dev = rtd->platform->dev; +	struct snd_soc_component *component = snd_soc_rtdcom_lookup(rtd, DRV_NAME); +	struct device *dev = component->dev;  	struct dma_object *dma = -		container_of(rtd->platform->driver, struct dma_object, dai); +		container_of(component->driver, struct dma_object, dai);  	if (dma_private) {  		if (dma_private->irq) @@ -908,6 +915,7 @@ static int fsl_soc_dma_probe(struct platform_device *pdev)  		return -ENOMEM;  	} +	dma->dai.name = DRV_NAME;  	dma->dai.ops = &fsl_dma_ops;  	dma->dai.pcm_new = fsl_dma_new;  	dma->dai.pcm_free = fsl_dma_free_dma_buffers; @@ -925,7 +933,7 @@ static int fsl_soc_dma_probe(struct platform_device *pdev)  	of_node_put(ssi_np); -	ret = snd_soc_register_platform(&pdev->dev, &dma->dai); +	ret = devm_snd_soc_register_component(&pdev->dev, &dma->dai, NULL, 0);  	if (ret) {  		dev_err(&pdev->dev, "could not register platform\n");  		kfree(dma); @@ -944,7 +952,6 @@ static int fsl_soc_dma_remove(struct platform_device *pdev)  {  	struct dma_object *dma = dev_get_drvdata(&pdev->dev); -	snd_soc_unregister_platform(&pdev->dev);  	iounmap(dma->channel);  	irq_dispose_mapping(dma->irq);  	kfree(dma);  | 

