]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ASoC: audio-graph-card2: use snd_soc_ret()
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Wed, 5 Feb 2025 00:16:36 +0000 (00:16 +0000)
committerMark Brown <broonie@kernel.org>
Thu, 6 Feb 2025 17:26:24 +0000 (17:26 +0000)
We can use snd_soc_ret() to indicate error message when return.
Let's use it.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://patch.msgid.link/877c652ql8.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/generic/audio-graph-card2.c

index 945a16e6d691907c19f834296d9c0cc45eddb8ad..5dcc78c551a25b68ae8441d766913a9582d625fd 100644 (file)
@@ -234,6 +234,13 @@ enum graph_type {
 #define GRAPH_NODENAME_DPCM    "dpcm"
 #define GRAPH_NODENAME_C2C     "codec2codec"
 
+#define graph_ret(priv, ret) _graph_ret(priv, __func__, ret)
+static inline int _graph_ret(struct simple_util_priv *priv,
+                              const char *func, int ret)
+{
+       return snd_soc_ret(simple_priv_to_dev(priv), ret, "at %s()\n", func);
+}
+
 #define ep_to_port(ep) of_get_parent(ep)
 static struct device_node *port_to_ports(struct device_node *port)
 {
@@ -411,19 +418,19 @@ static int __graph_parse_node(struct simple_util_priv *priv,
 
        ret = graph_util_parse_dai(priv, ep, dlc, &is_single_links);
        if (ret < 0)
-               return ret;
+               goto end;
 
        ret = simple_util_parse_tdm(ep, dai);
        if (ret < 0)
-               return ret;
+               goto end;
 
        ret = simple_util_parse_tdm_width_map(priv, ep, dai);
        if (ret < 0)
-               return ret;
+               goto end;
 
        ret = simple_util_parse_clk(dev, ep, dai, dlc);
        if (ret < 0)
-               return ret;
+               goto end;
 
        /*
         * set DAI Name
@@ -488,11 +495,12 @@ static int __graph_parse_node(struct simple_util_priv *priv,
                simple_util_canonicalize_cpu(cpus, is_single_links);
                simple_util_canonicalize_platform(platforms, cpus);
        }
-
-       return 0;
+end:
+       return graph_ret(priv, ret);
 }
 
-static int graph_parse_node_multi_nm(struct snd_soc_dai_link *dai_link,
+static int graph_parse_node_multi_nm(struct simple_util_priv *priv,
+                                    struct snd_soc_dai_link *dai_link,
                                     int *nm_idx, int cpu_idx,
                                     struct device_node *mcpu_port)
 {
@@ -534,10 +542,10 @@ static int graph_parse_node_multi_nm(struct snd_soc_dai_link *dai_link,
        struct device_node *mcodec_port_top     __free(device_node) = ep_to_port(mcodec_ep_top);
        struct device_node *mcodec_ports        __free(device_node) = port_to_ports(mcodec_port_top);
        int nm_max = max(dai_link->num_cpus, dai_link->num_codecs);
-       int ret = 0;
+       int ret = -EINVAL;
 
        if (cpu_idx > dai_link->num_cpus)
-               return -EINVAL;
+               goto end;
 
        for_each_of_graph_port_endpoint(mcpu_port, mcpu_ep_n) {
                int codec_idx = 0;
@@ -578,8 +586,8 @@ static int graph_parse_node_multi_nm(struct snd_soc_dai_link *dai_link,
                if (ret < 0)
                        break;
        }
-
-       return ret;
+end:
+       return graph_ret(priv, ret);
 }
 
 static int graph_parse_node_multi(struct simple_util_priv *priv,
@@ -633,7 +641,7 @@ static int graph_parse_node_multi(struct simple_util_priv *priv,
 
                /* CPU:Codec = N:M */
                if (is_cpu && dai_link->ch_maps) {
-                       ret = graph_parse_node_multi_nm(dai_link, &nm_idx, idx, port);
+                       ret = graph_parse_node_multi_nm(priv, dai_link, &nm_idx, idx, port);
                        if (ret < 0)
                                goto multi_err;
                }
@@ -643,7 +651,7 @@ static int graph_parse_node_multi(struct simple_util_priv *priv,
                ret = -EINVAL;
 
 multi_err:
-       return ret;
+       return graph_ret(priv, ret);
 }
 
 static int graph_parse_node_single(struct simple_util_priv *priv,
@@ -651,7 +659,7 @@ static int graph_parse_node_single(struct simple_util_priv *priv,
                                   struct device_node *ep,
                                   struct link_info *li, int is_cpu)
 {
-       return __graph_parse_node(priv, gtype, ep, li, is_cpu, 0);
+       return graph_ret(priv, __graph_parse_node(priv, gtype, ep, li, is_cpu, 0));
 }
 
 static int graph_parse_node(struct simple_util_priv *priv,
@@ -660,11 +668,14 @@ static int graph_parse_node(struct simple_util_priv *priv,
                            struct link_info *li, int is_cpu)
 {
        struct device_node *port __free(device_node) = ep_to_port(ep);
+       int ret;
 
        if (graph_lnk_is_multi(port))
-               return graph_parse_node_multi(priv, gtype, port, li, is_cpu);
+               ret = graph_parse_node_multi(priv, gtype, port, li, is_cpu);
        else
-               return graph_parse_node_single(priv, gtype, ep, li, is_cpu);
+               ret = graph_parse_node_single(priv, gtype, ep, li, is_cpu);
+
+       return graph_ret(priv, ret);
 }
 
 static void graph_parse_daifmt(struct device_node *node, unsigned int *daifmt)
@@ -842,18 +853,19 @@ int audio_graph2_link_normal(struct simple_util_priv *priv,
         */
        ret = graph_parse_node(priv, GRAPH_NORMAL, codec_ep, li, 0);
        if (ret < 0)
-               return ret;
+               goto end;
 
        /*
         * call CPU, and set DAI Name
         */
        ret = graph_parse_node(priv, GRAPH_NORMAL, cpu_ep, li, 1);
        if (ret < 0)
-               return ret;
+               goto end;
 
        graph_link_init(priv, lnk, cpu_ep, codec_ep, li, 1);
 
-       return ret;
+end:
+       return graph_ret(priv, ret);
 }
 EXPORT_SYMBOL_GPL(audio_graph2_link_normal);
 
@@ -946,7 +958,7 @@ int audio_graph2_link_dpcm(struct simple_util_priv *priv,
 
        graph_link_init(priv, lnk, cpu_ep, codec_ep, li, is_cpu);
 
-       return ret;
+       return graph_ret(priv, ret);
 }
 EXPORT_SYMBOL_GPL(audio_graph2_link_dpcm);
 
@@ -992,8 +1004,13 @@ int audio_graph2_link_c2c(struct simple_util_priv *priv,
                struct snd_soc_pcm_stream *c2c_conf;
 
                c2c_conf = devm_kzalloc(dev, sizeof(*c2c_conf), GFP_KERNEL);
-               if (!c2c_conf)
-                       return ret;
+               if (!c2c_conf) {
+                       /*
+                        * Clang doesn't allow to use "goto end" before calling __free(),
+                        * because it bypasses the initialization. Use graph_ret() directly.
+                        */
+                       return graph_ret(priv, -ENOMEM);
+               }
 
                c2c_conf->formats       = SNDRV_PCM_FMTBIT_S32_LE; /* update ME */
                c2c_conf->rates         = SNDRV_PCM_RATE_8000_384000;
@@ -1019,18 +1036,18 @@ int audio_graph2_link_c2c(struct simple_util_priv *priv,
         */
        ret = graph_parse_node(priv, GRAPH_C2C, codec1_ep, li, 0);
        if (ret < 0)
-               return ret;
+               goto end;
 
        /*
         * call CPU, and set DAI Name
         */
        ret = graph_parse_node(priv, GRAPH_C2C, codec0_ep, li, 1);
        if (ret < 0)
-               return ret;
+               goto end;
 
        graph_link_init(priv, lnk, codec0_ep, codec1_ep, li, 1);
-
-       return ret;
+end:
+       return graph_ret(priv, ret);
 }
 EXPORT_SYMBOL_GPL(audio_graph2_link_c2c);
 
@@ -1078,7 +1095,7 @@ static int graph_link(struct simple_util_priv *priv,
 
        li->link++;
 err:
-       return ret;
+       return graph_ret(priv, ret);
 }
 
 static int graph_counter(struct device_node *lnk)
@@ -1249,7 +1266,7 @@ static int graph_count(struct simple_util_priv *priv,
 
        li->link++;
 err:
-       return ret;
+       return graph_ret(priv, ret);
 }
 
 static int graph_for_each_link(struct simple_util_priv *priv,
@@ -1266,7 +1283,7 @@ static int graph_for_each_link(struct simple_util_priv *priv,
        struct device_node *node = dev->of_node;
        struct device_node *lnk;
        enum graph_type gtype;
-       int rc, ret;
+       int rc, ret = 0;
 
        /* loop for all listed CPU port */
        of_for_each_phandle(&it, rc, node, "links", NULL, 0) {
@@ -1276,10 +1293,10 @@ static int graph_for_each_link(struct simple_util_priv *priv,
 
                ret = func(priv, hooks, gtype, lnk, li);
                if (ret < 0)
-                       return ret;
+                       break;
        }
 
-       return 0;
+       return graph_ret(priv, ret);
 }
 
 int audio_graph2_parse_of(struct simple_util_priv *priv, struct device *dev,
@@ -1355,7 +1372,7 @@ err:
        if (ret < 0)
                dev_err_probe(dev, ret, "parse error\n");
 
-       return ret;
+       return graph_ret(priv, ret);
 }
 EXPORT_SYMBOL_GPL(audio_graph2_parse_of);