]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
ASoC: rsnd: Refactor port handling with helper for endpoint node selection
authorLad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Fri, 11 Oct 2024 17:53:46 +0000 (18:53 +0100)
committerMark Brown <broonie@kernel.org>
Thu, 17 Oct 2024 11:13:11 +0000 (12:13 +0100)
Refactor the code responsible for selecting the correct device node for
audio endpoint parsing in the rsnd driver. A new helper function
`rsnd_pick_endpoint_node_for_ports()` is introduced to handle the
selection of the endpoint node by checking whether the port is named
'port' or 'ports'.

This change simplifies the logic in both `rsnd_dai_of_node()` and
`rsnd_dai_probe()` functions by replacing repetitive condition checks
with the new helper.

Suggested-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Acked-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://patch.msgid.link/20241011175346.1093649-1-prabhakar.mahadev-lad.rj@bp.renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sh/rcar/core.c

index eca5ce096e5457c2b5e33097e584d1f74326ba2d..c32e88d6a141ed5d935d3236cedaca2ed8e4023e 100644 (file)
@@ -1233,6 +1233,19 @@ int rsnd_node_count(struct rsnd_priv *priv, struct device_node *node, char *name
        return i;
 }
 
+static struct device_node*
+       rsnd_pick_endpoint_node_for_ports(struct device_node *e_ports,
+                                         struct device_node *e_port)
+{
+       if (of_node_name_eq(e_ports, "ports"))
+               return e_ports;
+
+       if (of_node_name_eq(e_ports, "port"))
+               return e_port;
+
+       return NULL;
+}
+
 static int rsnd_dai_of_node(struct rsnd_priv *priv, int *is_graph)
 {
        struct device *dev = rsnd_priv_to_dev(priv);
@@ -1278,12 +1291,10 @@ audio_graph:
         * Audio-Graph-Card
         */
        for_each_child_of_node(np, ports) {
-               if (!of_node_name_eq(ports, "ports") &&
-                   !of_node_name_eq(ports, "port"))
+               node = rsnd_pick_endpoint_node_for_ports(ports, np);
+               if (!node)
                        continue;
-               priv->component_dais[i] =
-                       of_graph_get_endpoint_count(of_node_name_eq(ports, "ports") ?
-                                                   ports : np);
+               priv->component_dais[i] = of_graph_get_endpoint_count(node);
                nr += priv->component_dais[i];
                i++;
                if (i >= RSND_MAX_COMPONENT) {
@@ -1488,15 +1499,16 @@ static int rsnd_dai_probe(struct rsnd_priv *priv)
         */
        dai_i = 0;
        if (is_graph) {
+               struct device_node *dai_np_port;
                struct device_node *ports;
                struct device_node *dai_np;
 
                for_each_child_of_node(np, ports) {
-                       if (!of_node_name_eq(ports, "ports") &&
-                           !of_node_name_eq(ports, "port"))
+                       dai_np_port = rsnd_pick_endpoint_node_for_ports(ports, np);
+                       if (!dai_np_port)
                                continue;
-                       for_each_endpoint_of_node(of_node_name_eq(ports, "ports") ?
-                                                 ports : np, dai_np) {
+
+                       for_each_endpoint_of_node(dai_np_port, dai_np) {
                                __rsnd_dai_probe(priv, dai_np, dai_np, 0, dai_i);
                                if (!rsnd_is_gen1(priv) && !rsnd_is_gen2(priv)) {
                                        rdai = rsnd_rdai_get(priv, dai_i);