diff options
Diffstat (limited to 'sound/soc/tegra/tegra20_i2s.c')
| -rw-r--r-- | sound/soc/tegra/tegra20_i2s.c | 28 | 
1 files changed, 17 insertions, 11 deletions
diff --git a/sound/soc/tegra/tegra20_i2s.c b/sound/soc/tegra/tegra20_i2s.c index caa772de5a1..52af7f6fb37 100644 --- a/sound/soc/tegra/tegra20_i2s.c +++ b/sound/soc/tegra/tegra20_i2s.c @@ -41,6 +41,7 @@  #include <sound/pcm.h>  #include <sound/pcm_params.h>  #include <sound/soc.h> +#include <sound/dmaengine_pcm.h>  #include "tegra20_i2s.h" @@ -276,6 +277,10 @@ static const struct snd_soc_dai_driver tegra20_i2s_dai_template = {  	.symmetric_rates = 1,  }; +static const struct snd_soc_component_driver tegra20_i2s_component = { +	.name		= DRV_NAME, +}; +  static bool tegra20_i2s_wr_rd_reg(struct device *dev, unsigned int reg)  {  	switch (reg) { @@ -403,14 +408,14 @@ static int tegra20_i2s_platform_probe(struct platform_device *pdev)  	}  	i2s->capture_dma_data.addr = mem->start + TEGRA20_I2S_FIFO2; -	i2s->capture_dma_data.wrap = 4; -	i2s->capture_dma_data.width = 32; -	i2s->capture_dma_data.req_sel = dma_ch; +	i2s->capture_dma_data.addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; +	i2s->capture_dma_data.maxburst = 4; +	i2s->capture_dma_data.slave_id = dma_ch;  	i2s->playback_dma_data.addr = mem->start + TEGRA20_I2S_FIFO1; -	i2s->playback_dma_data.wrap = 4; -	i2s->playback_dma_data.width = 32; -	i2s->playback_dma_data.req_sel = dma_ch; +	i2s->playback_dma_data.addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; +	i2s->playback_dma_data.maxburst = 4; +	i2s->playback_dma_data.slave_id = dma_ch;  	pm_runtime_enable(&pdev->dev);  	if (!pm_runtime_enabled(&pdev->dev)) { @@ -419,7 +424,8 @@ static int tegra20_i2s_platform_probe(struct platform_device *pdev)  			goto err_pm_disable;  	} -	ret = snd_soc_register_dai(&pdev->dev, &i2s->dai); +	ret = snd_soc_register_component(&pdev->dev, &tegra20_i2s_component, +					 &i2s->dai, 1);  	if (ret) {  		dev_err(&pdev->dev, "Could not register DAI: %d\n", ret);  		ret = -ENOMEM; @@ -429,13 +435,13 @@ static int tegra20_i2s_platform_probe(struct platform_device *pdev)  	ret = tegra_pcm_platform_register(&pdev->dev);  	if (ret) {  		dev_err(&pdev->dev, "Could not register PCM: %d\n", ret); -		goto err_unregister_dai; +		goto err_unregister_component;  	}  	return 0; -err_unregister_dai: -	snd_soc_unregister_dai(&pdev->dev); +err_unregister_component: +	snd_soc_unregister_component(&pdev->dev);  err_suspend:  	if (!pm_runtime_status_suspended(&pdev->dev))  		tegra20_i2s_runtime_suspend(&pdev->dev); @@ -456,7 +462,7 @@ static int tegra20_i2s_platform_remove(struct platform_device *pdev)  		tegra20_i2s_runtime_suspend(&pdev->dev);  	tegra_pcm_platform_unregister(&pdev->dev); -	snd_soc_unregister_dai(&pdev->dev); +	snd_soc_unregister_component(&pdev->dev);  	clk_put(i2s->clk_i2s);  |