[alsa-devel] Is that reasonable to support pinctrl PM in ASoC core?

Linus Walleij linus.walleij at linaro.org
Thu Oct 24 15:19:03 CEST 2013

On Thu, Oct 24, 2013 at 1:52 PM, Mark Brown <broonie at kernel.org> wrote:
> On Thu, Oct 24, 2013 at 07:07:43PM +0800, Nicolin Chen wrote:
>> And I think this pinctrl PM might be also beneficial to cpu dai drivers
>> since they might have actual pins, and they can hypnotize/wake them up
>> along with runtime PM:
> I think you're right that this is a useful and obvious feature but the
> question I have is that since the standard implementation is going to be
> to do the pinctrl calls in lockstep with the runtime PM handling and
> since this is likely to be the same for pretty much any subsystem might
> it be better to add the hooks at the runtime PM level rather than in the
> subsystem?  Or perhaps we should just add them in subsystems and then
> once some reasonable number of subsystems have done this then pull it
> into the PM core?

This makes a lot of sense, the only problem I have traditionally had
with this is that there exist cases where you want to put pinctrl
handles to sleep or idle aside from runtime PM.

For example:

- UARTs disabled from userspace shall have their pins put to
  sleep (see drivers/tty/serial/uart-pl011.c)

- I2C or SPI hosts with no devices connected to them should be
  nailed to sleep. (It's not possible to detect an unused I2C or SPI
  host today, but a feature we should add.)

Maybe the right way to do these is also to use runtime_pm*,
but the thing is that today these things are done also when
CONFIG_PM_RUNTIME is not set. Which is something you
might sometimes want.

Or not? Should we say that unless you have
CONFIG_PM_RUNTIME you don't deserve saving these
microamps anyway?

Linus Walleij

More information about the Alsa-devel mailing list