iMac G5 frequency switching

Benjamin Herrenschmidt benh at kernel.crashing.org
Tue Sep 20 13:28:37 EST 2005


> If some kind soul has a newer iMac G5 and would let me telnet into
> OF, I'd be willing to try my luck and see if there's something
> different in there, otherwise someone would have to dive into
> whatever OS X does.  That someone is unlikely to be me, to be
> entirely frank -- I probably can't spend much more time (which I'd
> need to get up to speed reading ppc64 machine code) on this until
> some time in March 2006.  Sorry.
> 
> I *would* have time to explain my findings so far, as poor as they
> are, to anyone wanting to take up the voltage control issue on the
> imac G5s.  So, if anyone coming across this while googling for imac G5
> support in Linux feels like kernel work, drop me a mail...

You should read the OS X platform code. It tells you how to decode the
data in the "smu-partition-*" properties of the smu node. Especially,
look for "SMU_Neo2_PlatformPlugin.h"

Those contain lots of useful things, including the list of "operating
points". From what I've seen so far, iMac G5s don't seem to have more
than one, with only one sysclk. This is in partition 0x12
(kCPU_FVT_OperatingPointsPartID)

One operating point is a structure containing:

 - a sysclk (that is the master clock controller by the pulsar chip)
 - a Tmax, that is the max temperature allowed before switching to the
   next operating point (or overtemp if none)
 - the CPU core voltage setting for the 3 powertunes states (full freq,
   1/2 and 1/4). Note that only 1/2 is actually supported, thus the
   value for 1/4 in the device-trees I've seen so far is always 0

Anyway, I'll try to spend some time this week doing a crude cpufreq
driver doing proper voltage switching at least (no operating point
change, first because I haven't access to a machine that has more than
one operating point, and because I don't know how to deal with pulsar
chips). I may also give a go to a thermal driver.

Ben.





More information about the Linuxppc64-dev mailing list