Re: [RFD] Automatic suspend

Roland Dreier
2009-02-16T06:23:04Z

> > (2) put given subset of devices into low power states whenever they
> > are not used, without putting the entire system into a sleep state.

> For (2), for me the answer is very obvious:

> The Device Driver needs to make the decision to put the device to sleep.
> There are no ifs and buts about this.

For PC-like systems this is probably all that needs to be said. However
for highly integrated SoC systems (as Android is obviously targeting)
there is another level of complexity due to the interdependency among
various devices... eg things like if I know the SD controller and the
wifi chip are both asleep then I can put my SDIO controller to sleep;
and if the SDIO controller and the NAND controller are both asleep then
I can stop clock X and save more power; etc etc.

This is what the PowerOp/DPM work was all about. Unfortunately that
doesn't seem to have made much progress upstream. But there's no doubt
in my mind that we need some framework beyond individual drivers that
manages the system's power as a whole. And the current device tree is
probably not sufficient -- eg the bus hierarchy of a device may not
match up with the clock tree at all.

- R.