aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/codecs/jz4740.c
diff options
context:
space:
mode:
authorLars-Peter Clausen <lars@metafoo.de>2012-10-27 11:15:07 -0400
committerMark Brown <broonie@opensource.wolfsonmicro.com>2012-10-27 16:31:42 -0400
commit355d74b59cb361f9c865ed19aad6bed17c8febd5 (patch)
tree5df02a6a56b3639b9624e43d9b32d8c2b0fc951b /sound/soc/codecs/jz4740.c
parenta484a9a338b386e26d9dac14a76d59afa4e8bb3e (diff)
ASoC: jz4740-codec: Use devm_request_and_ioremap
Use devm_request_and_ioremap for requesting and mapping the IO region. This makes the code a bit smaller and simpler. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'sound/soc/codecs/jz4740.c')
-rw-r--r--sound/soc/codecs/jz4740.c41
1 files changed, 4 insertions, 37 deletions
diff --git a/sound/soc/codecs/jz4740.c b/sound/soc/codecs/jz4740.c
index 51b4f99bbd6a..1661202e4864 100644
--- a/sound/soc/codecs/jz4740.c
+++ b/sound/soc/codecs/jz4740.c
@@ -74,7 +74,6 @@ static const uint32_t jz4740_codec_regs[] = {
74 74
75struct jz4740_codec { 75struct jz4740_codec {
76 void __iomem *base; 76 void __iomem *base;
77 struct resource *mem;
78}; 77};
79 78
80static unsigned int jz4740_codec_read(struct snd_soc_codec *codec, 79static unsigned int jz4740_codec_read(struct snd_soc_codec *codec,
@@ -371,56 +370,24 @@ static int __devinit jz4740_codec_probe(struct platform_device *pdev)
371 return -ENOMEM; 370 return -ENOMEM;
372 371
373 mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); 372 mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
374 if (!mem) { 373 jz4740_codec->base = devm_request_and_ioremap(&pdev->dev, mem);
375 dev_err(&pdev->dev, "Failed to get mmio memory resource\n"); 374 if (!jz4740_codec->base)
376 ret = -ENOENT; 375 return -EBUSY;
377 goto err_out;
378 }
379
380 mem = request_mem_region(mem->start, resource_size(mem), pdev->name);
381 if (!mem) {
382 dev_err(&pdev->dev, "Failed to request mmio memory region\n");
383 ret = -EBUSY;
384 goto err_out;
385 }
386
387 jz4740_codec->base = ioremap(mem->start, resource_size(mem));
388 if (!jz4740_codec->base) {
389 dev_err(&pdev->dev, "Failed to ioremap mmio memory\n");
390 ret = -EBUSY;
391 goto err_release_mem_region;
392 }
393 jz4740_codec->mem = mem;
394 376
395 platform_set_drvdata(pdev, jz4740_codec); 377 platform_set_drvdata(pdev, jz4740_codec);
396 378
397 ret = snd_soc_register_codec(&pdev->dev, 379 ret = snd_soc_register_codec(&pdev->dev,
398 &soc_codec_dev_jz4740_codec, &jz4740_codec_dai, 1); 380 &soc_codec_dev_jz4740_codec, &jz4740_codec_dai, 1);
399 if (ret) { 381 if (ret)
400 dev_err(&pdev->dev, "Failed to register codec\n"); 382 dev_err(&pdev->dev, "Failed to register codec\n");
401 goto err_iounmap;
402 }
403
404 return 0;
405 383
406err_iounmap:
407 iounmap(jz4740_codec->base);
408err_release_mem_region:
409 release_mem_region(mem->start, resource_size(mem));
410err_out:
411 return ret; 384 return ret;
412} 385}
413 386
414static int __devexit jz4740_codec_remove(struct platform_device *pdev) 387static int __devexit jz4740_codec_remove(struct platform_device *pdev)
415{ 388{
416 struct jz4740_codec *jz4740_codec = platform_get_drvdata(pdev);
417 struct resource *mem = jz4740_codec->mem;
418
419 snd_soc_unregister_codec(&pdev->dev); 389 snd_soc_unregister_codec(&pdev->dev);
420 390
421 iounmap(jz4740_codec->base);
422 release_mem_region(mem->start, resource_size(mem));
423
424 platform_set_drvdata(pdev, NULL); 391 platform_set_drvdata(pdev, NULL);
425 392
426 return 0; 393 return 0;