ASoC: utils - Add support for a dummy codec driver.
authorLiam Girdwood <lrg@ti.com>
Mon, 9 Jan 2012 12:36:24 +0000 (12:36 +0000)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Fri, 20 Jan 2012 13:58:27 +0000 (13:58 +0000)
This is useful to create dummy codec devices where we need to have some
DAI links without a real Codec. e.g. could be used to represent dumb FM,
MODEM, etc

This is also used by dynamic PCM for DAI links that have no codec.

Signed-off-by: Liam Girdwood <lrg@ti.com>
[Fixed the indentation -- broonie]
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
sound/soc/soc-utils.c

index 4220bb0..6005370 100644 (file)
@@ -89,14 +89,32 @@ static struct snd_soc_platform_driver dummy_platform = {
        .ops = &dummy_dma_ops,
 };
 
+static struct snd_soc_codec_driver dummy_codec;
+static struct snd_soc_dai_driver dummy_dai = {
+       .name = "snd-soc-dummy-dai",
+};
+
 static __devinit int snd_soc_dummy_probe(struct platform_device *pdev)
 {
-       return snd_soc_register_platform(&pdev->dev, &dummy_platform);
+       int ret;
+
+       ret = snd_soc_register_codec(&pdev->dev, &dummy_codec, &dummy_dai, 1);
+       if (ret < 0)
+               return ret;
+
+       ret = snd_soc_register_platform(&pdev->dev, &dummy_platform);
+       if (ret < 0) {
+               snd_soc_unregister_codec(&pdev->dev);
+               return ret;
+       }
+
+       return ret;
 }
 
 static __devexit int snd_soc_dummy_remove(struct platform_device *pdev)
 {
        snd_soc_unregister_platform(&pdev->dev);
+       snd_soc_unregister_codec(&pdev->dev);
 
        return 0;
 }