aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/blackfin/bf5xx-i2s.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/soc/blackfin/bf5xx-i2s.c')
-rw-r--r--sound/soc/blackfin/bf5xx-i2s.c45
1 files changed, 31 insertions, 14 deletions
diff --git a/sound/soc/blackfin/bf5xx-i2s.c b/sound/soc/blackfin/bf5xx-i2s.c
index 3e6ada0dd1c4..d453b1e9d607 100644
--- a/sound/soc/blackfin/bf5xx-i2s.c
+++ b/sound/soc/blackfin/bf5xx-i2s.c
@@ -42,7 +42,6 @@
42#include <linux/gpio.h> 42#include <linux/gpio.h>
43 43
44#include "bf5xx-sport.h" 44#include "bf5xx-sport.h"
45#include "bf5xx-i2s.h"
46 45
47struct bf5xx_i2s_port { 46struct bf5xx_i2s_port {
48 u16 tcr1; 47 u16 tcr1;
@@ -195,8 +194,7 @@ static void bf5xx_i2s_shutdown(struct snd_pcm_substream *substream,
195 bf5xx_i2s.configured = 0; 194 bf5xx_i2s.configured = 0;
196} 195}
197 196
198static int bf5xx_i2s_probe(struct platform_device *pdev, 197static int bf5xx_i2s_probe(struct snd_soc_dai *dai)
199 struct snd_soc_dai *dai)
200{ 198{
201 pr_debug("%s enter\n", __func__); 199 pr_debug("%s enter\n", __func__);
202 if (peripheral_request_list(&sport_req[sport_num][0], "soc-audio")) { 200 if (peripheral_request_list(&sport_req[sport_num][0], "soc-audio")) {
@@ -215,11 +213,11 @@ static int bf5xx_i2s_probe(struct platform_device *pdev,
215 return 0; 213 return 0;
216} 214}
217 215
218static void bf5xx_i2s_remove(struct platform_device *pdev, 216static int bf5xx_i2s_remove(struct snd_soc_dai *dai)
219 struct snd_soc_dai *dai)
220{ 217{
221 pr_debug("%s enter\n", __func__); 218 pr_debug("%s enter\n", __func__);
222 peripheral_free_list(&sport_req[sport_num][0]); 219 peripheral_free_list(&sport_req[sport_num][0]);
220 return 0;
223} 221}
224 222
225#ifdef CONFIG_PM 223#ifdef CONFIG_PM
@@ -228,9 +226,9 @@ static int bf5xx_i2s_suspend(struct snd_soc_dai *dai)
228 226
229 pr_debug("%s : sport %d\n", __func__, dai->id); 227 pr_debug("%s : sport %d\n", __func__, dai->id);
230 228
231 if (dai->capture.active) 229 if (dai->capture_active)
232 sport_rx_stop(sport_handle); 230 sport_rx_stop(sport_handle);
233 if (dai->playback.active) 231 if (dai->playback_active)
234 sport_tx_stop(sport_handle); 232 sport_tx_stop(sport_handle);
235 return 0; 233 return 0;
236} 234}
@@ -277,9 +275,7 @@ static struct snd_soc_dai_ops bf5xx_i2s_dai_ops = {
277 .set_fmt = bf5xx_i2s_set_dai_fmt, 275 .set_fmt = bf5xx_i2s_set_dai_fmt,
278}; 276};
279 277
280struct snd_soc_dai bf5xx_i2s_dai = { 278static struct snd_soc_dai_driver bf5xx_i2s_dai = {
281 .name = "bf5xx-i2s",
282 .id = 0,
283 .probe = bf5xx_i2s_probe, 279 .probe = bf5xx_i2s_probe,
284 .remove = bf5xx_i2s_remove, 280 .remove = bf5xx_i2s_remove,
285 .suspend = bf5xx_i2s_suspend, 281 .suspend = bf5xx_i2s_suspend,
@@ -296,18 +292,39 @@ struct snd_soc_dai bf5xx_i2s_dai = {
296 .formats = BF5XX_I2S_FORMATS,}, 292 .formats = BF5XX_I2S_FORMATS,},
297 .ops = &bf5xx_i2s_dai_ops, 293 .ops = &bf5xx_i2s_dai_ops,
298}; 294};
299EXPORT_SYMBOL_GPL(bf5xx_i2s_dai); 295
296static int bfin_i2s_drv_probe(struct platform_device *pdev)
297{
298 return snd_soc_register_dai(&pdev->dev, &bf5xx_i2s_dai);
299}
300
301static int __devexit bfin_i2s_drv_remove(struct platform_device *pdev)
302{
303 snd_soc_unregister_dai(&pdev->dev);
304 return 0;
305}
306
307static struct platform_driver bfin_i2s_driver = {
308 .probe = bfin_i2s_drv_probe,
309 .remove = __devexit_p(bfin_i2s_drv_remove),
310
311 .driver = {
312 .name = "bf5xx-i2s",
313 .owner = THIS_MODULE,
314 },
315};
300 316
301static int __init bfin_i2s_init(void) 317static int __init bfin_i2s_init(void)
302{ 318{
303 return snd_soc_register_dai(&bf5xx_i2s_dai); 319 return platform_driver_register(&bfin_i2s_driver);
304} 320}
305module_init(bfin_i2s_init);
306 321
307static void __exit bfin_i2s_exit(void) 322static void __exit bfin_i2s_exit(void)
308{ 323{
309 snd_soc_unregister_dai(&bf5xx_i2s_dai); 324 platform_driver_unregister(&bfin_i2s_driver);
310} 325}
326
327module_init(bfin_i2s_init);
311module_exit(bfin_i2s_exit); 328module_exit(bfin_i2s_exit);
312 329
313/* Module information */ 330/* Module information */