Skip to content

Commit

Permalink
ASoC: rsnd: Refactor port handling with helper for endpoint node sele…
Browse files Browse the repository at this point in the history
…ction

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>
  • Loading branch information
Lad Prabhakar authored and Mark Brown committed Oct 17, 2024
1 parent 43916d9 commit daf5e3c
Showing 1 changed file with 21 additions and 9 deletions.
30 changes: 21 additions & 9 deletions sound/soc/sh/rcar/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -1278,12 +1291,10 @@ static int rsnd_dai_of_node(struct rsnd_priv *priv, int *is_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) {
Expand Down Expand Up @@ -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);
Expand Down

0 comments on commit daf5e3c

Please sign in to comment.