[alsa-devel] Question about pinctrl_pm_select_xxx()
Kuninori Morimoto
kuninori.morimoto.gx at renesas.com
Wed Jun 19 09:22:11 CEST 2019
Hi ALSA ML
I noticed pinctrl_pm_select_xxx() unbalance.
I think these are paired function
pinctrl_pm_select_default_state()
pinctrl_pm_select_sleep_state()
I can find pinctrl_pm_select_sleep_state() for component at
snd_soc_suspend().
int snd_soc_suspend(struct device *dev)
{
...
if (!snd_soc_component_is_suspended(component)) {
switch (snd_soc_dapm_get_bias_level(dapm)) {
...
case SND_SOC_BIAS_OFF:
...
/* deactivate pins to sleep state */
=> pinctrl_pm_select_sleep_state(component->dev);
break;
}
...
}
...
}
But, I can't find its paired pinctrl_pm_select_default_state().
It looks strange for me. Is this really needed ??
And about pinctrl_pm_select_xxx() for CPU/Codec DAI,
Many places are calling pinctrl_pm_select_xxx() for both CPU/Codec.
snd_soc_suspend() cares only CPU only, but snd_soc_resume() cares both.
Is this bug ??
int snd_soc_suspend(struct device *dev)
{
...
for_each_card_rtds(card, rtd) {
/* deactivate pins to sleep state */
=> pinctrl_pm_select_sleep_state(cpu_dai->dev);
}
...
}
int snd_soc_resume(struct device *dev)
{
...
for_each_card_rtds(card, rtd) {
...
if (cpu_dai->active)
=> pinctrl_pm_select_default_state(cpu_dai->dev);
for_each_rtd_codec_dai(rtd, i, codec_dai) {
if (codec_dai->active)
=> pinctrl_pm_select_default_state(codec_dai->dev);
}
}
...
}
Thank you for your help !!
Best regards
---
Kuninori Morimoto
More information about the Alsa-devel
mailing list