Hi Mark
Thank you for your feedback
But, I can't find its paired pinctrl_pm_select_default_state(). It looks strange for me. Is this really needed ??
It's in snd_soc_resume() for active DAIs, or otherwise when we open the PCM.
OK, I see. Now, I double checked about it.
In my understanding, we need these at open/close/suspend/resume. But for component, it only has for suspend. If we need these, I think we want to have these at open/close/resume.
Now, it uses pinctrl_pm_select_xxx() with "component->dev".
pinctrl_pm_select_sleep_state(component->dev); ~~~~~~~~~~~~~~ But, this component->dev = dai->dev
static struct snd_soc_dai *soc_add_dai(...) { => struct device *dev = component->dev; ... => dai->dev = dev; ... }
Thus, calling it from DAI only is very enough, I think. In my check, open/close/suspend/resume all has DAI pinctrl_pm_select_xxx() except suspend:Codec. I guess, because suspend doesn't have Codec pinctrl_pm_select_xxx() somehow, thus, someone added Component pinctrl_pm_select_xxx() instead somehow ?? But, what do you think ?
|CPU |Codec |Component | open |O |O | | close |O |O | | suspend |O | |O | resume |O |O | |