diff options
Diffstat (limited to 'sound/soc/atmel/playpaq_wm8510.c')
-rw-r--r-- | sound/soc/atmel/playpaq_wm8510.c | 65 |
1 files changed, 12 insertions, 53 deletions
diff --git a/sound/soc/atmel/playpaq_wm8510.c b/sound/soc/atmel/playpaq_wm8510.c index 9df4c68ef000..5f4e59f4461c 100644 --- a/sound/soc/atmel/playpaq_wm8510.c +++ b/sound/soc/atmel/playpaq_wm8510.c | |||
@@ -83,7 +83,7 @@ static struct ssc_clock_data playpaq_wm8510_calc_ssc_clock( | |||
83 | struct snd_pcm_hw_params *params, | 83 | struct snd_pcm_hw_params *params, |
84 | struct snd_soc_dai *cpu_dai) | 84 | struct snd_soc_dai *cpu_dai) |
85 | { | 85 | { |
86 | struct at32_ssc_info *ssc_p = cpu_dai->private_data; | 86 | struct at32_ssc_info *ssc_p = snd_soc_dai_get_drvdata(cpu_dai); |
87 | struct ssc_device *ssc = ssc_p->ssc; | 87 | struct ssc_device *ssc = ssc_p->ssc; |
88 | struct ssc_clock_data cd; | 88 | struct ssc_clock_data cd; |
89 | unsigned int rate, width_bits, channels; | 89 | unsigned int rate, width_bits, channels; |
@@ -131,9 +131,9 @@ static int playpaq_wm8510_hw_params(struct snd_pcm_substream *substream, | |||
131 | struct snd_pcm_hw_params *params) | 131 | struct snd_pcm_hw_params *params) |
132 | { | 132 | { |
133 | struct snd_soc_pcm_runtime *rtd = substream->private_data; | 133 | struct snd_soc_pcm_runtime *rtd = substream->private_data; |
134 | struct snd_soc_dai *codec_dai = rtd->dai->codec_dai; | 134 | struct snd_soc_dai *codec_dai = rtd->codec_dai; |
135 | struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai; | 135 | struct snd_soc_dai *cpu_dai = rtd->cpu_dai; |
136 | struct at32_ssc_info *ssc_p = cpu_dai->private_data; | 136 | struct at32_ssc_info *ssc_p = snd_soc_dai_get_drvdata(cpu_dai); |
137 | struct ssc_device *ssc = ssc_p->ssc; | 137 | struct ssc_device *ssc = ssc_p->ssc; |
138 | unsigned int pll_out = 0, bclk = 0, mclk_div = 0; | 138 | unsigned int pll_out = 0, bclk = 0, mclk_div = 0; |
139 | int ret; | 139 | int ret; |
@@ -315,8 +315,9 @@ static const struct snd_soc_dapm_route intercon[] = { | |||
315 | 315 | ||
316 | 316 | ||
317 | 317 | ||
318 | static int playpaq_wm8510_init(struct snd_soc_codec *codec) | 318 | static int playpaq_wm8510_init(struct snd_soc_pcm_runtime *rtd) |
319 | { | 319 | { |
320 | struct snd_soc_codec *codec = rtd->codec; | ||
320 | int i; | 321 | int i; |
321 | 322 | ||
322 | /* | 323 | /* |
@@ -342,7 +343,7 @@ static int playpaq_wm8510_init(struct snd_soc_codec *codec) | |||
342 | 343 | ||
343 | 344 | ||
344 | /* Make CSB show PLL rate */ | 345 | /* Make CSB show PLL rate */ |
345 | snd_soc_dai_set_clkdiv(codec->dai, WM8510_OPCLKDIV, | 346 | snd_soc_dai_set_clkdiv(rtd->codec_dai, WM8510_OPCLKDIV, |
346 | WM8510_OPCLKDIV_1 | 4); | 347 | WM8510_OPCLKDIV_1 | 4); |
347 | 348 | ||
348 | return 0; | 349 | return 0; |
@@ -353,8 +354,10 @@ static int playpaq_wm8510_init(struct snd_soc_codec *codec) | |||
353 | static struct snd_soc_dai_link playpaq_wm8510_dai = { | 354 | static struct snd_soc_dai_link playpaq_wm8510_dai = { |
354 | .name = "WM8510", | 355 | .name = "WM8510", |
355 | .stream_name = "WM8510 PCM", | 356 | .stream_name = "WM8510 PCM", |
356 | .cpu_dai = &at32_ssc_dai[0], | 357 | .cpu_dai_name= "atmel-ssc-dai.0", |
357 | .codec_dai = &wm8510_dai, | 358 | .platform_name = "atmel-pcm-audio", |
359 | .codec_name = "wm8510-codec.0-0x1a", | ||
360 | .codec_dai_name = "wm8510-hifi", | ||
358 | .init = playpaq_wm8510_init, | 361 | .init = playpaq_wm8510_init, |
359 | .ops = &playpaq_wm8510_ops, | 362 | .ops = &playpaq_wm8510_ops, |
360 | }; | 363 | }; |
@@ -363,46 +366,16 @@ static struct snd_soc_dai_link playpaq_wm8510_dai = { | |||
363 | 366 | ||
364 | static struct snd_soc_card snd_soc_playpaq = { | 367 | static struct snd_soc_card snd_soc_playpaq = { |
365 | .name = "LRS_PlayPaq_WM8510", | 368 | .name = "LRS_PlayPaq_WM8510", |
366 | .platform = &at32_soc_platform, | ||
367 | .dai_link = &playpaq_wm8510_dai, | 369 | .dai_link = &playpaq_wm8510_dai, |
368 | .num_links = 1, | 370 | .num_links = 1, |
369 | }; | 371 | }; |
370 | 372 | ||
371 | |||
372 | |||
373 | static struct wm8510_setup_data playpaq_wm8510_setup = { | ||
374 | .i2c_bus = 0, | ||
375 | .i2c_address = 0x1a, | ||
376 | }; | ||
377 | |||
378 | |||
379 | |||
380 | static struct snd_soc_device playpaq_wm8510_snd_devdata = { | ||
381 | .card = &snd_soc_playpaq, | ||
382 | .codec_dev = &soc_codec_dev_wm8510, | ||
383 | .codec_data = &playpaq_wm8510_setup, | ||
384 | }; | ||
385 | |||
386 | static struct platform_device *playpaq_snd_device; | 373 | static struct platform_device *playpaq_snd_device; |
387 | 374 | ||
388 | 375 | ||
389 | static int __init playpaq_asoc_init(void) | 376 | static int __init playpaq_asoc_init(void) |
390 | { | 377 | { |
391 | int ret = 0; | 378 | int ret = 0; |
392 | struct at32_ssc_info *ssc_p = playpaq_wm8510_dai.cpu_dai->private_data; | ||
393 | struct ssc_device *ssc = NULL; | ||
394 | |||
395 | |||
396 | /* | ||
397 | * Request SSC device | ||
398 | */ | ||
399 | ssc = ssc_request(0); | ||
400 | if (IS_ERR(ssc)) { | ||
401 | ret = PTR_ERR(ssc); | ||
402 | goto err_ssc; | ||
403 | } | ||
404 | ssc_p->ssc = ssc; | ||
405 | |||
406 | 379 | ||
407 | /* | 380 | /* |
408 | * Configure MCLK for WM8510 | 381 | * Configure MCLK for WM8510 |
@@ -439,8 +412,7 @@ static int __init playpaq_asoc_init(void) | |||
439 | goto err_device_alloc; | 412 | goto err_device_alloc; |
440 | } | 413 | } |
441 | 414 | ||
442 | platform_set_drvdata(playpaq_snd_device, &playpaq_wm8510_snd_devdata); | 415 | platform_set_drvdata(playpaq_snd_device, &snd_soc_playpaq); |
443 | playpaq_wm8510_snd_devdata.dev = &playpaq_snd_device->dev; | ||
444 | 416 | ||
445 | ret = platform_device_add(playpaq_snd_device); | 417 | ret = platform_device_add(playpaq_snd_device); |
446 | if (ret) { | 418 | if (ret) { |
@@ -468,25 +440,12 @@ err_pll0: | |||
468 | clk_put(_gclk0); | 440 | clk_put(_gclk0); |
469 | _gclk0 = NULL; | 441 | _gclk0 = NULL; |
470 | } | 442 | } |
471 | err_gclk0: | ||
472 | ssc_free(ssc); | ||
473 | err_ssc: | ||
474 | return ret; | 443 | return ret; |
475 | } | 444 | } |
476 | 445 | ||
477 | 446 | ||
478 | static void __exit playpaq_asoc_exit(void) | 447 | static void __exit playpaq_asoc_exit(void) |
479 | { | 448 | { |
480 | struct at32_ssc_info *ssc_p = playpaq_wm8510_dai.cpu_dai->private_data; | ||
481 | struct ssc_device *ssc; | ||
482 | |||
483 | if (ssc_p != NULL) { | ||
484 | ssc = ssc_p->ssc; | ||
485 | if (ssc != NULL) | ||
486 | ssc_free(ssc); | ||
487 | ssc_p->ssc = NULL; | ||
488 | } | ||
489 | |||
490 | if (_gclk0 != NULL) { | 449 | if (_gclk0 != NULL) { |
491 | clk_put(_gclk0); | 450 | clk_put(_gclk0); |
492 | _gclk0 = NULL; | 451 | _gclk0 = NULL; |