ASoC: soc-dai: add snd_soc_dai_compress_new()
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Mon, 22 Jul 2019 01:35:29 +0000 (10:35 +0900)
committerMark Brown <broonie@kernel.org>
Tue, 23 Jul 2019 17:14:25 +0000 (18:14 +0100)
Current ALSA SoC is directly using dai->driver->xxx,
thus, it has deep nested bracket, and it makes code unreadable.
This patch adds new snd_soc_dai_compress_new() and use it.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87h87ehn1a.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
include/sound/soc-dai.h
sound/soc/soc-core.c
sound/soc/soc-dai.c

index 2a11f177ce0135a0ee6aceedc8881f09bfdfa853..0f8b09520020493a4a6e863da815521526162a83 100644 (file)
@@ -166,6 +166,8 @@ void snd_soc_dai_suspend(struct snd_soc_dai *dai);
 void snd_soc_dai_resume(struct snd_soc_dai *dai);
 int snd_soc_dai_probe(struct snd_soc_dai *dai);
 int snd_soc_dai_remove(struct snd_soc_dai *dai);
+int snd_soc_dai_compress_new(struct snd_soc_dai *dai,
+                            struct snd_soc_pcm_runtime *rtd, int num);
 
 struct snd_soc_dai_ops {
        /*
index 727fd342b3fbca1a1ba04afbdc7aa243687a3455..458b090f026a17db2181d5c9432efbd085ac1a23 100644 (file)
@@ -1545,15 +1545,16 @@ static int soc_probe_link_dais(struct snd_soc_card *card,
                        num = rtd->dai_link->id;
        }
 
-       if (cpu_dai->driver->compress_new) {
-               /* create compress_device" */
-               ret = cpu_dai->driver->compress_new(rtd, num);
-               if (ret < 0) {
+       /* create compress_device if possible */
+       ret = snd_soc_dai_compress_new(cpu_dai, rtd, num);
+       if (ret != -ENOTSUPP) {
+               if (ret < 0)
                        dev_err(card->dev, "ASoC: can't create compress %s\n",
                                         dai_link->stream_name);
-                       return ret;
-               }
-       } else if (!dai_link->params) {
+               return ret;
+       }
+
+       if (!dai_link->params) {
                /* create the pcm */
                ret = soc_new_pcm(rtd, num);
                if (ret < 0) {
index 384765c747daebb9593b506f7d69f66f2da5e678..e6f161b9f9759536f6b0d244beaa6f1a54186121 100644 (file)
@@ -379,3 +379,11 @@ int snd_soc_dai_remove(struct snd_soc_dai *dai)
                return dai->driver->remove(dai);
        return 0;
 }
+
+int snd_soc_dai_compress_new(struct snd_soc_dai *dai,
+                            struct snd_soc_pcm_runtime *rtd, int num)
+{
+       if (dai->driver->compress_new)
+               return dai->driver->compress_new(rtd, num);
+       return -ENOTSUPP;
+}