Hi Mark Thank you for the patch ! > The generic snd_soc_dai_get_dlc() contains a default translation function > for DAI names which has factored out common code in a number of card > drivers, resolving the dai_name and of_node either using a driver provided > translation function or with a generic implementation. Unfortunately the > of_node can't be set by the translation function since it currently doesn't > have an interface to do that but snd_soc_dai_get_dlc() only initialises the > of_node in the case where there is no translation function. > > This breaks the Meson support after conversion to use the generic helpers > since the DPCM cards for it check which component of the SoC is connected > to each link by checking the compatible for the component and the Meson > components provide a custom operation so don't use the generic code. > > Fix this and potentially other cards by unconditionally storing the node in > the dai_link_component, there shouldn't be a binding specific of_node > selected since that's how we determine the translation function. > > Fixes: 2e1dbea1f8a3 ("ASoC: meson: use snd_soc_{of_}get_dlc()") > Fixes: 3c8b5861850c ("ASoC: soc-core.c: add index on snd_soc_of_get_dai_name()") > Signed-off-by: Mark Brown <broonie@xxxxxxxxxx> > --- Yes, indeed. But I think we want to set it under lock and if ret was no error case ? ---------- diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index ab1f302ee078..5cc3f4cc9d1b 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c @@ -3375,7 +3375,6 @@ int snd_soc_get_dlc(const struct of_phandle_args *args, struct snd_soc_dai_link_ id--; } - dlc->of_node = args->np; dlc->dai_name = snd_soc_dai_name_get(dai); } else if (ret) { /* @@ -3389,6 +3388,10 @@ int snd_soc_get_dlc(const struct of_phandle_args *args, struct snd_soc_dai_link_ break; } + + if (ret == 0) + dlc->of_node = args->np; + mutex_unlock(&client_mutex); return ret; } ----------- Thank you for your help !! Best regards --- Kuninori Morimoto