On 03/19/2013 02:35 AM, Lars-Peter Clausen wrote:
On 03/19/2013 01:32 AM, Kuninori Morimoto wrote:
Hi Lars
These patches switch over to use snd_soc_register_component() instead of snd_soc_register_dai[s]() on all drivers Last patch moves snd_soc_[un]register_dai[s]() to non global function.
I could compile test on some of them, but couldn't for all drivers
These patches are based on asoc/topic/component branch
Hi,
quite a few drivers use snd_soc_register_dai(), while snd_soc_register_component() uses snd_soc_register_dais(). snd_soc_register_dai() uses fmt_single_name(), while snd_soc_register_dais() uses fmt_multiple_name() to create the name for the device. So for all drivers using snd_soc_register_dai() the name of the DAI is different now, which will break the name based matching of the dai link.
Thank you for pointing it. I understand about this.
I think if snd_soc_register_component() can use propely snd_soc_register_dai() and snd_soc_register_dais(), this issue is solved ?
This will fix it for most drivers, but there are a couple of drivers which use snd_soc_register_dais with 1 dai.
E.g. tegra/tegra20_ac97.c, sh/siu_dai.c, sh/hac.c, sh.ssi.c
I believe this can be fixed simply by adjusting the relevant machine driver(s) to match whatever the new name is.
Any change to tegra20_ac97.c would only affect sound/soc/tegra/tegra_wm9712.c's struct tegra_wm9712_dai .cpu_dai_name field. I suspect the correct fix might be to just remove the assignment to .cpu_dai_name in tegra_wm9712.c; I think that because the .cpu_of_node field is always set by that driver, the value of .cpu_dai_name is never used? Anyway, if you fix tegra_wm9712.c in your patch, I hope that Lucas Stach can test it.