diff options
Diffstat (limited to 'sound')
-rw-r--r-- | sound/soc/au1x/ac97c.c | 14 | ||||
-rw-r--r-- | sound/soc/au1x/psc-ac97.c | 26 | ||||
-rw-r--r-- | sound/soc/blackfin/bf5xx-ac97.c | 18 | ||||
-rw-r--r-- | sound/soc/cirrus/ep93xx-ac97.c | 2 | ||||
-rw-r--r-- | sound/soc/codecs/stac9766.c | 4 | ||||
-rw-r--r-- | sound/soc/nuc900/nuc900-ac97.c | 49 | ||||
-rw-r--r-- | sound/soc/samsung/ac97.c | 30 | ||||
-rw-r--r-- | sound/soc/tegra/tegra20_ac97.c | 54 | ||||
-rw-r--r-- | sound/soc/txx9/txx9aclc-ac97.c | 9 |
9 files changed, 54 insertions, 152 deletions
diff --git a/sound/soc/au1x/ac97c.c b/sound/soc/au1x/ac97c.c index 44b8dcecf571..a51dabe20cbb 100644 --- a/sound/soc/au1x/ac97c.c +++ b/sound/soc/au1x/ac97c.c | |||
@@ -338,19 +338,7 @@ static struct platform_driver au1xac97c_driver = { | |||
338 | .remove = au1xac97c_drvremove, | 338 | .remove = au1xac97c_drvremove, |
339 | }; | 339 | }; |
340 | 340 | ||
341 | static int __init au1xac97c_load(void) | 341 | module_platform_driver(&au1xac97c_driver); |
342 | { | ||
343 | ac97c_workdata = NULL; | ||
344 | return platform_driver_register(&au1xac97c_driver); | ||
345 | } | ||
346 | |||
347 | static void __exit au1xac97c_unload(void) | ||
348 | { | ||
349 | platform_driver_unregister(&au1xac97c_driver); | ||
350 | } | ||
351 | |||
352 | module_init(au1xac97c_load); | ||
353 | module_exit(au1xac97c_unload); | ||
354 | 342 | ||
355 | MODULE_LICENSE("GPL"); | 343 | MODULE_LICENSE("GPL"); |
356 | MODULE_DESCRIPTION("Au1000/1500/1100 AC97C ASoC driver"); | 344 | MODULE_DESCRIPTION("Au1000/1500/1100 AC97C ASoC driver"); |
diff --git a/sound/soc/au1x/psc-ac97.c b/sound/soc/au1x/psc-ac97.c index 8f1862aa7333..a97ba1367b69 100644 --- a/sound/soc/au1x/psc-ac97.c +++ b/sound/soc/au1x/psc-ac97.c | |||
@@ -383,15 +383,9 @@ static int au1xpsc_ac97_drvprobe(struct platform_device *pdev) | |||
383 | if (!iores) | 383 | if (!iores) |
384 | return -ENODEV; | 384 | return -ENODEV; |
385 | 385 | ||
386 | if (!devm_request_mem_region(&pdev->dev, iores->start, | 386 | wd->mmio = devm_ioremap_resource(&pdev->dev, iores); |
387 | resource_size(iores), | 387 | if (IS_ERR(wd->mmio)) |
388 | pdev->name)) | 388 | return PTR_ERR(wd->mmio); |
389 | return -EBUSY; | ||
390 | |||
391 | wd->mmio = devm_ioremap(&pdev->dev, iores->start, | ||
392 | resource_size(iores)); | ||
393 | if (!wd->mmio) | ||
394 | return -EBUSY; | ||
395 | 389 | ||
396 | dmares = platform_get_resource(pdev, IORESOURCE_DMA, 0); | 390 | dmares = platform_get_resource(pdev, IORESOURCE_DMA, 0); |
397 | if (!dmares) | 391 | if (!dmares) |
@@ -503,19 +497,7 @@ static struct platform_driver au1xpsc_ac97_driver = { | |||
503 | .remove = au1xpsc_ac97_drvremove, | 497 | .remove = au1xpsc_ac97_drvremove, |
504 | }; | 498 | }; |
505 | 499 | ||
506 | static int __init au1xpsc_ac97_load(void) | 500 | module_platform_driver(au1xpsc_ac97_driver); |
507 | { | ||
508 | au1xpsc_ac97_workdata = NULL; | ||
509 | return platform_driver_register(&au1xpsc_ac97_driver); | ||
510 | } | ||
511 | |||
512 | static void __exit au1xpsc_ac97_unload(void) | ||
513 | { | ||
514 | platform_driver_unregister(&au1xpsc_ac97_driver); | ||
515 | } | ||
516 | |||
517 | module_init(au1xpsc_ac97_load); | ||
518 | module_exit(au1xpsc_ac97_unload); | ||
519 | 501 | ||
520 | MODULE_LICENSE("GPL"); | 502 | MODULE_LICENSE("GPL"); |
521 | MODULE_DESCRIPTION("Au12x0/Au1550 PSC AC97 ALSA ASoC audio driver"); | 503 | MODULE_DESCRIPTION("Au12x0/Au1550 PSC AC97 ALSA ASoC audio driver"); |
diff --git a/sound/soc/blackfin/bf5xx-ac97.c b/sound/soc/blackfin/bf5xx-ac97.c index 490217325975..024e2dbe6c7f 100644 --- a/sound/soc/blackfin/bf5xx-ac97.c +++ b/sound/soc/blackfin/bf5xx-ac97.c | |||
@@ -293,13 +293,14 @@ static int asoc_bfin_ac97_probe(struct platform_device *pdev) | |||
293 | 293 | ||
294 | #ifdef CONFIG_SND_BF5XX_HAVE_COLD_RESET | 294 | #ifdef CONFIG_SND_BF5XX_HAVE_COLD_RESET |
295 | /* Request PB3 as reset pin */ | 295 | /* Request PB3 as reset pin */ |
296 | if (gpio_request(CONFIG_SND_BF5XX_RESET_GPIO_NUM, "SND_AD198x RESET")) { | 296 | ret = devm_gpio_request_one(&pdev->dev, |
297 | pr_err("Failed to request GPIO_%d for reset\n", | 297 | CONFIG_SND_BF5XX_RESET_GPIO_NUM, |
298 | CONFIG_SND_BF5XX_RESET_GPIO_NUM); | 298 | GPIOF_OUT_INIT_HIGH, "SND_AD198x RESET") { |
299 | ret = -1; | 299 | dev_err(&pdev->dev, |
300 | "Failed to request GPIO_%d for reset: %d\n", | ||
301 | CONFIG_SND_BF5XX_RESET_GPIO_NUM, ret); | ||
300 | goto gpio_err; | 302 | goto gpio_err; |
301 | } | 303 | } |
302 | gpio_direction_output(CONFIG_SND_BF5XX_RESET_GPIO_NUM, 1); | ||
303 | #endif | 304 | #endif |
304 | 305 | ||
305 | sport_handle = sport_init(pdev, 2, sizeof(struct ac97_frame), | 306 | sport_handle = sport_init(pdev, 2, sizeof(struct ac97_frame), |
@@ -349,10 +350,6 @@ static int asoc_bfin_ac97_probe(struct platform_device *pdev) | |||
349 | sport_config_err: | 350 | sport_config_err: |
350 | sport_done(sport_handle); | 351 | sport_done(sport_handle); |
351 | sport_err: | 352 | sport_err: |
352 | #ifdef CONFIG_SND_BF5XX_HAVE_COLD_RESET | ||
353 | gpio_free(CONFIG_SND_BF5XX_RESET_GPIO_NUM); | ||
354 | gpio_err: | ||
355 | #endif | ||
356 | 353 | ||
357 | return ret; | 354 | return ret; |
358 | } | 355 | } |
@@ -363,9 +360,6 @@ static int asoc_bfin_ac97_remove(struct platform_device *pdev) | |||
363 | 360 | ||
364 | snd_soc_unregister_component(&pdev->dev); | 361 | snd_soc_unregister_component(&pdev->dev); |
365 | sport_done(sport_handle); | 362 | sport_done(sport_handle); |
366 | #ifdef CONFIG_SND_BF5XX_HAVE_COLD_RESET | ||
367 | gpio_free(CONFIG_SND_BF5XX_RESET_GPIO_NUM); | ||
368 | #endif | ||
369 | 363 | ||
370 | return 0; | 364 | return 0; |
371 | } | 365 | } |
diff --git a/sound/soc/cirrus/ep93xx-ac97.c b/sound/soc/cirrus/ep93xx-ac97.c index 7798fbd5e81d..d49e0556e381 100644 --- a/sound/soc/cirrus/ep93xx-ac97.c +++ b/sound/soc/cirrus/ep93xx-ac97.c | |||
@@ -405,7 +405,6 @@ static int ep93xx_ac97_probe(struct platform_device *pdev) | |||
405 | fail: | 405 | fail: |
406 | platform_set_drvdata(pdev, NULL); | 406 | platform_set_drvdata(pdev, NULL); |
407 | ep93xx_ac97_info = NULL; | 407 | ep93xx_ac97_info = NULL; |
408 | dev_set_drvdata(&pdev->dev, NULL); | ||
409 | return ret; | 408 | return ret; |
410 | } | 409 | } |
411 | 410 | ||
@@ -420,7 +419,6 @@ static int ep93xx_ac97_remove(struct platform_device *pdev) | |||
420 | 419 | ||
421 | platform_set_drvdata(pdev, NULL); | 420 | platform_set_drvdata(pdev, NULL); |
422 | ep93xx_ac97_info = NULL; | 421 | ep93xx_ac97_info = NULL; |
423 | dev_set_drvdata(&pdev->dev, NULL); | ||
424 | 422 | ||
425 | return 0; | 423 | return 0; |
426 | } | 424 | } |
diff --git a/sound/soc/codecs/stac9766.c b/sound/soc/codecs/stac9766.c index 2eda85ba79ac..cbc7ae322324 100644 --- a/sound/soc/codecs/stac9766.c +++ b/sound/soc/codecs/stac9766.c | |||
@@ -28,8 +28,6 @@ | |||
28 | 28 | ||
29 | #include "stac9766.h" | 29 | #include "stac9766.h" |
30 | 30 | ||
31 | #define STAC9766_VERSION "0.10" | ||
32 | |||
33 | /* | 31 | /* |
34 | * STAC9766 register cache | 32 | * STAC9766 register cache |
35 | */ | 33 | */ |
@@ -338,8 +336,6 @@ static int stac9766_codec_probe(struct snd_soc_codec *codec) | |||
338 | { | 336 | { |
339 | int ret = 0; | 337 | int ret = 0; |
340 | 338 | ||
341 | printk(KERN_INFO "STAC9766 SoC Audio Codec %s\n", STAC9766_VERSION); | ||
342 | |||
343 | ret = snd_soc_new_ac97_codec(codec, &soc_ac97_ops, 0); | 339 | ret = snd_soc_new_ac97_codec(codec, &soc_ac97_ops, 0); |
344 | if (ret < 0) | 340 | if (ret < 0) |
345 | goto codec_err; | 341 | goto codec_err; |
diff --git a/sound/soc/nuc900/nuc900-ac97.c b/sound/soc/nuc900/nuc900-ac97.c index fe3285ceaf5b..8dea4c1fd997 100644 --- a/sound/soc/nuc900/nuc900-ac97.c +++ b/sound/soc/nuc900/nuc900-ac97.c | |||
@@ -326,41 +326,32 @@ static int nuc900_ac97_drvprobe(struct platform_device *pdev) | |||
326 | if (nuc900_ac97_data) | 326 | if (nuc900_ac97_data) |
327 | return -EBUSY; | 327 | return -EBUSY; |
328 | 328 | ||
329 | nuc900_audio = kzalloc(sizeof(struct nuc900_audio), GFP_KERNEL); | 329 | nuc900_audio = devm_kzalloc(&pdev->dev, sizeof(struct nuc900_audio), |
330 | GFP_KERNEL); | ||
330 | if (!nuc900_audio) | 331 | if (!nuc900_audio) |
331 | return -ENOMEM; | 332 | return -ENOMEM; |
332 | 333 | ||
333 | spin_lock_init(&nuc900_audio->lock); | 334 | spin_lock_init(&nuc900_audio->lock); |
334 | 335 | ||
335 | nuc900_audio->res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 336 | nuc900_audio->res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
336 | if (!nuc900_audio->res) { | 337 | if (!nuc900_audio->res) |
337 | ret = -ENODEV; | 338 | return ret; |
338 | goto out0; | ||
339 | } | ||
340 | 339 | ||
341 | if (!request_mem_region(nuc900_audio->res->start, | 340 | nuc900_audio->mmio = devm_ioremap_resource(&pdev->dev, |
342 | resource_size(nuc900_audio->res), pdev->name)) { | 341 | nuc900_audio->res); |
343 | ret = -EBUSY; | 342 | if (IS_ERR(nuc900_audio->mmio)) |
344 | goto out0; | 343 | return PTR_ERR(nuc900_audio->mmio); |
345 | } | ||
346 | |||
347 | nuc900_audio->mmio = ioremap(nuc900_audio->res->start, | ||
348 | resource_size(nuc900_audio->res)); | ||
349 | if (!nuc900_audio->mmio) { | ||
350 | ret = -ENOMEM; | ||
351 | goto out1; | ||
352 | } | ||
353 | 344 | ||
354 | nuc900_audio->clk = clk_get(&pdev->dev, NULL); | 345 | nuc900_audio->clk = devm_clk_get(&pdev->dev, NULL); |
355 | if (IS_ERR(nuc900_audio->clk)) { | 346 | if (IS_ERR(nuc900_audio->clk)) { |
356 | ret = PTR_ERR(nuc900_audio->clk); | 347 | ret = PTR_ERR(nuc900_audio->clk); |
357 | goto out2; | 348 | goto out; |
358 | } | 349 | } |
359 | 350 | ||
360 | nuc900_audio->irq_num = platform_get_irq(pdev, 0); | 351 | nuc900_audio->irq_num = platform_get_irq(pdev, 0); |
361 | if (!nuc900_audio->irq_num) { | 352 | if (!nuc900_audio->irq_num) { |
362 | ret = -EBUSY; | 353 | ret = -EBUSY; |
363 | goto out3; | 354 | goto out; |
364 | } | 355 | } |
365 | 356 | ||
366 | nuc900_ac97_data = nuc900_audio; | 357 | nuc900_ac97_data = nuc900_audio; |
@@ -368,22 +359,14 @@ static int nuc900_ac97_drvprobe(struct platform_device *pdev) | |||
368 | ret = snd_soc_register_component(&pdev->dev, &nuc900_ac97_component, | 359 | ret = snd_soc_register_component(&pdev->dev, &nuc900_ac97_component, |
369 | &nuc900_ac97_dai, 1); | 360 | &nuc900_ac97_dai, 1); |
370 | if (ret) | 361 | if (ret) |
371 | goto out3; | 362 | goto out; |
372 | 363 | ||
373 | /* enbale ac97 multifunction pin */ | 364 | /* enbale ac97 multifunction pin */ |
374 | mfp_set_groupg(nuc900_audio->dev, NULL); | 365 | mfp_set_groupg(nuc900_audio->dev, NULL); |
375 | 366 | ||
376 | return 0; | 367 | return 0; |
377 | 368 | ||
378 | out3: | 369 | out: |
379 | clk_put(nuc900_audio->clk); | ||
380 | out2: | ||
381 | iounmap(nuc900_audio->mmio); | ||
382 | out1: | ||
383 | release_mem_region(nuc900_audio->res->start, | ||
384 | resource_size(nuc900_audio->res)); | ||
385 | out0: | ||
386 | kfree(nuc900_audio); | ||
387 | return ret; | 370 | return ret; |
388 | } | 371 | } |
389 | 372 | ||
@@ -391,12 +374,6 @@ static int nuc900_ac97_drvremove(struct platform_device *pdev) | |||
391 | { | 374 | { |
392 | snd_soc_unregister_component(&pdev->dev); | 375 | snd_soc_unregister_component(&pdev->dev); |
393 | 376 | ||
394 | clk_put(nuc900_ac97_data->clk); | ||
395 | iounmap(nuc900_ac97_data->mmio); | ||
396 | release_mem_region(nuc900_ac97_data->res->start, | ||
397 | resource_size(nuc900_ac97_data->res)); | ||
398 | |||
399 | kfree(nuc900_ac97_data); | ||
400 | nuc900_ac97_data = NULL; | 377 | nuc900_ac97_data = NULL; |
401 | 378 | ||
402 | return 0; | 379 | return 0; |
diff --git a/sound/soc/samsung/ac97.c b/sound/soc/samsung/ac97.c index cb88ead98917..04d7fd461484 100644 --- a/sound/soc/samsung/ac97.c +++ b/sound/soc/samsung/ac97.c | |||
@@ -417,11 +417,9 @@ static int s3c_ac97_probe(struct platform_device *pdev) | |||
417 | return -ENXIO; | 417 | return -ENXIO; |
418 | } | 418 | } |
419 | 419 | ||
420 | if (!request_mem_region(mem_res->start, | 420 | s3c_ac97.regs = devm_ioremap_resource(&pdev->dev, mem_res); |
421 | resource_size(mem_res), "ac97")) { | 421 | if (IS_ERR(s3c_ac97.regs)) |
422 | dev_err(&pdev->dev, "Unable to request register region\n"); | 422 | return PTR_ERR(s3c_ac97.regs); |
423 | return -EBUSY; | ||
424 | } | ||
425 | 423 | ||
426 | s3c_ac97_pcm_out.channel = dmatx_res->start; | 424 | s3c_ac97_pcm_out.channel = dmatx_res->start; |
427 | s3c_ac97_pcm_out.dma_addr = mem_res->start + S3C_AC97_PCM_DATA; | 425 | s3c_ac97_pcm_out.dma_addr = mem_res->start + S3C_AC97_PCM_DATA; |
@@ -433,14 +431,7 @@ static int s3c_ac97_probe(struct platform_device *pdev) | |||
433 | init_completion(&s3c_ac97.done); | 431 | init_completion(&s3c_ac97.done); |
434 | mutex_init(&s3c_ac97.lock); | 432 | mutex_init(&s3c_ac97.lock); |
435 | 433 | ||
436 | s3c_ac97.regs = ioremap(mem_res->start, resource_size(mem_res)); | 434 | s3c_ac97.ac97_clk = devm_clk_get(&pdev->dev, "ac97"); |
437 | if (s3c_ac97.regs == NULL) { | ||
438 | dev_err(&pdev->dev, "Unable to ioremap register region\n"); | ||
439 | ret = -ENXIO; | ||
440 | goto err1; | ||
441 | } | ||
442 | |||
443 | s3c_ac97.ac97_clk = clk_get(&pdev->dev, "ac97"); | ||
444 | if (IS_ERR(s3c_ac97.ac97_clk)) { | 435 | if (IS_ERR(s3c_ac97.ac97_clk)) { |
445 | dev_err(&pdev->dev, "ac97 failed to get ac97_clock\n"); | 436 | dev_err(&pdev->dev, "ac97 failed to get ac97_clock\n"); |
446 | ret = -ENODEV; | 437 | ret = -ENODEV; |
@@ -480,18 +471,14 @@ err5: | |||
480 | err4: | 471 | err4: |
481 | err3: | 472 | err3: |
482 | clk_disable_unprepare(s3c_ac97.ac97_clk); | 473 | clk_disable_unprepare(s3c_ac97.ac97_clk); |
483 | clk_put(s3c_ac97.ac97_clk); | ||
484 | err2: | 474 | err2: |
485 | iounmap(s3c_ac97.regs); | ||
486 | err1: | ||
487 | release_mem_region(mem_res->start, resource_size(mem_res)); | ||
488 | 475 | ||
489 | return ret; | 476 | return ret; |
490 | } | 477 | } |
491 | 478 | ||
492 | static int s3c_ac97_remove(struct platform_device *pdev) | 479 | static int s3c_ac97_remove(struct platform_device *pdev) |
493 | { | 480 | { |
494 | struct resource *mem_res, *irq_res; | 481 | struct resource *irq_res; |
495 | 482 | ||
496 | asoc_dma_platform_unregister(&pdev->dev); | 483 | asoc_dma_platform_unregister(&pdev->dev); |
497 | snd_soc_unregister_component(&pdev->dev); | 484 | snd_soc_unregister_component(&pdev->dev); |
@@ -501,13 +488,6 @@ static int s3c_ac97_remove(struct platform_device *pdev) | |||
501 | free_irq(irq_res->start, NULL); | 488 | free_irq(irq_res->start, NULL); |
502 | 489 | ||
503 | clk_disable_unprepare(s3c_ac97.ac97_clk); | 490 | clk_disable_unprepare(s3c_ac97.ac97_clk); |
504 | clk_put(s3c_ac97.ac97_clk); | ||
505 | |||
506 | iounmap(s3c_ac97.regs); | ||
507 | |||
508 | mem_res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | ||
509 | if (mem_res) | ||
510 | release_mem_region(mem_res->start, resource_size(mem_res)); | ||
511 | 491 | ||
512 | return 0; | 492 | return 0; |
513 | } | 493 | } |
diff --git a/sound/soc/tegra/tegra20_ac97.c b/sound/soc/tegra/tegra20_ac97.c index 2f70ea7f6618..48037f784a86 100644 --- a/sound/soc/tegra/tegra20_ac97.c +++ b/sound/soc/tegra/tegra20_ac97.c | |||
@@ -327,7 +327,7 @@ static int tegra20_ac97_platform_probe(struct platform_device *pdev) | |||
327 | } | 327 | } |
328 | dev_set_drvdata(&pdev->dev, ac97); | 328 | dev_set_drvdata(&pdev->dev, ac97); |
329 | 329 | ||
330 | ac97->clk_ac97 = clk_get(&pdev->dev, NULL); | 330 | ac97->clk_ac97 = devm_clk_get(&pdev->dev, NULL); |
331 | if (IS_ERR(ac97->clk_ac97)) { | 331 | if (IS_ERR(ac97->clk_ac97)) { |
332 | dev_err(&pdev->dev, "Can't retrieve ac97 clock\n"); | 332 | dev_err(&pdev->dev, "Can't retrieve ac97 clock\n"); |
333 | ret = PTR_ERR(ac97->clk_ac97); | 333 | ret = PTR_ERR(ac97->clk_ac97); |
@@ -341,18 +341,10 @@ static int tegra20_ac97_platform_probe(struct platform_device *pdev) | |||
341 | goto err_clk_put; | 341 | goto err_clk_put; |
342 | } | 342 | } |
343 | 343 | ||
344 | memregion = devm_request_mem_region(&pdev->dev, mem->start, | 344 | regs = devm_ioremap_resource(&pdev->dev, mem); |
345 | resource_size(mem), DRV_NAME); | 345 | if (IS_ERR(regs)) { |
346 | if (!memregion) { | 346 | ret = PTR_ERR(regs); |
347 | dev_err(&pdev->dev, "Memory region already claimed\n"); | 347 | dev_err(&pdev->dev, "ioremap failed: %d\n", ret); |
348 | ret = -EBUSY; | ||
349 | goto err_clk_put; | ||
350 | } | ||
351 | |||
352 | regs = devm_ioremap(&pdev->dev, mem->start, resource_size(mem)); | ||
353 | if (!regs) { | ||
354 | dev_err(&pdev->dev, "ioremap failed\n"); | ||
355 | ret = -ENOMEM; | ||
356 | goto err_clk_put; | 348 | goto err_clk_put; |
357 | } | 349 | } |
358 | 350 | ||
@@ -403,23 +395,9 @@ static int tegra20_ac97_platform_probe(struct platform_device *pdev) | |||
403 | ac97->capture_dma_data.maxburst = 4; | 395 | ac97->capture_dma_data.maxburst = 4; |
404 | ac97->capture_dma_data.slave_id = of_dma[0]; | 396 | ac97->capture_dma_data.slave_id = of_dma[0]; |
405 | 397 | ||
406 | ret = snd_soc_register_component(&pdev->dev, &tegra20_ac97_component, | ||
407 | &tegra20_ac97_dai, 1); | ||
408 | if (ret) { | ||
409 | dev_err(&pdev->dev, "Could not register DAI: %d\n", ret); | ||
410 | ret = -ENOMEM; | ||
411 | goto err_clk_put; | ||
412 | } | ||
413 | |||
414 | ret = tegra_pcm_platform_register(&pdev->dev); | ||
415 | if (ret) { | ||
416 | dev_err(&pdev->dev, "Could not register PCM: %d\n", ret); | ||
417 | goto err_unregister_component; | ||
418 | } | ||
419 | |||
420 | ret = tegra_asoc_utils_init(&ac97->util_data, &pdev->dev); | 398 | ret = tegra_asoc_utils_init(&ac97->util_data, &pdev->dev); |
421 | if (ret) | 399 | if (ret) |
422 | goto err_unregister_pcm; | 400 | goto err_clk_put; |
423 | 401 | ||
424 | ret = tegra_asoc_utils_set_ac97_rate(&ac97->util_data); | 402 | ret = tegra_asoc_utils_set_ac97_rate(&ac97->util_data); |
425 | if (ret) | 403 | if (ret) |
@@ -431,19 +409,32 @@ static int tegra20_ac97_platform_probe(struct platform_device *pdev) | |||
431 | goto err_asoc_utils_fini; | 409 | goto err_asoc_utils_fini; |
432 | } | 410 | } |
433 | 411 | ||
412 | ret = snd_soc_register_component(&pdev->dev, &tegra20_ac97_component, | ||
413 | &tegra20_ac97_dai, 1); | ||
414 | if (ret) { | ||
415 | dev_err(&pdev->dev, "Could not register DAI: %d\n", ret); | ||
416 | ret = -ENOMEM; | ||
417 | goto err_asoc_utils_fini; | ||
418 | } | ||
419 | |||
420 | ret = tegra_pcm_platform_register(&pdev->dev); | ||
421 | if (ret) { | ||
422 | dev_err(&pdev->dev, "Could not register PCM: %d\n", ret); | ||
423 | goto err_unregister_component; | ||
424 | } | ||
425 | |||
434 | /* XXX: crufty ASoC AC97 API - only one AC97 codec allowed */ | 426 | /* XXX: crufty ASoC AC97 API - only one AC97 codec allowed */ |
435 | workdata = ac97; | 427 | workdata = ac97; |
436 | 428 | ||
437 | return 0; | 429 | return 0; |
438 | 430 | ||
439 | err_asoc_utils_fini: | ||
440 | tegra_asoc_utils_fini(&ac97->util_data); | ||
441 | err_unregister_pcm: | 431 | err_unregister_pcm: |
442 | tegra_pcm_platform_unregister(&pdev->dev); | 432 | tegra_pcm_platform_unregister(&pdev->dev); |
443 | err_unregister_component: | 433 | err_unregister_component: |
444 | snd_soc_unregister_component(&pdev->dev); | 434 | snd_soc_unregister_component(&pdev->dev); |
435 | err_asoc_utils_fini: | ||
436 | tegra_asoc_utils_fini(&ac97->util_data); | ||
445 | err_clk_put: | 437 | err_clk_put: |
446 | clk_put(ac97->clk_ac97); | ||
447 | err: | 438 | err: |
448 | return ret; | 439 | return ret; |
449 | } | 440 | } |
@@ -458,7 +449,6 @@ static int tegra20_ac97_platform_remove(struct platform_device *pdev) | |||
458 | tegra_asoc_utils_fini(&ac97->util_data); | 449 | tegra_asoc_utils_fini(&ac97->util_data); |
459 | 450 | ||
460 | clk_disable_unprepare(ac97->clk_ac97); | 451 | clk_disable_unprepare(ac97->clk_ac97); |
461 | clk_put(ac97->clk_ac97); | ||
462 | 452 | ||
463 | return 0; | 453 | return 0; |
464 | } | 454 | } |
diff --git a/sound/soc/txx9/txx9aclc-ac97.c b/sound/soc/txx9/txx9aclc-ac97.c index 8a2840304d28..8ee8d4220014 100644 --- a/sound/soc/txx9/txx9aclc-ac97.c +++ b/sound/soc/txx9/txx9aclc-ac97.c | |||
@@ -188,9 +188,9 @@ static int txx9aclc_ac97_dev_probe(struct platform_device *pdev) | |||
188 | if (!r) | 188 | if (!r) |
189 | return -EBUSY; | 189 | return -EBUSY; |
190 | 190 | ||
191 | if (!devm_request_mem_region(&pdev->dev, r->start, resource_size(r), | 191 | drvdata->base = devm_ioremap_resource(&pdev->dev, r); |
192 | dev_name(&pdev->dev))) | 192 | if (IS_ERR(drvdata->base)) |
193 | return -EBUSY; | 193 | return PTR_ERR(drvdata->base); |
194 | 194 | ||
195 | drvdata = devm_kzalloc(&pdev->dev, sizeof(*drvdata), GFP_KERNEL); | 195 | drvdata = devm_kzalloc(&pdev->dev, sizeof(*drvdata), GFP_KERNEL); |
196 | if (!drvdata) | 196 | if (!drvdata) |
@@ -201,9 +201,6 @@ static int txx9aclc_ac97_dev_probe(struct platform_device *pdev) | |||
201 | r->start >= TXX9_DIRECTMAP_BASE && | 201 | r->start >= TXX9_DIRECTMAP_BASE && |
202 | r->start < TXX9_DIRECTMAP_BASE + 0x400000) | 202 | r->start < TXX9_DIRECTMAP_BASE + 0x400000) |
203 | drvdata->physbase |= 0xf00000000ull; | 203 | drvdata->physbase |= 0xf00000000ull; |
204 | drvdata->base = devm_ioremap(&pdev->dev, r->start, resource_size(r)); | ||
205 | if (!drvdata->base) | ||
206 | return -EBUSY; | ||
207 | err = devm_request_irq(&pdev->dev, irq, txx9aclc_ac97_irq, | 204 | err = devm_request_irq(&pdev->dev, irq, txx9aclc_ac97_irq, |
208 | 0, dev_name(&pdev->dev), drvdata); | 205 | 0, dev_name(&pdev->dev), drvdata); |
209 | if (err < 0) | 206 | if (err < 0) |