Hi ALSA ML I'm checking ALSA SoC framework. Now, many Components are connected to Card. When we want to do something to all Components, we have 2 type of loops 1) for_each_card_components(card, component) { ... } 2) for_each_card_rtds(card, rtd) { for_each_rtd_components(rtd, i, component) { ... } } But, I noticed that these 1) and 2) are not same. Please double check it. We have 3 ways to connect Component to Card. a) via Card pre-linked Aux (= card->aux_dev) b) via Card pre-linked link (= card->dai_link) c) via Topology dai_link static int snd_soc_bind_card(struct snd_soc_card *card) { ... a) ret = soc_bind_aux_dev(card); ... for_each_card_prelinks(card, i, dai_link) { b) ret = snd_soc_add_pcm_runtime(card, dai_link); ... } ... c) ret = snd_soc_card_probe(card); ... X) ret = soc_probe_link_components(card); ... Y) ret = soc_probe_aux_devices(card); ... Here, b) and c) has dai_link / rtd. And, connected Component are probed at X) (= b) + c)) Y) (= a)). Then, probed Component are connected to card->component_dev_list. Above 1) loop is based on it. In total, 1) and 2) loop difference are 1) loop is for a) + b) + c) 2) loop is for b) + c) Now, ALSA SoC suspend/resume checks below, but a) doesn't have it. rtd->dai_link->ignore_suspend. Thus, "suspend" is using 2) loop, but, "resume" is using 1) loop. My question here is that can AUX suspend/resume ? I think we need/want to use 1) loop for it. Thank you for your help !! Best regards --- Kuninori Morimoto _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx https://mailman.alsa-project.org/mailman/listinfo/alsa-devel