Subject: IBM PowerPC 750FX
To: None <port-powerpc@netbsd.org>
From: Matthias Kretschmer <mccratch@gmx.net>
List: port-powerpc
Date: 10/20/2002 18:18:02
Hello!

Don't know if somebody already tried to do this, but the 750FX has the 
capability to change it's clockspeed (of the core itself using 
multipliers and the bus-speed) at runtime. The cpu is for example used 
in the iBook (at least the 2002). The steps for implementing it a very 
easy at least on the iBook:

The 750FX utilizes two PLLs to drive the clock speed. At one time only 
one is selected. PLL0 can be driven from external clock, PLL1 is 
internal only. The trick is, that the PLL0 and PLL1 are initialized 
with PLL0 to external clock and PLL1 for low power mode (so this is on 
the only box with this CPU I could check - I also checked some sources 
for other operating systems, which in seem to rely on this too, but 
maybe someone else with check this). So by simply changing the PLL the 
CPU is placed in low power mode. Works nice with 1.6 release I used for 
testing it.

PLL0 or PLL1 are selected by bit 15 of the HID1 register (SPR 0x3f1).

I also disabled BHT by changing the BTIC bit in the HID0 register, this 
is assumed to save another bit of power (some SYNCs/ISYNCs have to be 
placed before and after the HID0 change for this).

The current implementation is a bit ugly, but if there is some interest 
I could do a cleaned up implementation (currently I use a device and a 
small utility to change the cpu modes) or give someone the current code 
for playing.

--
Greetings
Matthias Kretschmer