有几个操作和dapm widget链表更新相关
1) 初始化的时候,snd_soc_instantiate_card里调用snd_soc_dapm_new_widgets,最终会调用dapm_power_widgets
2) 在用户空间通过tinymix设置路径,在SOC_DAPM_ENUM中的put或者get函数最终会调用dapm_power_widgets
3) 在用户空间通过tinyplay播放或者录音是的soc_pcm_prepare和soc_pcm_close,最终会调用dapm_power_widgets
以上3个地方最终会引发dapm widget链表的更新,都会调用一个很关键的函数dapm_power_widgets
以下几个操作会引起dapm widget链表更新
snd_soc_dapm_new_widgets
snd_soc_dapm_new_widgets在snd_soc_instantiate_card的时候会被调用,主要的作用是将card->widgets链表中widget的所有control添加到card->kcontrol链表中,最后会调用dapm_power_widgets
int snd_soc_dapm_new_widgets(struct snd_soc_dapm_cont