mirror of
https://github.com/torvalds/linux.git
synced 2024-11-24 21:21:41 +00:00
ASoC: rsnd: Refactor port handling with helper for endpoint node selection
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>
This commit is contained in:
parent
43916d9288
commit
daf5e3c681
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user