ASoC: Complete initialisation before registering Samsung PCM DAI
authorMark Brown <broonie@opensource.wolfsonmicro.com>
Mon, 12 Dec 2011 11:05:58 +0000 (19:05 +0800)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Wed, 14 Dec 2011 05:53:47 +0000 (13:53 +0800)
Otherwise there's a race where the DAI might get used without everything
having been set up.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Sangbeom Kim <sbkim73@samsung.com>
sound/soc/samsung/pcm.c

index beef63fca052bc8f66595e764b8bc6bafb84e579..3a29c268ea5d2d70dacb5118b9b5df62aeaa433a 100644 (file)
@@ -570,12 +570,6 @@ static __devinit int s3c_pcm_dev_probe(struct platform_device *pdev)
        }
        clk_enable(pcm->pclk);
 
-       ret = snd_soc_register_dai(&pdev->dev, &s3c_pcm_dai[pdev->id]);
-       if (ret != 0) {
-               dev_err(&pdev->dev, "failed to get pcm_clock\n");
-               goto err5;
-       }
-
        s3c_pcm_stereo_in[pdev->id].dma_addr = mem_res->start
                                                        + S3C_PCM_RXFIFO;
        s3c_pcm_stereo_out[pdev->id].dma_addr = mem_res->start
@@ -587,6 +581,12 @@ static __devinit int s3c_pcm_dev_probe(struct platform_device *pdev)
        pcm->dma_capture = &s3c_pcm_stereo_in[pdev->id];
        pcm->dma_playback = &s3c_pcm_stereo_out[pdev->id];
 
+       ret = snd_soc_register_dai(&pdev->dev, &s3c_pcm_dai[pdev->id]);
+       if (ret != 0) {
+               dev_err(&pdev->dev, "failed to get register DAI: %d\n", ret);
+               goto err5;
+       }
+
        return 0;
 
 err5: