diff options
author | Sylwester Nawrocki <s.nawrocki@samsung.com> | 2016-11-02 07:28:17 -0400 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2016-11-02 11:15:01 -0400 |
commit | d8dbb4b327a84a7d373c8c4bf173bcab22f102ff (patch) | |
tree | 05d9aab93f1b6ca90f17f2653b273f431012ed52 | |
parent | 990fcfefc925a959e204a44fc479efcc236ebced (diff) |
ASoC: samsung: pcm: Conversion to use devm_ioremap_resource()
This simplifies the code a bit and removes a hard coded IO memory
region size.
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
-rw-r--r-- | sound/soc/samsung/pcm.c | 60 |
1 files changed, 16 insertions, 44 deletions
diff --git a/sound/soc/samsung/pcm.c b/sound/soc/samsung/pcm.c index c484985812ed..d50a6377c23d 100644 --- a/sound/soc/samsung/pcm.c +++ b/sound/soc/samsung/pcm.c | |||
@@ -499,13 +499,6 @@ static int s3c_pcm_dev_probe(struct platform_device *pdev) | |||
499 | 499 | ||
500 | pcm_pdata = pdev->dev.platform_data; | 500 | pcm_pdata = pdev->dev.platform_data; |
501 | 501 | ||
502 | /* Check for availability of necessary resource */ | ||
503 | mem_res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | ||
504 | if (!mem_res) { | ||
505 | dev_err(&pdev->dev, "Unable to get register resource\n"); | ||
506 | return -ENXIO; | ||
507 | } | ||
508 | |||
509 | if (pcm_pdata && pcm_pdata->cfg_gpio && pcm_pdata->cfg_gpio(pdev)) { | 502 | if (pcm_pdata && pcm_pdata->cfg_gpio && pcm_pdata->cfg_gpio(pdev)) { |
510 | dev_err(&pdev->dev, "Unable to configure gpio\n"); | 503 | dev_err(&pdev->dev, "Unable to configure gpio\n"); |
511 | return -EINVAL; | 504 | return -EINVAL; |
@@ -519,36 +512,26 @@ static int s3c_pcm_dev_probe(struct platform_device *pdev) | |||
519 | /* Default is 128fs */ | 512 | /* Default is 128fs */ |
520 | pcm->sclk_per_fs = 128; | 513 | pcm->sclk_per_fs = 128; |
521 | 514 | ||
515 | mem_res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | ||
516 | pcm->regs = devm_ioremap_resource(&pdev->dev, mem_res); | ||
517 | if (IS_ERR(pcm->regs)) | ||
518 | return PTR_ERR(pcm->regs); | ||
519 | |||
522 | pcm->cclk = devm_clk_get(&pdev->dev, "audio-bus"); | 520 | pcm->cclk = devm_clk_get(&pdev->dev, "audio-bus"); |
523 | if (IS_ERR(pcm->cclk)) { | 521 | if (IS_ERR(pcm->cclk)) { |
524 | dev_err(&pdev->dev, "failed to get audio-bus\n"); | 522 | dev_err(&pdev->dev, "failed to get audio-bus clock\n"); |
525 | ret = PTR_ERR(pcm->cclk); | 523 | return PTR_ERR(pcm->cclk); |
526 | goto err1; | ||
527 | } | 524 | } |
528 | clk_prepare_enable(pcm->cclk); | 525 | clk_prepare_enable(pcm->cclk); |
529 | 526 | ||
530 | /* record our pcm structure for later use in the callbacks */ | 527 | /* record our pcm structure for later use in the callbacks */ |
531 | dev_set_drvdata(&pdev->dev, pcm); | 528 | dev_set_drvdata(&pdev->dev, pcm); |
532 | 529 | ||
533 | if (!request_mem_region(mem_res->start, | ||
534 | resource_size(mem_res), "samsung-pcm")) { | ||
535 | dev_err(&pdev->dev, "Unable to request register region\n"); | ||
536 | ret = -EBUSY; | ||
537 | goto err2; | ||
538 | } | ||
539 | |||
540 | pcm->regs = ioremap(mem_res->start, 0x100); | ||
541 | if (pcm->regs == NULL) { | ||
542 | dev_err(&pdev->dev, "cannot ioremap registers\n"); | ||
543 | ret = -ENXIO; | ||
544 | goto err3; | ||
545 | } | ||
546 | |||
547 | pcm->pclk = devm_clk_get(&pdev->dev, "pcm"); | 530 | pcm->pclk = devm_clk_get(&pdev->dev, "pcm"); |
548 | if (IS_ERR(pcm->pclk)) { | 531 | if (IS_ERR(pcm->pclk)) { |
549 | dev_err(&pdev->dev, "failed to get pcm_clock\n"); | 532 | dev_err(&pdev->dev, "failed to get pcm clock\n"); |
550 | ret = -ENOENT; | 533 | ret = PTR_ERR(pcm->pclk); |
551 | goto err4; | 534 | goto err_dis_cclk; |
552 | } | 535 | } |
553 | clk_prepare_enable(pcm->pclk); | 536 | clk_prepare_enable(pcm->pclk); |
554 | 537 | ||
@@ -569,7 +552,7 @@ static int s3c_pcm_dev_probe(struct platform_device *pdev) | |||
569 | NULL, NULL); | 552 | NULL, NULL); |
570 | if (ret) { | 553 | if (ret) { |
571 | dev_err(&pdev->dev, "failed to get register DMA: %d\n", ret); | 554 | dev_err(&pdev->dev, "failed to get register DMA: %d\n", ret); |
572 | goto err5; | 555 | goto err_dis_pclk; |
573 | } | 556 | } |
574 | 557 | ||
575 | pm_runtime_enable(&pdev->dev); | 558 | pm_runtime_enable(&pdev->dev); |
@@ -578,36 +561,25 @@ static int s3c_pcm_dev_probe(struct platform_device *pdev) | |||
578 | &s3c_pcm_dai[pdev->id], 1); | 561 | &s3c_pcm_dai[pdev->id], 1); |
579 | if (ret != 0) { | 562 | if (ret != 0) { |
580 | dev_err(&pdev->dev, "failed to get register DAI: %d\n", ret); | 563 | dev_err(&pdev->dev, "failed to get register DAI: %d\n", ret); |
581 | goto err6; | 564 | goto err_dis_pm; |
582 | } | 565 | } |
583 | 566 | ||
584 | return 0; | 567 | return 0; |
585 | err6: | 568 | |
569 | err_dis_pm: | ||
586 | pm_runtime_disable(&pdev->dev); | 570 | pm_runtime_disable(&pdev->dev); |
587 | err5: | 571 | err_dis_pclk: |
588 | clk_disable_unprepare(pcm->pclk); | 572 | clk_disable_unprepare(pcm->pclk); |
589 | err4: | 573 | err_dis_cclk: |
590 | iounmap(pcm->regs); | ||
591 | err3: | ||
592 | release_mem_region(mem_res->start, resource_size(mem_res)); | ||
593 | err2: | ||
594 | clk_disable_unprepare(pcm->cclk); | 574 | clk_disable_unprepare(pcm->cclk); |
595 | err1: | ||
596 | return ret; | 575 | return ret; |
597 | } | 576 | } |
598 | 577 | ||
599 | static int s3c_pcm_dev_remove(struct platform_device *pdev) | 578 | static int s3c_pcm_dev_remove(struct platform_device *pdev) |
600 | { | 579 | { |
601 | struct s3c_pcm_info *pcm = &s3c_pcm[pdev->id]; | 580 | struct s3c_pcm_info *pcm = &s3c_pcm[pdev->id]; |
602 | struct resource *mem_res; | ||
603 | 581 | ||
604 | pm_runtime_disable(&pdev->dev); | 582 | pm_runtime_disable(&pdev->dev); |
605 | |||
606 | iounmap(pcm->regs); | ||
607 | |||
608 | mem_res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | ||
609 | release_mem_region(mem_res->start, resource_size(mem_res)); | ||
610 | |||
611 | clk_disable_unprepare(pcm->cclk); | 583 | clk_disable_unprepare(pcm->cclk); |
612 | clk_disable_unprepare(pcm->pclk); | 584 | clk_disable_unprepare(pcm->pclk); |
613 | 585 | ||