* [PATCH 0/6] Use helper function for_each_child_of_node_scoped()
@ 2025-05-20 9:11 Ai Chao
2025-05-20 9:11 ` [PATCH 1/6] ASoC: ppc: " Ai Chao
` (5 more replies)
0 siblings, 6 replies; 10+ messages in thread
From: Ai Chao @ 2025-05-20 9:11 UTC (permalink / raw)
To: johannes, perex, tiwai, shengjiu.wang, Xiubo.Lee, festevam,
nicoleotsuka, lgirdwood, broonie, shawnguo, s.hauer, kernel,
jbrunet, neil.armstrong, khilman, martin.blumenstingl,
srinivas.kandagatla, kuninori.morimoto.gx, zhangzekun11,
krzysztof.kozlowski, ckeepax, drhodes, alexey.klimov
Cc: linuxppc-dev, linux-sound, linux-kernel, imx, linux-arm-kernel,
linux-amlogic, linux-arm-msm, linux-renesas-soc, Ai Chao
This patch series introduces wrapper functions
for_each_child_of_node_scoped().
The for_each_child_of_node_scoped() helper provides a scope-based clean-up
functionality to put the device_node automatically, and as such, there is
no need to call of_node_put() directly.
Thus, use this helper to simplify the code.
Summary:
- Patch 1 ASoC: ppc: Use helper function for_each_child_of_node_scoped()
- Patch 2 ASoC: aoa: Use helper function for_each_child_of_node_scoped()
- Patch 3 ASoC: renesas: Use helper function for_each_child_of_node_scoped()
- Patch 4 ASoC: meson: Use helper function for_each_child_of_node_scoped()
- Patch 5 ASoC: imx-card: Use helper function for_each_child_of_node_scoped()
- Patch 6 ASoC: qcom: Use helper function for_each_child_of_node_scoped()
sound/aoa/soundbus/i2sbus/core.c | 5 ++--
sound/ppc/tumbler.c | 5 ++--
sound/soc/fsl/imx-card.c | 13 ++++------
sound/soc/meson/axg-card.c | 3 +--
sound/soc/meson/meson-card-utils.c | 14 +++--------
sound/soc/qcom/lpass-cpu.c | 3 +--
sound/soc/qcom/qdsp6/q6afe-dai.c | 3 +--
sound/soc/qcom/qdsp6/q6asm-dai.c | 4 +--
sound/soc/renesas/rcar/core.c | 39 ++++++++++--------------------
sound/soc/renesas/rcar/ctu.c | 8 ++----
sound/soc/renesas/rcar/dma.c | 4 +--
sound/soc/renesas/rcar/dvc.c | 8 ++----
sound/soc/renesas/rcar/mix.c | 8 ++----
sound/soc/renesas/rcar/src.c | 10 ++------
sound/soc/renesas/rcar/ssi.c | 18 ++++----------
sound/soc/renesas/rcar/ssiu.c | 7 ++----
16 files changed, 47 insertions(+), 105 deletions(-)
--
2.47.1
_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 1/6] ASoC: ppc: Use helper function for_each_child_of_node_scoped()
2025-05-20 9:11 [PATCH 0/6] Use helper function for_each_child_of_node_scoped() Ai Chao
@ 2025-05-20 9:11 ` Ai Chao
2025-05-20 9:11 ` [PATCH 2/6] ASoC: aoa: " Ai Chao
` (4 subsequent siblings)
5 siblings, 0 replies; 10+ messages in thread
From: Ai Chao @ 2025-05-20 9:11 UTC (permalink / raw)
To: johannes, perex, tiwai, shengjiu.wang, Xiubo.Lee, festevam,
nicoleotsuka, lgirdwood, broonie, shawnguo, s.hauer, kernel,
jbrunet, neil.armstrong, khilman, martin.blumenstingl,
srinivas.kandagatla, kuninori.morimoto.gx, zhangzekun11,
krzysztof.kozlowski, ckeepax, drhodes, alexey.klimov
Cc: linuxppc-dev, linux-sound, linux-kernel, imx, linux-arm-kernel,
linux-amlogic, linux-arm-msm, linux-renesas-soc, Ai Chao
The for_each_child_of_node_scoped() helper provides a scope-based
clean-up functionality to put the device_node automatically, and
as such, there is no need to call of_node_put() directly.
Thus, use this helper to simplify the code.
Signed-off-by: Ai Chao <aichao@kylinos.cn>
---
sound/ppc/tumbler.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/sound/ppc/tumbler.c b/sound/ppc/tumbler.c
index 3c09660e1522..b81d0789b9fb 100644
--- a/sound/ppc/tumbler.c
+++ b/sound/ppc/tumbler.c
@@ -1343,7 +1343,7 @@ int snd_pmac_tumbler_init(struct snd_pmac *chip)
int i, err;
struct pmac_tumbler *mix;
const u32 *paddr;
- struct device_node *tas_node, *np;
+ struct device_node *tas_node;
char *chipname;
request_module("i2c-powermac");
@@ -1358,13 +1358,12 @@ int snd_pmac_tumbler_init(struct snd_pmac *chip)
mix->anded_reset = 0;
mix->reset_on_sleep = 1;
- for_each_child_of_node(chip->node, np) {
+ for_each_child_of_node_scoped(chip->node, np) {
if (of_node_name_eq(np, "sound")) {
if (of_property_read_bool(np, "has-anded-reset"))
mix->anded_reset = 1;
if (of_property_present(np, "layout-id"))
mix->reset_on_sleep = 0;
- of_node_put(np);
break;
}
}
--
2.47.1
_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 2/6] ASoC: aoa: Use helper function for_each_child_of_node_scoped()
2025-05-20 9:11 [PATCH 0/6] Use helper function for_each_child_of_node_scoped() Ai Chao
2025-05-20 9:11 ` [PATCH 1/6] ASoC: ppc: " Ai Chao
@ 2025-05-20 9:11 ` Ai Chao
2025-05-20 9:11 ` [PATCH 3/6] ASoC: renesas: " Ai Chao
` (3 subsequent siblings)
5 siblings, 0 replies; 10+ messages in thread
From: Ai Chao @ 2025-05-20 9:11 UTC (permalink / raw)
To: johannes, perex, tiwai, shengjiu.wang, Xiubo.Lee, festevam,
nicoleotsuka, lgirdwood, broonie, shawnguo, s.hauer, kernel,
jbrunet, neil.armstrong, khilman, martin.blumenstingl,
srinivas.kandagatla, kuninori.morimoto.gx, zhangzekun11,
krzysztof.kozlowski, ckeepax, drhodes, alexey.klimov
Cc: linuxppc-dev, linux-sound, linux-kernel, imx, linux-arm-kernel,
linux-amlogic, linux-arm-msm, linux-renesas-soc, Ai Chao
The for_each_child_of_node_scoped() helper provides a scope-based
clean-up functionality to put the device_node automatically, and
as such, there is no need to call of_node_put() directly.
Thus, use this helper to simplify the code.
Signed-off-by: Ai Chao <aichao@kylinos.cn>
---
sound/aoa/soundbus/i2sbus/core.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/sound/aoa/soundbus/i2sbus/core.c b/sound/aoa/soundbus/i2sbus/core.c
index ce84288168e4..20a4c5891afc 100644
--- a/sound/aoa/soundbus/i2sbus/core.c
+++ b/sound/aoa/soundbus/i2sbus/core.c
@@ -207,6 +207,8 @@ static int i2sbus_add_dev(struct macio_dev *macio,
}
}
}
+ of_node_put(sound);
+
/* for the time being, until we can handle non-layout-id
* things in some fabric, refuse to attach if there is no
* layout-id property or we haven't been forced to attach.
@@ -335,7 +337,6 @@ static int i2sbus_add_dev(struct macio_dev *macio,
static int i2sbus_probe(struct macio_dev* dev, const struct of_device_id *match)
{
- struct device_node *np;
int got = 0, err;
struct i2sbus_control *control = NULL;
@@ -347,7 +348,7 @@ static int i2sbus_probe(struct macio_dev* dev, const struct of_device_id *match)
return -ENODEV;
}
- for_each_child_of_node(dev->ofdev.dev.of_node, np) {
+ for_each_child_of_node_scoped(dev->ofdev.dev.of_node, np) {
if (of_device_is_compatible(np, "i2sbus") ||
of_device_is_compatible(np, "i2s-modem")) {
got += i2sbus_add_dev(dev, control, np);
--
2.47.1
_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 3/6] ASoC: renesas: Use helper function for_each_child_of_node_scoped()
2025-05-20 9:11 [PATCH 0/6] Use helper function for_each_child_of_node_scoped() Ai Chao
2025-05-20 9:11 ` [PATCH 1/6] ASoC: ppc: " Ai Chao
2025-05-20 9:11 ` [PATCH 2/6] ASoC: aoa: " Ai Chao
@ 2025-05-20 9:11 ` Ai Chao
2025-05-21 23:43 ` Kuninori Morimoto
2025-05-20 9:11 ` [PATCH 4/6] ASoC: meson: " Ai Chao
` (2 subsequent siblings)
5 siblings, 1 reply; 10+ messages in thread
From: Ai Chao @ 2025-05-20 9:11 UTC (permalink / raw)
To: johannes, perex, tiwai, shengjiu.wang, Xiubo.Lee, festevam,
nicoleotsuka, lgirdwood, broonie, shawnguo, s.hauer, kernel,
jbrunet, neil.armstrong, khilman, martin.blumenstingl,
srinivas.kandagatla, kuninori.morimoto.gx, zhangzekun11,
krzysztof.kozlowski, ckeepax, drhodes, alexey.klimov
Cc: linuxppc-dev, linux-sound, linux-kernel, imx, linux-arm-kernel,
linux-amlogic, linux-arm-msm, linux-renesas-soc, Ai Chao
The for_each_child_of_node_scoped() helper provides a scope-based
clean-up functionality to put the device_node automatically, and
as such, there is no need to call of_node_put() directly.
Thus, use this helper to simplify the code.
Signed-off-by: Ai Chao <aichao@kylinos.cn>
---
sound/soc/renesas/rcar/core.c | 39 ++++++++++++-----------------------
sound/soc/renesas/rcar/ctu.c | 8 ++-----
sound/soc/renesas/rcar/dma.c | 4 +---
sound/soc/renesas/rcar/dvc.c | 8 ++-----
sound/soc/renesas/rcar/mix.c | 8 ++-----
sound/soc/renesas/rcar/src.c | 10 ++-------
sound/soc/renesas/rcar/ssi.c | 18 +++++-----------
sound/soc/renesas/rcar/ssiu.c | 7 ++-----
8 files changed, 29 insertions(+), 73 deletions(-)
diff --git a/sound/soc/renesas/rcar/core.c b/sound/soc/renesas/rcar/core.c
index 30afc942d381..91f84495e7b2 100644
--- a/sound/soc/renesas/rcar/core.c
+++ b/sound/soc/renesas/rcar/core.c
@@ -1075,7 +1075,6 @@ static void rsnd_parse_tdm_split_mode(struct rsnd_priv *priv,
{
struct device *dev = rsnd_priv_to_dev(priv);
struct device_node *ssiu_np = rsnd_ssiu_of_node(priv);
- struct device_node *np;
int is_play = rsnd_io_is_play(io);
int i;
@@ -1094,7 +1093,7 @@ static void rsnd_parse_tdm_split_mode(struct rsnd_priv *priv,
if (!node)
break;
- for_each_child_of_node(ssiu_np, np) {
+ for_each_child_of_node_scoped(ssiu_np, np) {
if (np == node) {
rsnd_flags_set(io, RSND_STREAM_TDM_SPLIT);
dev_dbg(dev, "%s is part of TDM Split\n", io->name);
@@ -1154,21 +1153,18 @@ void rsnd_parse_connect_common(struct rsnd_dai *rdai, char *name,
{
struct rsnd_priv *priv = rsnd_rdai_to_priv(rdai);
struct device *dev = rsnd_priv_to_dev(priv);
- struct device_node *np;
int i;
if (!node)
return;
i = 0;
- for_each_child_of_node(node, np) {
+ for_each_child_of_node_scoped(node, np) {
struct rsnd_mod *mod;
i = rsnd_node_fixed_index(dev, np, name, i);
- if (i < 0) {
- of_node_put(np);
+ if (i < 0)
break;
- }
mod = mod_get(priv, i);
@@ -1217,16 +1213,13 @@ int rsnd_node_fixed_index(struct device *dev, struct device_node *node, char *na
int rsnd_node_count(struct rsnd_priv *priv, struct device_node *node, char *name)
{
struct device *dev = rsnd_priv_to_dev(priv);
- struct device_node *np;
int i;
i = 0;
- for_each_child_of_node(node, np) {
+ for_each_child_of_node_scoped(node, np) {
i = rsnd_node_fixed_index(dev, np, name, i);
- if (i < 0) {
- of_node_put(np);
+ if (i < 0)
return 0;
- }
i++;
}
@@ -1250,7 +1243,7 @@ static int rsnd_dai_of_node(struct rsnd_priv *priv, int *is_graph)
{
struct device *dev = rsnd_priv_to_dev(priv);
struct device_node *np = dev->of_node;
- struct device_node *ports, *node;
+ struct device_node *node;
int nr = 0;
int i = 0;
@@ -1270,16 +1263,15 @@ static int rsnd_dai_of_node(struct rsnd_priv *priv, int *is_graph)
of_node_put(node);
- for_each_child_of_node(np, node) {
- if (!of_node_name_eq(node, RSND_NODE_DAI))
+ for_each_child_of_node_scoped(np, ports) {
+ if (!of_node_name_eq(ports, RSND_NODE_DAI))
continue;
- priv->component_dais[i] = of_get_child_count(node);
+ priv->component_dais[i] = of_get_child_count(ports);
nr += priv->component_dais[i];
i++;
if (i >= RSND_MAX_COMPONENT) {
dev_info(dev, "reach to max component\n");
- of_node_put(node);
break;
}
}
@@ -1290,7 +1282,7 @@ static int rsnd_dai_of_node(struct rsnd_priv *priv, int *is_graph)
/*
* Audio-Graph-Card
*/
- for_each_child_of_node(np, ports) {
+ for_each_child_of_node_scoped(np, ports) {
node = rsnd_pick_endpoint_node_for_ports(ports, np);
if (!node)
continue;
@@ -1299,7 +1291,6 @@ static int rsnd_dai_of_node(struct rsnd_priv *priv, int *is_graph)
i++;
if (i >= RSND_MAX_COMPONENT) {
dev_info(dev, "reach to max component\n");
- of_node_put(ports);
break;
}
}
@@ -1500,10 +1491,9 @@ 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) {
+ for_each_child_of_node_scoped(np, ports) {
dai_np_port = rsnd_pick_endpoint_node_for_ports(ports, np);
if (!dai_np_port)
continue;
@@ -1520,14 +1510,11 @@ static int rsnd_dai_probe(struct rsnd_priv *priv)
}
}
} else {
- struct device_node *node;
- struct device_node *dai_np;
-
- for_each_child_of_node(np, node) {
+ for_each_child_of_node_scoped(np, node) {
if (!of_node_name_eq(node, RSND_NODE_DAI))
continue;
- for_each_child_of_node(node, dai_np) {
+ for_each_child_of_node_scoped(node, dai_np) {
__rsnd_dai_probe(priv, dai_np, np, dai_i, dai_i);
if (!rsnd_is_gen1(priv) && !rsnd_is_gen2(priv)) {
rdai = rsnd_rdai_get(priv, dai_i);
diff --git a/sound/soc/renesas/rcar/ctu.c b/sound/soc/renesas/rcar/ctu.c
index a26ec7b780cd..bd4c61f9fb3c 100644
--- a/sound/soc/renesas/rcar/ctu.c
+++ b/sound/soc/renesas/rcar/ctu.c
@@ -316,7 +316,6 @@ struct rsnd_mod *rsnd_ctu_mod_get(struct rsnd_priv *priv, int id)
int rsnd_ctu_probe(struct rsnd_priv *priv)
{
struct device_node *node;
- struct device_node *np;
struct device *dev = rsnd_priv_to_dev(priv);
struct rsnd_ctu *ctu;
struct clk *clk;
@@ -344,7 +343,7 @@ int rsnd_ctu_probe(struct rsnd_priv *priv)
i = 0;
ret = 0;
- for_each_child_of_node(node, np) {
+ for_each_child_of_node_scoped(node, np) {
ctu = rsnd_ctu_get(priv, i);
/*
@@ -357,16 +356,13 @@ int rsnd_ctu_probe(struct rsnd_priv *priv)
clk = devm_clk_get(dev, name);
if (IS_ERR(clk)) {
ret = PTR_ERR(clk);
- of_node_put(np);
goto rsnd_ctu_probe_done;
}
ret = rsnd_mod_init(priv, rsnd_mod_get(ctu), &rsnd_ctu_ops,
clk, RSND_MOD_CTU, i);
- if (ret) {
- of_node_put(np);
+ if (ret)
goto rsnd_ctu_probe_done;
- }
i++;
}
diff --git a/sound/soc/renesas/rcar/dma.c b/sound/soc/renesas/rcar/dma.c
index 2342bbb6fe92..2035ce06fe4c 100644
--- a/sound/soc/renesas/rcar/dma.c
+++ b/sound/soc/renesas/rcar/dma.c
@@ -194,14 +194,12 @@ struct dma_chan *rsnd_dma_request_channel(struct device_node *of_node, char *nam
struct rsnd_priv *priv = rsnd_mod_to_priv(mod);
struct device *dev = rsnd_priv_to_dev(priv);
struct dma_chan *chan = NULL;
- struct device_node *np;
int i = 0;
- for_each_child_of_node(of_node, np) {
+ for_each_child_of_node_scoped(of_node, np) {
i = rsnd_node_fixed_index(dev, np, name, i);
if (i < 0) {
chan = NULL;
- of_node_put(np);
break;
}
diff --git a/sound/soc/renesas/rcar/dvc.c b/sound/soc/renesas/rcar/dvc.c
index da91dd301aab..988cbddbc611 100644
--- a/sound/soc/renesas/rcar/dvc.c
+++ b/sound/soc/renesas/rcar/dvc.c
@@ -324,7 +324,6 @@ struct rsnd_mod *rsnd_dvc_mod_get(struct rsnd_priv *priv, int id)
int rsnd_dvc_probe(struct rsnd_priv *priv)
{
struct device_node *node;
- struct device_node *np;
struct device *dev = rsnd_priv_to_dev(priv);
struct rsnd_dvc *dvc;
struct clk *clk;
@@ -352,7 +351,7 @@ int rsnd_dvc_probe(struct rsnd_priv *priv)
i = 0;
ret = 0;
- for_each_child_of_node(node, np) {
+ for_each_child_of_node_scoped(node, np) {
dvc = rsnd_dvc_get(priv, i);
snprintf(name, RSND_DVC_NAME_SIZE, "%s.%d",
@@ -361,16 +360,13 @@ int rsnd_dvc_probe(struct rsnd_priv *priv)
clk = devm_clk_get(dev, name);
if (IS_ERR(clk)) {
ret = PTR_ERR(clk);
- of_node_put(np);
goto rsnd_dvc_probe_done;
}
ret = rsnd_mod_init(priv, rsnd_mod_get(dvc), &rsnd_dvc_ops,
clk, RSND_MOD_DVC, i);
- if (ret) {
- of_node_put(np);
+ if (ret)
goto rsnd_dvc_probe_done;
- }
i++;
}
diff --git a/sound/soc/renesas/rcar/mix.c b/sound/soc/renesas/rcar/mix.c
index 024d91cc8748..aea74e703305 100644
--- a/sound/soc/renesas/rcar/mix.c
+++ b/sound/soc/renesas/rcar/mix.c
@@ -288,7 +288,6 @@ struct rsnd_mod *rsnd_mix_mod_get(struct rsnd_priv *priv, int id)
int rsnd_mix_probe(struct rsnd_priv *priv)
{
struct device_node *node;
- struct device_node *np;
struct device *dev = rsnd_priv_to_dev(priv);
struct rsnd_mix *mix;
struct clk *clk;
@@ -316,7 +315,7 @@ int rsnd_mix_probe(struct rsnd_priv *priv)
i = 0;
ret = 0;
- for_each_child_of_node(node, np) {
+ for_each_child_of_node_scoped(node, np) {
mix = rsnd_mix_get(priv, i);
snprintf(name, MIX_NAME_SIZE, "%s.%d",
@@ -325,16 +324,13 @@ int rsnd_mix_probe(struct rsnd_priv *priv)
clk = devm_clk_get(dev, name);
if (IS_ERR(clk)) {
ret = PTR_ERR(clk);
- of_node_put(np);
goto rsnd_mix_probe_done;
}
ret = rsnd_mod_init(priv, rsnd_mod_get(mix), &rsnd_mix_ops,
clk, RSND_MOD_MIX, i);
- if (ret) {
- of_node_put(np);
+ if (ret)
goto rsnd_mix_probe_done;
- }
i++;
}
diff --git a/sound/soc/renesas/rcar/src.c b/sound/soc/renesas/rcar/src.c
index 7d73b183bda6..f47bf38c2f94 100644
--- a/sound/soc/renesas/rcar/src.c
+++ b/sound/soc/renesas/rcar/src.c
@@ -715,7 +715,6 @@ struct rsnd_mod *rsnd_src_mod_get(struct rsnd_priv *priv, int id)
int rsnd_src_probe(struct rsnd_priv *priv)
{
struct device_node *node;
- struct device_node *np;
struct device *dev = rsnd_priv_to_dev(priv);
struct rsnd_src *src;
struct clk *clk;
@@ -742,14 +741,13 @@ int rsnd_src_probe(struct rsnd_priv *priv)
priv->src = src;
i = 0;
- for_each_child_of_node(node, np) {
+ for_each_child_of_node_scoped(node, np) {
if (!of_device_is_available(np))
goto skip;
i = rsnd_node_fixed_index(dev, np, SRC_NAME, i);
if (i < 0) {
ret = -EINVAL;
- of_node_put(np);
goto rsnd_src_probe_done;
}
@@ -761,23 +759,19 @@ int rsnd_src_probe(struct rsnd_priv *priv)
src->irq = irq_of_parse_and_map(np, 0);
if (!src->irq) {
ret = -EINVAL;
- of_node_put(np);
goto rsnd_src_probe_done;
}
clk = devm_clk_get(dev, name);
if (IS_ERR(clk)) {
ret = PTR_ERR(clk);
- of_node_put(np);
goto rsnd_src_probe_done;
}
ret = rsnd_mod_init(priv, rsnd_mod_get(src),
&rsnd_src_ops, clk, RSND_MOD_SRC, i);
- if (ret) {
- of_node_put(np);
+ if (ret)
goto rsnd_src_probe_done;
- }
skip:
i++;
diff --git a/sound/soc/renesas/rcar/ssi.c b/sound/soc/renesas/rcar/ssi.c
index 0c6424a1fcac..d52056caa3ec 100644
--- a/sound/soc/renesas/rcar/ssi.c
+++ b/sound/soc/renesas/rcar/ssi.c
@@ -1115,7 +1115,6 @@ void rsnd_parse_connect_ssi(struct rsnd_dai *rdai,
struct rsnd_priv *priv = rsnd_rdai_to_priv(rdai);
struct device *dev = rsnd_priv_to_dev(priv);
struct device_node *node;
- struct device_node *np;
int i;
node = rsnd_ssi_of_node(priv);
@@ -1123,14 +1122,12 @@ void rsnd_parse_connect_ssi(struct rsnd_dai *rdai,
return;
i = 0;
- for_each_child_of_node(node, np) {
+ for_each_child_of_node_scoped(node, np) {
struct rsnd_mod *mod;
i = rsnd_node_fixed_index(dev, np, SSI_NAME, i);
- if (i < 0) {
- of_node_put(np);
+ if (i < 0)
break;
- }
mod = rsnd_ssi_mod_get(priv, i);
@@ -1163,7 +1160,6 @@ int __rsnd_ssi_is_pin_sharing(struct rsnd_mod *mod)
int rsnd_ssi_probe(struct rsnd_priv *priv)
{
struct device_node *node;
- struct device_node *np;
struct device *dev = rsnd_priv_to_dev(priv);
struct rsnd_mod_ops *ops;
struct clk *clk;
@@ -1191,14 +1187,13 @@ int rsnd_ssi_probe(struct rsnd_priv *priv)
priv->ssi_nr = nr;
i = 0;
- for_each_child_of_node(node, np) {
+ for_each_child_of_node_scoped(node, np) {
if (!of_device_is_available(np))
goto skip;
i = rsnd_node_fixed_index(dev, np, SSI_NAME, i);
if (i < 0) {
ret = -EINVAL;
- of_node_put(np);
goto rsnd_ssi_probe_done;
}
@@ -1210,7 +1205,6 @@ int rsnd_ssi_probe(struct rsnd_priv *priv)
clk = devm_clk_get(dev, name);
if (IS_ERR(clk)) {
ret = PTR_ERR(clk);
- of_node_put(np);
goto rsnd_ssi_probe_done;
}
@@ -1223,7 +1217,6 @@ int rsnd_ssi_probe(struct rsnd_priv *priv)
ssi->irq = irq_of_parse_and_map(np, 0);
if (!ssi->irq) {
ret = -EINVAL;
- of_node_put(np);
goto rsnd_ssi_probe_done;
}
@@ -1234,10 +1227,9 @@ int rsnd_ssi_probe(struct rsnd_priv *priv)
ret = rsnd_mod_init(priv, rsnd_mod_get(ssi), ops, clk,
RSND_MOD_SSI, i);
- if (ret) {
- of_node_put(np);
+ if (ret)
goto rsnd_ssi_probe_done;
- }
+
skip:
i++;
}
diff --git a/sound/soc/renesas/rcar/ssiu.c b/sound/soc/renesas/rcar/ssiu.c
index 665e8b2db579..faf351126d57 100644
--- a/sound/soc/renesas/rcar/ssiu.c
+++ b/sound/soc/renesas/rcar/ssiu.c
@@ -478,17 +478,14 @@ void rsnd_parse_connect_ssiu(struct rsnd_dai *rdai,
/* use rcar_sound,ssiu if exist */
if (node) {
- struct device_node *np;
int i = 0;
- for_each_child_of_node(node, np) {
+ for_each_child_of_node_scoped(node, np) {
struct rsnd_mod *mod;
i = rsnd_node_fixed_index(dev, np, SSIU_NAME, i);
- if (i < 0) {
- of_node_put(np);
+ if (i < 0)
break;
- }
mod = rsnd_ssiu_mod_get(priv, i);
--
2.47.1
_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 4/6] ASoC: meson: Use helper function for_each_child_of_node_scoped()
2025-05-20 9:11 [PATCH 0/6] Use helper function for_each_child_of_node_scoped() Ai Chao
` (2 preceding siblings ...)
2025-05-20 9:11 ` [PATCH 3/6] ASoC: renesas: " Ai Chao
@ 2025-05-20 9:11 ` Ai Chao
2025-05-20 21:43 ` kernel test robot
2025-05-20 9:11 ` [PATCH 5/6] ASoC: imx-card: " Ai Chao
2025-05-20 9:11 ` [PATCH 6/6] ASoC: qcom: " Ai Chao
5 siblings, 1 reply; 10+ messages in thread
From: Ai Chao @ 2025-05-20 9:11 UTC (permalink / raw)
To: johannes, perex, tiwai, shengjiu.wang, Xiubo.Lee, festevam,
nicoleotsuka, lgirdwood, broonie, shawnguo, s.hauer, kernel,
jbrunet, neil.armstrong, khilman, martin.blumenstingl,
srinivas.kandagatla, kuninori.morimoto.gx, zhangzekun11,
krzysztof.kozlowski, ckeepax, drhodes, alexey.klimov
Cc: linuxppc-dev, linux-sound, linux-kernel, imx, linux-arm-kernel,
linux-amlogic, linux-arm-msm, linux-renesas-soc, Ai Chao
The for_each_child_of_node_scoped() helper provides a scope-based
clean-up functionality to put the device_node automatically, and
as such, there is no need to call of_node_put() directly.
Thus, use this helper to simplify the code.
Signed-off-by: Ai Chao <aichao@kylinos.cn>
---
sound/soc/meson/axg-card.c | 3 +--
sound/soc/meson/meson-card-utils.c | 14 ++++----------
2 files changed, 5 insertions(+), 12 deletions(-)
diff --git a/sound/soc/meson/axg-card.c b/sound/soc/meson/axg-card.c
index a2dfccb7990f..b4dca80e15e4 100644
--- a/sound/soc/meson/axg-card.c
+++ b/sound/soc/meson/axg-card.c
@@ -222,7 +222,6 @@ static int axg_card_parse_codecs_masks(struct snd_soc_card *card,
struct axg_dai_link_tdm_data *be)
{
struct axg_dai_link_tdm_mask *codec_mask;
- struct device_node *np;
codec_mask = devm_kcalloc(card->dev, link->num_codecs,
sizeof(*codec_mask), GFP_KERNEL);
@@ -231,7 +230,7 @@ static int axg_card_parse_codecs_masks(struct snd_soc_card *card,
be->codec_masks = codec_mask;
- for_each_child_of_node(node, np) {
+ for_each_child_of_node_scoped(node, np) {
snd_soc_of_get_slot_mask(np, "dai-tdm-slot-rx-mask",
&codec_mask->rx);
snd_soc_of_get_slot_mask(np, "dai-tdm-slot-tx-mask",
diff --git a/sound/soc/meson/meson-card-utils.c b/sound/soc/meson/meson-card-utils.c
index cfc7f6e41ab5..cf08c8dedd91 100644
--- a/sound/soc/meson/meson-card-utils.c
+++ b/sound/soc/meson/meson-card-utils.c
@@ -137,7 +137,6 @@ int meson_card_set_be_link(struct snd_soc_card *card,
struct device_node *node)
{
struct snd_soc_dai_link_component *codec;
- struct device_node *np;
int ret, num_codecs;
num_codecs = of_get_child_count(node);
@@ -154,12 +153,10 @@ int meson_card_set_be_link(struct snd_soc_card *card,
link->codecs = codec;
link->num_codecs = num_codecs;
- for_each_child_of_node(node, np) {
+ for_each_child_of_node_scoped(node, np) {
ret = meson_card_parse_dai(card, np, codec);
- if (ret) {
- of_node_put(np);
+ if (ret)
return ret;
- }
codec++;
}
@@ -198,7 +195,6 @@ static int meson_card_add_links(struct snd_soc_card *card)
{
struct meson_card *priv = snd_soc_card_get_drvdata(card);
struct device_node *node = card->dev->of_node;
- struct device_node *np;
int num, i, ret;
num = of_get_child_count(node);
@@ -212,12 +208,10 @@ static int meson_card_add_links(struct snd_soc_card *card)
return ret;
i = 0;
- for_each_child_of_node(node, np) {
+ for_each_child_of_node_scoped(node, np) {
ret = priv->match_data->add_link(card, np, &i);
- if (ret) {
- of_node_put(np);
+ if (ret)
return ret;
- }
i++;
}
--
2.47.1
_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 5/6] ASoC: imx-card: Use helper function for_each_child_of_node_scoped()
2025-05-20 9:11 [PATCH 0/6] Use helper function for_each_child_of_node_scoped() Ai Chao
` (3 preceding siblings ...)
2025-05-20 9:11 ` [PATCH 4/6] ASoC: meson: " Ai Chao
@ 2025-05-20 9:11 ` Ai Chao
2025-05-20 9:11 ` [PATCH 6/6] ASoC: qcom: " Ai Chao
5 siblings, 0 replies; 10+ messages in thread
From: Ai Chao @ 2025-05-20 9:11 UTC (permalink / raw)
To: johannes, perex, tiwai, shengjiu.wang, Xiubo.Lee, festevam,
nicoleotsuka, lgirdwood, broonie, shawnguo, s.hauer, kernel,
jbrunet, neil.armstrong, khilman, martin.blumenstingl,
srinivas.kandagatla, kuninori.morimoto.gx, zhangzekun11,
krzysztof.kozlowski, ckeepax, drhodes, alexey.klimov
Cc: linuxppc-dev, linux-sound, linux-kernel, imx, linux-arm-kernel,
linux-amlogic, linux-arm-msm, linux-renesas-soc, Ai Chao
The for_each_child_of_node_scoped() helper provides a scope-based
clean-up functionality to put the device_node automatically, and
as such, there is no need to call of_node_put() directly.
Thus, use this helper to simplify the code.
Signed-off-by: Ai Chao <aichao@kylinos.cn>
---
sound/soc/fsl/imx-card.c | 13 +++++--------
1 file changed, 5 insertions(+), 8 deletions(-)
diff --git a/sound/soc/fsl/imx-card.c b/sound/soc/fsl/imx-card.c
index 3686d468506b..bffdba4292b6 100644
--- a/sound/soc/fsl/imx-card.c
+++ b/sound/soc/fsl/imx-card.c
@@ -513,7 +513,6 @@ static int imx_card_parse_of(struct imx_card_data *data)
struct device_node *platform = NULL;
struct device_node *codec = NULL;
struct device_node *cpu = NULL;
- struct device_node *np;
struct device *dev = card->dev;
struct snd_soc_dai_link *link;
struct dai_link_data *link_data;
@@ -552,11 +551,10 @@ static int imx_card_parse_of(struct imx_card_data *data)
link = card->dai_link;
link_data = data->link_data;
- for_each_child_of_node(dev->of_node, np) {
+ for_each_child_of_node_scoped(dev->of_node, np) {
dlc = devm_kzalloc(dev, 2 * sizeof(*dlc), GFP_KERNEL);
if (!dlc) {
- ret = -ENOMEM;
- goto err_put_np;
+ return -ENOMEM;
}
link->cpus = &dlc[0];
@@ -567,8 +565,8 @@ static int imx_card_parse_of(struct imx_card_data *data)
ret = of_property_read_string(np, "link-name", &link->name);
if (ret) {
- dev_err(card->dev, "error getting codec dai_link name\n");
- goto err_put_np;
+ return dev_err_probe(card->dev, ret,
+ "error getting codec dai_link name\n");
}
cpu = of_get_child_by_name(np, "cpu");
@@ -722,8 +720,7 @@ static int imx_card_parse_of(struct imx_card_data *data)
of_node_put(cpu);
of_node_put(codec);
of_node_put(platform);
-err_put_np:
- of_node_put(np);
+
return ret;
}
--
2.47.1
_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 6/6] ASoC: qcom: Use helper function for_each_child_of_node_scoped()
2025-05-20 9:11 [PATCH 0/6] Use helper function for_each_child_of_node_scoped() Ai Chao
` (4 preceding siblings ...)
2025-05-20 9:11 ` [PATCH 5/6] ASoC: imx-card: " Ai Chao
@ 2025-05-20 9:11 ` Ai Chao
2025-05-20 9:19 ` Krzysztof Kozlowski
5 siblings, 1 reply; 10+ messages in thread
From: Ai Chao @ 2025-05-20 9:11 UTC (permalink / raw)
To: johannes, perex, tiwai, shengjiu.wang, Xiubo.Lee, festevam,
nicoleotsuka, lgirdwood, broonie, shawnguo, s.hauer, kernel,
jbrunet, neil.armstrong, khilman, martin.blumenstingl,
srinivas.kandagatla, kuninori.morimoto.gx, zhangzekun11,
krzysztof.kozlowski, ckeepax, drhodes, alexey.klimov
Cc: linuxppc-dev, linux-sound, linux-kernel, imx, linux-arm-kernel,
linux-amlogic, linux-arm-msm, linux-renesas-soc, Ai Chao
The for_each_child_of_node_scoped() helper provides a scope-based
clean-up functionality to put the device_node automatically, and
as such, there is no need to call of_node_put() directly.
Thus, use this helper to simplify the code.
Signed-off-by: Ai Chao <aichao@kylinos.cn>
---
sound/soc/qcom/lpass-cpu.c | 3 +--
sound/soc/qcom/qdsp6/q6afe-dai.c | 3 +--
sound/soc/qcom/qdsp6/q6asm-dai.c | 4 +---
3 files changed, 3 insertions(+), 7 deletions(-)
diff --git a/sound/soc/qcom/lpass-cpu.c b/sound/soc/qcom/lpass-cpu.c
index 242bc16da36d..62f49fe46273 100644
--- a/sound/soc/qcom/lpass-cpu.c
+++ b/sound/soc/qcom/lpass-cpu.c
@@ -1046,7 +1046,6 @@ static unsigned int of_lpass_cpu_parse_sd_lines(struct device *dev,
static void of_lpass_cpu_parse_dai_data(struct device *dev,
struct lpass_data *data)
{
- struct device_node *node;
int ret, i, id;
/* Allow all channels by default for backwards compatibility */
@@ -1056,7 +1055,7 @@ static void of_lpass_cpu_parse_dai_data(struct device *dev,
data->mi2s_capture_sd_mode[id] = LPAIF_I2SCTL_MODE_8CH;
}
- for_each_child_of_node(dev->of_node, node) {
+ for_each_child_of_node_scoped(dev->of_node, node) {
ret = of_property_read_u32(node, "reg", &id);
if (ret || id < 0) {
dev_err(dev, "valid dai id not found: %d\n", ret);
diff --git a/sound/soc/qcom/qdsp6/q6afe-dai.c b/sound/soc/qcom/qdsp6/q6afe-dai.c
index 7d9628cda875..64735f2adf8f 100644
--- a/sound/soc/qcom/qdsp6/q6afe-dai.c
+++ b/sound/soc/qcom/qdsp6/q6afe-dai.c
@@ -962,10 +962,9 @@ static const struct snd_soc_component_driver q6afe_dai_component = {
static void of_q6afe_parse_dai_data(struct device *dev,
struct q6afe_dai_data *data)
{
- struct device_node *node;
int ret;
- for_each_child_of_node(dev->of_node, node) {
+ for_each_child_of_node_scoped(dev->of_node, node) {
unsigned int lines[Q6AFE_MAX_MI2S_LINES];
struct q6afe_dai_priv_data *priv;
int id, i, num_lines;
diff --git a/sound/soc/qcom/qdsp6/q6asm-dai.c b/sound/soc/qcom/qdsp6/q6asm-dai.c
index a400c9a31fea..d7680dd3a3bb 100644
--- a/sound/soc/qcom/qdsp6/q6asm-dai.c
+++ b/sound/soc/qcom/qdsp6/q6asm-dai.c
@@ -1236,10 +1236,8 @@ static int of_q6asm_parse_dai_data(struct device *dev,
{
struct snd_soc_dai_driver *dai_drv;
struct snd_soc_pcm_stream empty_stream;
- struct device_node *node;
int ret, id, dir, idx = 0;
-
pdata->num_dais = of_get_child_count(dev->of_node);
if (!pdata->num_dais) {
dev_err(dev, "No dais found in DT\n");
@@ -1253,7 +1251,7 @@ static int of_q6asm_parse_dai_data(struct device *dev,
memset(&empty_stream, 0, sizeof(empty_stream));
- for_each_child_of_node(dev->of_node, node) {
+ for_each_child_of_node_scoped(dev->of_node, node) {
ret = of_property_read_u32(node, "reg", &id);
if (ret || id >= MAX_SESSIONS || id < 0) {
dev_err(dev, "valid dai id not found:%d\n", ret);
--
2.47.1
_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 6/6] ASoC: qcom: Use helper function for_each_child_of_node_scoped()
2025-05-20 9:11 ` [PATCH 6/6] ASoC: qcom: " Ai Chao
@ 2025-05-20 9:19 ` Krzysztof Kozlowski
0 siblings, 0 replies; 10+ messages in thread
From: Krzysztof Kozlowski @ 2025-05-20 9:19 UTC (permalink / raw)
To: Ai Chao, johannes, perex, tiwai, shengjiu.wang, Xiubo.Lee,
festevam, nicoleotsuka, lgirdwood, broonie, shawnguo, s.hauer,
kernel, jbrunet, neil.armstrong, khilman, martin.blumenstingl,
srinivas.kandagatla, kuninori.morimoto.gx, zhangzekun11, ckeepax,
drhodes, alexey.klimov
Cc: linuxppc-dev, linux-sound, linux-kernel, imx, linux-arm-kernel,
linux-amlogic, linux-arm-msm, linux-renesas-soc
On 20/05/2025 11:11, Ai Chao wrote:
> The for_each_child_of_node_scoped() helper provides a scope-based
> clean-up functionality to put the device_node automatically, and
> as such, there is no need to call of_node_put() directly.
I do not see any of_node_put() there, so I don't understand what is the
benefit of this and how this commit msg explains reason behind the change.
Best regards,
Krzysztof
_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 4/6] ASoC: meson: Use helper function for_each_child_of_node_scoped()
2025-05-20 9:11 ` [PATCH 4/6] ASoC: meson: " Ai Chao
@ 2025-05-20 21:43 ` kernel test robot
0 siblings, 0 replies; 10+ messages in thread
From: kernel test robot @ 2025-05-20 21:43 UTC (permalink / raw)
To: Ai Chao, johannes, perex, tiwai, shengjiu.wang, Xiubo.Lee,
festevam, nicoleotsuka, lgirdwood, broonie, shawnguo, s.hauer,
kernel, jbrunet, neil.armstrong, khilman, martin.blumenstingl,
srinivas.kandagatla, kuninori.morimoto.gx, zhangzekun11,
krzysztof.kozlowski, ckeepax, drhodes, alexey.klimov
Cc: oe-kbuild-all, linuxppc-dev, linux-sound, linux-kernel, imx,
linux-arm-kernel, linux-amlogic, linux-arm-msm
Hi Ai,
kernel test robot noticed the following build errors:
[auto build test ERROR on broonie-sound/for-next]
[also build test ERROR on tiwai-sound/for-next tiwai-sound/for-linus wireless-next/main wireless/main linus/master v6.15-rc7 next-20250516]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Ai-Chao/ASoC-ppc-Use-helper-function-for_each_child_of_node_scoped/20250520-171556
base: https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next
patch link: https://lore.kernel.org/r/20250520091131.4150248-5-aichao%40kylinos.cn
patch subject: [PATCH 4/6] ASoC: meson: Use helper function for_each_child_of_node_scoped()
config: arc-randconfig-002-20250521 (https://download.01.org/0day-ci/archive/20250521/202505210557.EpJig9BQ-lkp@intel.com/config)
compiler: arc-linux-gcc (GCC) 12.4.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250521/202505210557.EpJig9BQ-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202505210557.EpJig9BQ-lkp@intel.com/
All errors (new ones prefixed by >>):
In file included from include/linux/device.h:15,
from include/sound/soc.h:15,
from sound/soc/meson/meson-card-utils.c:8:
sound/soc/meson/meson-card-utils.c: In function 'meson_card_set_be_link':
>> sound/soc/meson/meson-card-utils.c:166:71: error: 'np' undeclared (first use in this function); did you mean 'up'?
166 | dev_err(card->dev, "error setting %pOFn link name\n", np);
| ^~
include/linux/dev_printk.h:110:37: note: in definition of macro 'dev_printk_index_wrap'
110 | _p_func(dev, fmt, ##__VA_ARGS__); \
| ^~~~~~~~~~~
sound/soc/meson/meson-card-utils.c:166:17: note: in expansion of macro 'dev_err'
166 | dev_err(card->dev, "error setting %pOFn link name\n", np);
| ^~~~~~~
sound/soc/meson/meson-card-utils.c:166:71: note: each undeclared identifier is reported only once for each function it appears in
166 | dev_err(card->dev, "error setting %pOFn link name\n", np);
| ^~
include/linux/dev_printk.h:110:37: note: in definition of macro 'dev_printk_index_wrap'
110 | _p_func(dev, fmt, ##__VA_ARGS__); \
| ^~~~~~~~~~~
sound/soc/meson/meson-card-utils.c:166:17: note: in expansion of macro 'dev_err'
166 | dev_err(card->dev, "error setting %pOFn link name\n", np);
| ^~~~~~~
vim +166 sound/soc/meson/meson-card-utils.c
aa9c3b7273a58b Jerome Brunet 2020-02-13 134
aa9c3b7273a58b Jerome Brunet 2020-02-13 135 int meson_card_set_be_link(struct snd_soc_card *card,
aa9c3b7273a58b Jerome Brunet 2020-02-13 136 struct snd_soc_dai_link *link,
aa9c3b7273a58b Jerome Brunet 2020-02-13 137 struct device_node *node)
aa9c3b7273a58b Jerome Brunet 2020-02-13 138 {
aa9c3b7273a58b Jerome Brunet 2020-02-13 139 struct snd_soc_dai_link_component *codec;
aa9c3b7273a58b Jerome Brunet 2020-02-13 140 int ret, num_codecs;
aa9c3b7273a58b Jerome Brunet 2020-02-13 141
aa9c3b7273a58b Jerome Brunet 2020-02-13 142 num_codecs = of_get_child_count(node);
aa9c3b7273a58b Jerome Brunet 2020-02-13 143 if (!num_codecs) {
aa9c3b7273a58b Jerome Brunet 2020-02-13 144 dev_err(card->dev, "be link %s has no codec\n",
aa9c3b7273a58b Jerome Brunet 2020-02-13 145 node->full_name);
aa9c3b7273a58b Jerome Brunet 2020-02-13 146 return -EINVAL;
aa9c3b7273a58b Jerome Brunet 2020-02-13 147 }
aa9c3b7273a58b Jerome Brunet 2020-02-13 148
aa9c3b7273a58b Jerome Brunet 2020-02-13 149 codec = devm_kcalloc(card->dev, num_codecs, sizeof(*codec), GFP_KERNEL);
aa9c3b7273a58b Jerome Brunet 2020-02-13 150 if (!codec)
aa9c3b7273a58b Jerome Brunet 2020-02-13 151 return -ENOMEM;
aa9c3b7273a58b Jerome Brunet 2020-02-13 152
aa9c3b7273a58b Jerome Brunet 2020-02-13 153 link->codecs = codec;
aa9c3b7273a58b Jerome Brunet 2020-02-13 154 link->num_codecs = num_codecs;
aa9c3b7273a58b Jerome Brunet 2020-02-13 155
6c05494fd8e28e Ai Chao 2025-05-20 156 for_each_child_of_node_scoped(node, np) {
2e1dbea1f8a358 Kuninori Morimoto 2023-06-20 157 ret = meson_card_parse_dai(card, np, codec);
6c05494fd8e28e Ai Chao 2025-05-20 158 if (ret)
aa9c3b7273a58b Jerome Brunet 2020-02-13 159 return ret;
aa9c3b7273a58b Jerome Brunet 2020-02-13 160
aa9c3b7273a58b Jerome Brunet 2020-02-13 161 codec++;
aa9c3b7273a58b Jerome Brunet 2020-02-13 162 }
aa9c3b7273a58b Jerome Brunet 2020-02-13 163
aa9c3b7273a58b Jerome Brunet 2020-02-13 164 ret = meson_card_set_link_name(card, link, node, "be");
aa9c3b7273a58b Jerome Brunet 2020-02-13 165 if (ret)
aa9c3b7273a58b Jerome Brunet 2020-02-13 @166 dev_err(card->dev, "error setting %pOFn link name\n", np);
aa9c3b7273a58b Jerome Brunet 2020-02-13 167
aa9c3b7273a58b Jerome Brunet 2020-02-13 168 return ret;
aa9c3b7273a58b Jerome Brunet 2020-02-13 169 }
aa9c3b7273a58b Jerome Brunet 2020-02-13 170 EXPORT_SYMBOL_GPL(meson_card_set_be_link);
aa9c3b7273a58b Jerome Brunet 2020-02-13 171
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 3/6] ASoC: renesas: Use helper function for_each_child_of_node_scoped()
2025-05-20 9:11 ` [PATCH 3/6] ASoC: renesas: " Ai Chao
@ 2025-05-21 23:43 ` Kuninori Morimoto
0 siblings, 0 replies; 10+ messages in thread
From: Kuninori Morimoto @ 2025-05-21 23:43 UTC (permalink / raw)
To: Ai Chao
Cc: johannes, perex, tiwai, shengjiu.wang, Xiubo.Lee, festevam,
nicoleotsuka, lgirdwood, broonie, shawnguo, s.hauer, kernel,
jbrunet, neil.armstrong, khilman, martin.blumenstingl,
srinivas.kandagatla, zhangzekun11, krzysztof.kozlowski, ckeepax,
drhodes, alexey.klimov, linuxppc-dev, linux-sound, linux-kernel,
imx, linux-arm-kernel, linux-amlogic, linux-arm-msm,
linux-renesas-soc
Hi Ai
Thank you for the patch
> The for_each_child_of_node_scoped() helper provides a scope-based
> clean-up functionality to put the device_node automatically, and
> as such, there is no need to call of_node_put() directly.
>
> Thus, use this helper to simplify the code.
>
> Signed-off-by: Ai Chao <aichao@kylinos.cn>
> ---
(snip)
> @@ -1270,16 +1263,15 @@ static int rsnd_dai_of_node(struct rsnd_priv *priv, int *is_graph)
>
> of_node_put(node);
>
> - for_each_child_of_node(np, node) {
> - if (!of_node_name_eq(node, RSND_NODE_DAI))
> + for_each_child_of_node_scoped(np, ports) {
> + if (!of_node_name_eq(ports, RSND_NODE_DAI))
> continue;
>
> - priv->component_dais[i] = of_get_child_count(node);
> + priv->component_dais[i] = of_get_child_count(ports);
> nr += priv->component_dais[i];
> i++;
> if (i >= RSND_MAX_COMPONENT) {
> dev_info(dev, "reach to max component\n");
> - of_node_put(node);
> break;
> }
> }
Here changes "node" to "ports", but please keep "node".
Here is checking "node" instead of "ports".
Except this
Acked-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Thank you for your help !!
Best regards
---
Kuninori Morimoto
_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2025-05-21 23:44 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-05-20 9:11 [PATCH 0/6] Use helper function for_each_child_of_node_scoped() Ai Chao
2025-05-20 9:11 ` [PATCH 1/6] ASoC: ppc: " Ai Chao
2025-05-20 9:11 ` [PATCH 2/6] ASoC: aoa: " Ai Chao
2025-05-20 9:11 ` [PATCH 3/6] ASoC: renesas: " Ai Chao
2025-05-21 23:43 ` Kuninori Morimoto
2025-05-20 9:11 ` [PATCH 4/6] ASoC: meson: " Ai Chao
2025-05-20 21:43 ` kernel test robot
2025-05-20 9:11 ` [PATCH 5/6] ASoC: imx-card: " Ai Chao
2025-05-20 9:11 ` [PATCH 6/6] ASoC: qcom: " Ai Chao
2025-05-20 9:19 ` Krzysztof Kozlowski
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®