ASoC: audio-graph-card2.c: remove pre-alloced Codec2Codec space
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Fri, 1 Jul 2022 05:18:27 +0000 (05:18 +0000)
committerMark Brown <broonie@kernel.org>
Fri, 8 Jul 2022 10:51:43 +0000 (11:51 +0100)
Because Codec2Codec settings becomes optional, we don't need to keep
its parameter space when init time. This patch removes its default
memory allocation from simple-card-utils.c, and allocate it at
audio-graph-card2 ondemand.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87edz5s95o.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
include/sound/simple_card_utils.h
sound/soc/generic/audio-graph-card2.c
sound/soc/generic/simple-card-utils.c

index fe2337fde1f4692a189056fad6e6263f4b1086e3..ab55f40896e0a48343afa240c0954549841d21d3 100644 (file)
@@ -51,7 +51,6 @@ struct prop_nums {
        int cpus;
        int codecs;
        int platforms;
-       int c2c;
 };
 
 struct asoc_simple_priv {
@@ -64,7 +63,6 @@ struct asoc_simple_priv {
                struct snd_soc_dai_link_component *platforms;
                struct asoc_simple_data adata;
                struct snd_soc_codec_conf *codec_conf;
-               struct snd_soc_pcm_stream *c2c_conf;
                struct prop_nums num;
                unsigned int mclk_fs;
        } *dai_props;
@@ -75,7 +73,6 @@ struct asoc_simple_priv {
        struct snd_soc_dai_link_component *dlcs;
        struct snd_soc_dai_link_component dummy;
        struct snd_soc_codec_conf *codec_conf;
-       struct snd_soc_pcm_stream *c2c_conf;
        struct gpio_desc *pa_gpio;
        const struct snd_soc_ops *ops;
        unsigned int dpcm_selectable:1;
index 510058c47a921264c0a161a63232406ab3d9edb1..19e31d53422ab323ef779a5aca4c1ad0851e7d19 100644 (file)
@@ -888,8 +888,12 @@ int audio_graph2_link_c2c(struct asoc_simple_priv *priv,
         */
        of_property_read_u32(ports, "rate", &val);
        if (val) {
-               struct simple_dai_props *dai_props = simple_priv_to_props(priv, li->link);
-               struct snd_soc_pcm_stream *c2c_conf = dai_props->c2c_conf;
+               struct device *dev = simple_priv_to_dev(priv);
+               struct snd_soc_pcm_stream *c2c_conf;
+
+               c2c_conf = devm_kzalloc(dev, sizeof(*c2c_conf), GFP_KERNEL);
+               if (!c2c_conf)
+                       goto err1;
 
                c2c_conf->formats       = SNDRV_PCM_FMTBIT_S32_LE; /* update ME */
                c2c_conf->rates         = SNDRV_PCM_RATE_8000_384000;
@@ -930,6 +934,7 @@ err2:
        of_node_put(ep1);
        of_node_put(codec0_port);
        of_node_put(codec1_port);
+err1:
        of_node_put(ports);
        of_node_put(port0);
        of_node_put(port1);
@@ -1093,7 +1098,6 @@ static int graph_count_c2c(struct asoc_simple_priv *priv,
        li->num[li->link].cpus          =
        li->num[li->link].platforms     = graph_counter(codec0);
        li->num[li->link].codecs        = graph_counter(codec1);
-       li->num[li->link].c2c           = 1;
 
        of_node_put(ports);
        of_node_put(port1);
index 7be84c7840cbb91e72b97982766df6c025ea47fa..a761af6b13b62b37e9a3e109775e9ddb2ae55699 100644 (file)
@@ -746,8 +746,7 @@ int asoc_simple_init_priv(struct asoc_simple_priv *priv,
        struct asoc_simple_dai *dais;
        struct snd_soc_dai_link_component *dlcs;
        struct snd_soc_codec_conf *cconf = NULL;
-       struct snd_soc_pcm_stream *c2c_conf = NULL;
-       int i, dai_num = 0, dlc_num = 0, cnf_num = 0, c2c_num = 0;
+       int i, dai_num = 0, dlc_num = 0, cnf_num = 0;
 
        dai_props = devm_kcalloc(dev, li->link, sizeof(*dai_props), GFP_KERNEL);
        dai_link  = devm_kcalloc(dev, li->link, sizeof(*dai_link),  GFP_KERNEL);
@@ -766,8 +765,6 @@ int asoc_simple_init_priv(struct asoc_simple_priv *priv,
 
                if (!li->num[i].cpus)
                        cnf_num += li->num[i].codecs;
-
-               c2c_num += li->num[i].c2c;
        }
 
        dais = devm_kcalloc(dev, dai_num, sizeof(*dais), GFP_KERNEL);
@@ -781,12 +778,6 @@ int asoc_simple_init_priv(struct asoc_simple_priv *priv,
                        return -ENOMEM;
        }
 
-       if (c2c_num) {
-               c2c_conf = devm_kcalloc(dev, c2c_num, sizeof(*c2c_conf), GFP_KERNEL);
-               if (!c2c_conf)
-                       return -ENOMEM;
-       }
-
        dev_dbg(dev, "link %d, dais %d, ccnf %d\n",
                li->link, dai_num, cnf_num);
 
@@ -800,7 +791,6 @@ int asoc_simple_init_priv(struct asoc_simple_priv *priv,
        priv->dais              = dais;
        priv->dlcs              = dlcs;
        priv->codec_conf        = cconf;
-       priv->c2c_conf          = c2c_conf;
 
        card->dai_link          = priv->dai_link;
        card->num_links         = li->link;
@@ -818,12 +808,6 @@ int asoc_simple_init_priv(struct asoc_simple_priv *priv,
 
                        dlcs += li->num[i].cpus;
                        dais += li->num[i].cpus;
-
-                       if (li->num[i].c2c) {
-                               /* Codec2Codec */
-                               dai_props[i].c2c_conf = c2c_conf;
-                               c2c_conf += li->num[i].c2c;
-                       }
                } else {
                        /* DPCM Be's CPU = dummy */
                        dai_props[i].cpus       =