On Thu, 2004-10-28 at 09:19 -0700, David Brownell wrote: > > Somewhat related: it's possible that some of the ARM clock > gating APIs should become more mainstream. Those are set up > so that for example when nobody needs CLK48 any longer, it > can be automatically turned off. (Benjamin, this is a > different model than you've described so far: drivers > determining clock usage, not system sleep transitions. > It gives much finer control over power consumption, since > power can be reduced without going to sleep.) It's a different thing and totally orthogonal, more in line with what I call dynamic PM. I do something similar on PowerMac, though I still have to implement some refcounting on some clocks (I currently only swich off some devices in the Apple IO ASIC when not used, but I could do a better job of counting who uses what clock and turning the PLLs off, darwin sort-of does that). > Those APIs need a bit of work though; for example, if the > 48 MHz DPLL can be disabled, that might mean that the system > is now eligible for "deep sleep" ... but there's no callback > to report that. The information flow should go both ways. > If user mode forces such a sleep state, that clock must be > disabled -- as a side effect of all the drivers dropping > their claims. But when the system is sufficiently idle, > since the drivers went idle, it should probably just enter > that sleep state by itself. And in the same way, if a > cpufreq change slows down a clock, a driver may need to > adapt ... or even veto some changes, since the cpu clock > changes can affect device clocking. > > - Dave -- Benjamin Herrenschmidt <benh@xxxxxxxxxxxxxxxxxxx>