diff mbox series

ASoC: audio-graph-card2: Purge absent supplies for device tree nodes

Message ID 20241108-graph_dt_fix-v1-1-173e2f9603d6@jookia.org (mailing list archive)
State Accepted
Commit f8da001ae7af0abd9f6250c02c01a1121074ca60
Headers show
Series ASoC: audio-graph-card2: Purge absent supplies for device tree nodes | expand

Commit Message

John Watts Nov. 8, 2024, 1:37 a.m. UTC
The audio graph card doesn't mark its subnodes such as multi {}, dpcm {}
and c2c {} as not requiring any suppliers. This causes a hang as Linux
waits for these phantom suppliers to show up on boot.
Make it clear these nodes have no suppliers.

Example error message:
[   15.208558] platform 2034000.i2s: deferred probe pending: platform: wait for supplier /sound/multi
[   15.208584] platform sound: deferred probe pending: asoc-audio-graph-card2: parse error

Signed-off-by: John Watts <contact@jookia.org>
---
 sound/soc/generic/audio-graph-card2.c | 3 +++
 1 file changed, 3 insertions(+)


---
base-commit: 98f7e32f20d28ec452afb208f9cffc08448a2652
change-id: 20241108-graph_dt_fix-d1f0db88a696

Best regards,

Comments

Mark Brown Nov. 8, 2024, 1 p.m. UTC | #1
On Fri, Nov 08, 2024 at 12:37:15PM +1100, John Watts wrote:
> The audio graph card doesn't mark its subnodes such as multi {}, dpcm {}
> and c2c {} as not requiring any suppliers. This causes a hang as Linux
> waits for these phantom suppliers to show up on boot.
> Make it clear these nodes have no suppliers.

Copying in Morimoto-san.

> 
> Example error message:
> [   15.208558] platform 2034000.i2s: deferred probe pending: platform: wait for supplier /sound/multi
> [   15.208584] platform sound: deferred probe pending: asoc-audio-graph-card2: parse error
> 
> Signed-off-by: John Watts <contact@jookia.org>
> ---
>  sound/soc/generic/audio-graph-card2.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/sound/soc/generic/audio-graph-card2.c b/sound/soc/generic/audio-graph-card2.c
> index 56f7f946882e831cc4474c86b31f69e15de1549a..68f1da6931af2161dc8815b8c04d10cd614cc182 100644
> --- a/sound/soc/generic/audio-graph-card2.c
> +++ b/sound/soc/generic/audio-graph-card2.c
> @@ -270,16 +270,19 @@ static enum graph_type __graph_get_type(struct device_node *lnk)
>  
>  	if (of_node_name_eq(np, GRAPH_NODENAME_MULTI)) {
>  		ret = GRAPH_MULTI;
> +		fw_devlink_purge_absent_suppliers(&np->fwnode);
>  		goto out_put;
>  	}
>  
>  	if (of_node_name_eq(np, GRAPH_NODENAME_DPCM)) {
>  		ret = GRAPH_DPCM;
> +		fw_devlink_purge_absent_suppliers(&np->fwnode);
>  		goto out_put;
>  	}
>  
>  	if (of_node_name_eq(np, GRAPH_NODENAME_C2C)) {
>  		ret = GRAPH_C2C;
> +		fw_devlink_purge_absent_suppliers(&np->fwnode);
>  		goto out_put;
>  	}
>  
> 
> ---
> base-commit: 98f7e32f20d28ec452afb208f9cffc08448a2652
> change-id: 20241108-graph_dt_fix-d1f0db88a696
> 
> Best regards,
> -- 
> John Watts <contact@jookia.org>
>
Kuninori Morimoto Nov. 11, 2024, 12:33 a.m. UTC | #2
Hi John

Thank you for your patch

> The audio graph card doesn't mark its subnodes such as multi {}, dpcm {}
> and c2c {} as not requiring any suppliers. This causes a hang as Linux
> waits for these phantom suppliers to show up on boot.
> Make it clear these nodes have no suppliers.
> 
> Example error message:
> [   15.208558] platform 2034000.i2s: deferred probe pending: platform: wait for supplier /sound/multi
> [   15.208584] platform sound: deferred probe pending: asoc-audio-graph-card2: parse error
> 
> Signed-off-by: John Watts <contact@jookia.org>

I had (not same this but) similar issue before.

	a2187d0dadfc308551bbb1b8d6caee69e2ad4744
	("ASoC: dt-bindings: renesas,rsnd: add post-init-providers property")

Your patch also solve my issue too.
It seems your one is more simple and reasonable solution.
# I will post revert above patch after this

Acked-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>

Thank you for your help !!

Best regards
---
Kuninori Morimoto
Mark Brown Nov. 11, 2024, 2:21 p.m. UTC | #3
On Fri, 08 Nov 2024 12:37:15 +1100, John Watts wrote:
> The audio graph card doesn't mark its subnodes such as multi {}, dpcm {}
> and c2c {} as not requiring any suppliers. This causes a hang as Linux
> waits for these phantom suppliers to show up on boot.
> Make it clear these nodes have no suppliers.
> 
> Example error message:
> [   15.208558] platform 2034000.i2s: deferred probe pending: platform: wait for supplier /sound/multi
> [   15.208584] platform sound: deferred probe pending: asoc-audio-graph-card2: parse error
> 
> [...]

Applied to

   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next

Thanks!

[1/1] ASoC: audio-graph-card2: Purge absent supplies for device tree nodes
      commit: f8da001ae7af0abd9f6250c02c01a1121074ca60

All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.

You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying
to this mail.

Thanks,
Mark
diff mbox series

Patch

diff --git a/sound/soc/generic/audio-graph-card2.c b/sound/soc/generic/audio-graph-card2.c
index 56f7f946882e831cc4474c86b31f69e15de1549a..68f1da6931af2161dc8815b8c04d10cd614cc182 100644
--- a/sound/soc/generic/audio-graph-card2.c
+++ b/sound/soc/generic/audio-graph-card2.c
@@ -270,16 +270,19 @@  static enum graph_type __graph_get_type(struct device_node *lnk)
 
 	if (of_node_name_eq(np, GRAPH_NODENAME_MULTI)) {
 		ret = GRAPH_MULTI;
+		fw_devlink_purge_absent_suppliers(&np->fwnode);
 		goto out_put;
 	}
 
 	if (of_node_name_eq(np, GRAPH_NODENAME_DPCM)) {
 		ret = GRAPH_DPCM;
+		fw_devlink_purge_absent_suppliers(&np->fwnode);
 		goto out_put;
 	}
 
 	if (of_node_name_eq(np, GRAPH_NODENAME_C2C)) {
 		ret = GRAPH_C2C;
+		fw_devlink_purge_absent_suppliers(&np->fwnode);
 		goto out_put;
 	}