diff options
Diffstat (limited to 'sound/soc/omap/omap-pcm.c')
| -rw-r--r-- | sound/soc/omap/omap-pcm.c | 47 | 
1 files changed, 34 insertions, 13 deletions
diff --git a/sound/soc/omap/omap-pcm.c b/sound/soc/omap/omap-pcm.c index 1e521904ea64..8caeb8d305c3 100644 --- a/sound/soc/omap/omap-pcm.c +++ b/sound/soc/omap/omap-pcm.c @@ -101,9 +101,10 @@ static int omap_pcm_hw_params(struct snd_pcm_substream *substream,  	struct snd_soc_pcm_runtime *rtd = substream->private_data;  	struct omap_runtime_data *prtd = runtime->private_data;  	struct omap_pcm_dma_data *dma_data; +  	int err = 0; -	dma_data = snd_soc_dai_get_dma_data(rtd->dai->cpu_dai, substream); +	dma_data = snd_soc_dai_get_dma_data(rtd->cpu_dai, substream);  	/* return if this is a bufferless transfer e.g.  	 * codec <--> BT codec or GSM modem -- lg FIXME */ @@ -374,14 +375,14 @@ static int omap_pcm_new(struct snd_card *card, struct snd_soc_dai *dai,  	if (!card->dev->coherent_dma_mask)  		card->dev->coherent_dma_mask = DMA_BIT_MASK(64); -	if (dai->playback.channels_min) { +	if (dai->driver->playback.channels_min) {  		ret = omap_pcm_preallocate_dma_buffer(pcm,  			SNDRV_PCM_STREAM_PLAYBACK);  		if (ret)  			goto out;  	} -	if (dai->capture.channels_min) { +	if (dai->driver->capture.channels_min) {  		ret = omap_pcm_preallocate_dma_buffer(pcm,  			SNDRV_PCM_STREAM_CAPTURE);  		if (ret) @@ -392,25 +393,45 @@ out:  	return ret;  } -struct snd_soc_platform omap_soc_platform = { -	.name		= "omap-pcm-audio", -	.pcm_ops 	= &omap_pcm_ops, +static struct snd_soc_platform_driver omap_soc_platform = { +	.ops		= &omap_pcm_ops,  	.pcm_new	= omap_pcm_new,  	.pcm_free	= omap_pcm_free_dma_buffers,  }; -EXPORT_SYMBOL_GPL(omap_soc_platform); -static int __init omap_soc_platform_init(void) +static __devinit int omap_pcm_probe(struct platform_device *pdev) +{ +	return snd_soc_register_platform(&pdev->dev, +			&omap_soc_platform); +} + +static int __devexit omap_pcm_remove(struct platform_device *pdev) +{ +	snd_soc_unregister_platform(&pdev->dev); +	return 0; +} + +static struct platform_driver omap_pcm_driver = { +	.driver = { +			.name = "omap-pcm-audio", +			.owner = THIS_MODULE, +	}, + +	.probe = omap_pcm_probe, +	.remove = __devexit_p(omap_pcm_remove), +}; + +static int __init snd_omap_pcm_init(void)  { -	return snd_soc_register_platform(&omap_soc_platform); +	return platform_driver_register(&omap_pcm_driver);  } -module_init(omap_soc_platform_init); +module_init(snd_omap_pcm_init); -static void __exit omap_soc_platform_exit(void) +static void __exit snd_omap_pcm_exit(void)  { -	snd_soc_unregister_platform(&omap_soc_platform); +	platform_driver_unregister(&omap_pcm_driver);  } -module_exit(omap_soc_platform_exit); +module_exit(snd_omap_pcm_exit);  MODULE_AUTHOR("Jarkko Nikula <jhnikula@gmail.com>");  MODULE_DESCRIPTION("OMAP PCM DMA module");  |