diff options
Diffstat (limited to 'sound/soc/samsung/pcm.c')
-rw-r--r-- | sound/soc/samsung/pcm.c | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/sound/soc/samsung/pcm.c b/sound/soc/samsung/pcm.c index c86081992dfd..ecd509048771 100644 --- a/sound/soc/samsung/pcm.c +++ b/sound/soc/samsung/pcm.c | |||
@@ -543,7 +543,7 @@ static __devinit int s3c_pcm_dev_probe(struct platform_device *pdev) | |||
543 | ret = PTR_ERR(pcm->cclk); | 543 | ret = PTR_ERR(pcm->cclk); |
544 | goto err1; | 544 | goto err1; |
545 | } | 545 | } |
546 | clk_enable(pcm->cclk); | 546 | clk_prepare_enable(pcm->cclk); |
547 | 547 | ||
548 | /* record our pcm structure for later use in the callbacks */ | 548 | /* record our pcm structure for later use in the callbacks */ |
549 | dev_set_drvdata(&pdev->dev, pcm); | 549 | dev_set_drvdata(&pdev->dev, pcm); |
@@ -568,7 +568,7 @@ static __devinit int s3c_pcm_dev_probe(struct platform_device *pdev) | |||
568 | ret = -ENOENT; | 568 | ret = -ENOENT; |
569 | goto err4; | 569 | goto err4; |
570 | } | 570 | } |
571 | clk_enable(pcm->pclk); | 571 | clk_prepare_enable(pcm->pclk); |
572 | 572 | ||
573 | s3c_pcm_stereo_in[pdev->id].dma_addr = mem_res->start | 573 | s3c_pcm_stereo_in[pdev->id].dma_addr = mem_res->start |
574 | + S3C_PCM_RXFIFO; | 574 | + S3C_PCM_RXFIFO; |
@@ -589,17 +589,25 @@ static __devinit int s3c_pcm_dev_probe(struct platform_device *pdev) | |||
589 | goto err5; | 589 | goto err5; |
590 | } | 590 | } |
591 | 591 | ||
592 | ret = asoc_dma_platform_register(&pdev->dev); | ||
593 | if (ret) { | ||
594 | dev_err(&pdev->dev, "failed to get register DMA: %d\n", ret); | ||
595 | goto err6; | ||
596 | } | ||
597 | |||
592 | return 0; | 598 | return 0; |
593 | 599 | ||
600 | err6: | ||
601 | snd_soc_unregister_dai(&pdev->dev); | ||
594 | err5: | 602 | err5: |
595 | clk_disable(pcm->pclk); | 603 | clk_disable_unprepare(pcm->pclk); |
596 | clk_put(pcm->pclk); | 604 | clk_put(pcm->pclk); |
597 | err4: | 605 | err4: |
598 | iounmap(pcm->regs); | 606 | iounmap(pcm->regs); |
599 | err3: | 607 | err3: |
600 | release_mem_region(mem_res->start, resource_size(mem_res)); | 608 | release_mem_region(mem_res->start, resource_size(mem_res)); |
601 | err2: | 609 | err2: |
602 | clk_disable(pcm->cclk); | 610 | clk_disable_unprepare(pcm->cclk); |
603 | clk_put(pcm->cclk); | 611 | clk_put(pcm->cclk); |
604 | err1: | 612 | err1: |
605 | return ret; | 613 | return ret; |
@@ -610,6 +618,7 @@ static __devexit int s3c_pcm_dev_remove(struct platform_device *pdev) | |||
610 | struct s3c_pcm_info *pcm = &s3c_pcm[pdev->id]; | 618 | struct s3c_pcm_info *pcm = &s3c_pcm[pdev->id]; |
611 | struct resource *mem_res; | 619 | struct resource *mem_res; |
612 | 620 | ||
621 | asoc_dma_platform_unregister(&pdev->dev); | ||
613 | snd_soc_unregister_dai(&pdev->dev); | 622 | snd_soc_unregister_dai(&pdev->dev); |
614 | 623 | ||
615 | pm_runtime_disable(&pdev->dev); | 624 | pm_runtime_disable(&pdev->dev); |
@@ -619,8 +628,8 @@ static __devexit int s3c_pcm_dev_remove(struct platform_device *pdev) | |||
619 | mem_res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 628 | mem_res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
620 | release_mem_region(mem_res->start, resource_size(mem_res)); | 629 | release_mem_region(mem_res->start, resource_size(mem_res)); |
621 | 630 | ||
622 | clk_disable(pcm->cclk); | 631 | clk_disable_unprepare(pcm->cclk); |
623 | clk_disable(pcm->pclk); | 632 | clk_disable_unprepare(pcm->pclk); |
624 | clk_put(pcm->pclk); | 633 | clk_put(pcm->pclk); |
625 | clk_put(pcm->cclk); | 634 | clk_put(pcm->cclk); |
626 | 635 | ||