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 | ||
