[alsa-devel] Question about pinctrl_pm_select_xxx()

Kuninori Morimoto kuninori.morimoto.gx at renesas.com
Thu Jun 20 02:35:06 CEST 2019


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	|		|


More information about the Alsa-devel mailing list