Subject: iBook G4 CPU speed control
To: netbsd-macppc <port-macppc@NetBSD.ORG>
From: Michael <macallan18@earthlink.net>
List: port-macppc
Date: 09/25/2005 21:52:58
--Signature_Sun__25_Sep_2005_21_52_58_-0400_nFjB7ZwntpIVZwCh
Content-Type: multipart/mixed;
 boundary="Multipart_Sun__25_Sep_2005_21_52_58_-0400_8e/tt1DxkLwDVe0K"

--Multipart_Sun__25_Sep_2005_21_52_58_-0400_8e/tt1DxkLwDVe0K
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Hello,

I've finally found out how to switch CPU speed on G4 Macs with Intrepid
chipset ( like iBook G4, some PowerMacs and PowerBooks and probably
others )

The problem:
cpu0 at mainbus0: 7455 (Revision 3.3), ID 0 (primary)
cpu0: HID0 8450c0bc<EMCP,TBEN,NAP,DPM,ICE,DCE,SGE,BTIC,LRSTK,FOLD,BHT>,
PS=3D1=20
cpu0: 614.39 MHz, 256KB L2 cache

It's supposed to run at 800 MHz but that's what the firmware sets up.
With the attached patch you'll get:

obio0 at pci1 dev 23 function 0: addr 0x80000000
enabling Intrepid CPU speed control
CPU speed is low

and this:
~# sysctl machdep
...
machdep.cpu_speed =3D 0

~# envstat -r
case temperature:     49.000 degC
 CPU temperature:     54.000 degC
 GPU temperature:     51.000 degC
        voltage0:      1.589 V
            fan0:          0 RPM


Now we can do
~# sysctl -w machdep.cpu_speed=3D1
machdep.cpu_speed: 0 -> 1

That's it, now the CPU runs at full speed.

We can check core voltage to see that something changed:
~# envstat -r
case temperature:     49.000 degC
 CPU temperature:     54.000 degC
 GPU temperature:     51.000 degC
        voltage0:      1.810 V
            fan0:          0 RPM

~# flops

   FLOPS C Program (Double Precision), V2.0 18 Dec 1992

   Module     Error        RunTime      MFLOPS
                            (usec)
     1     -7.6739e-13      0.0816    171.6341

with speed back to low we get:

~# flops

   FLOPS C Program (Double Precision), V2.0 18 Dec 1992

   Module     Error        RunTime      MFLOPS
                            (usec)
     1     -7.6739e-13      0.0966    144.9620

So far this in only known to work on my iBook. It may or may not work on
different hardware.

have fun
Michael

--Multipart_Sun__25_Sep_2005_21_52_58_-0400_8e/tt1DxkLwDVe0K
Content-Type: application/octet-stream; name=cpuspeed.patch
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=cpuspeed.patch

SW5kZXg6IG9iaW8uYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9zcmMvc3lzL2FyY2gv
bWFjcHBjL2Rldi9vYmlvLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjIKZGlmZiAtdSAtdyAt
cjEuMjIgb2Jpby5jCi0tLSBvYmlvLmMJNSBKdW4gMjAwNSAyMDowMjowMSAtMDAwMAkxLjIyCisr
KyBvYmlvLmMJMjYgU2VwIDIwMDUgMDE6NTA6MzEgLTAwMDAKQEAgLTQ2LDYgKzQ2LDggQEAKIAog
I2luY2x1ZGUgPG1hY2hpbmUvYXV0b2NvbmYuaD4KIAorI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4K
Kwogc3RhdGljIHZvaWQgb2Jpb19hdHRhY2ggX19QKChzdHJ1Y3QgZGV2aWNlICosIHN0cnVjdCBk
ZXZpY2UgKiwgdm9pZCAqKSk7CiBzdGF0aWMgaW50IG9iaW9fbWF0Y2ggX19QKChzdHJ1Y3QgZGV2
aWNlICosIHN0cnVjdCBjZmRhdGEgKiwgdm9pZCAqKSk7CiBzdGF0aWMgaW50IG9iaW9fcHJpbnQg
X19QKCh2b2lkICosIGNvbnN0IGNoYXIgKikpOwpAQCAtNTUsNiArNTcsOSBAQAogCWludCBzY19u
b2RlOwogfTsKIAorc3RhdGljIGludCBvYmlvX2dldF9jcHVfc3BlZWQocGFkZHJfdCk7CitzdGF0
aWMgdm9pZCBvYmlvX3NldF9jcHVfc3BlZWQocGFkZHJfdCwgaW50KTsKK3N0YXRpYyB2b2lkIHNl
dHVwX3N5c2N0bChwYWRkcl90KTsKIAogQ0ZBVFRBQ0hfREVDTChvYmlvLCBzaXplb2Yoc3RydWN0
IG9iaW9fc29mdGMpLAogICAgIG9iaW9fbWF0Y2gsIG9iaW9fYXR0YWNoLCBOVUxMLCBOVUxMKTsK
QEAgLTEzNSw2ICsxNDAsMTkgQEAKIAkJCWluMzJyYihjYS5jYV9iYXNlYWRkciArIDB4NDApICYg
figodV9pbnQzMl90KTE8PDI1KSk7CiAJfQogCisJaWYgKFBDSV9QUk9EVUNUKHBhLT5wYV9pZCkg
PT0gUENJX1BST0RVQ1RfQVBQTEVfSU5UUkVQSUQpIHsKKwkJcGFkZHJfdCBhZGRyOworCQkKKwkJ
cHJpbnRmKCJlbmFibGluZyBJbnRyZXBpZCBDUFUgc3BlZWQgY29udHJvbFxuQ1BVIHNwZWVkIGlz
ICIpOworCQlhZGRyID0gY2EuY2FfYmFzZWFkZHIgKyAweDZhOworCQlpZiAob2Jpb19nZXRfY3B1
X3NwZWVkKGFkZHIpKSB7CisJCQlwcmludGYoImhpZ2hcbiIpOworCQl9IGVsc2UgeworCQkJcHJp
bnRmKCJsb3dcbiIpOworCQl9CisJCXNldHVwX3N5c2N0bChhZGRyKTsKKwl9CisJCiAJLyogRW5h
YmxlIGludGVybmFsIG1vZGVtIChQYW5nZWEpICovCiAJaWYgKFBDSV9QUk9EVUNUKHBhLT5wYV9p
ZCkgPT0gUENJX1BST0RVQ1RfQVBQTEVfUEFOR0VBX01BQ0lPKSB7CiAJCW91dDgoY2EuY2FfYmFz
ZWFkZHIgKyAweDAwNmEgKyAweDAzLCAweDA0KTsgLyogc2V0IHJlc2V0ICovCkBAIC0yMTYsMyAr
MjM0LDgzIEBACiAKIAlyZXR1cm4gVU5DT05GOwogfQorCitzdGF0aWMgdm9pZAorb2Jpb19zZXRf
Y3B1X3NwZWVkKHBhZGRyX3QgYWRkciwgaW50IGZhc3QpCit7CisKKwlpZihhZGRyICE9IDApIHsK
KwkJaWYgKGZhc3QpIHsKKwkJCW91dDhyYihhZGRyICsgMSwgNSk7CS8qIGJ1bXAgVmNvcmUgKi8K
KwkJCW91dDhyYihhZGRyLCA1KTsJLyogYnVtcCBDUFUgc3BlZWQgKi8KKwkJfSBlbHNlIHsKKwkJ
CW91dDhyYihhZGRyLCA0KTsJLyogbG93ZXIgQ1BVIHNwZWVkICovCisJCQlvdXQ4cmIoYWRkciAr
IDEsIDQpOwkvKiBsb3dlciBWY29yZSAqLworCQl9CisJfQorfQorCitzdGF0aWMgaW50CitvYmlv
X2dldF9jcHVfc3BlZWQocGFkZHJfdCBhZGRyKQoreworCQorCWlmKGFkZHIgIT0gMCkgeworCQlp
ZihpbjhyYihhZGRyKSAmIDEpCisJCQlyZXR1cm4gMTsKKwl9CisJcmV0dXJuIDA7Cit9CisKK1NZ
U0NUTF9TRVRVUChzeXNjdGxfY3B1c3BlZWRfc2V0dXAsICJzeXNjdGwgY3B1IHNwZWVkIHNldHVw
IikKK3sKKworCXN5c2N0bF9jcmVhdGV2KE5VTEwsIDAsIE5VTEwsIE5VTEwsCisJCSAgICAgICBD
VExGTEFHX1BFUk1BTkVOVCwKKwkJICAgICAgIENUTFRZUEVfTk9ERSwgIm1hY2hkZXAiLCBOVUxM
LAorCQkgICAgICAgTlVMTCwgMCwgTlVMTCwgMCwKKwkJICAgICAgIENUTF9NQUNIREVQLCBDVExf
RU9MKTsKK30KKworc3RhdGljIGludAorc3lzY3RsX2NwdXNwZWVkX3RlbXAoU1lTQ1RMRk5fQVJH
UykKK3sKKwlzdHJ1Y3Qgc3lzY3Rsbm9kZSBub2RlID0gKnJub2RlOworCXBhZGRyX3QgYWRkciA9
IChwYWRkcl90KW5vZGUuc3lzY3RsX2RhdGE7CisJY29uc3QgaW50ICpucCA9IG5ld3A7CisJaW50
IHNwZWVkLCBuZCA9IDA7CisKKwlzcGVlZCA9IG9iaW9fZ2V0X2NwdV9zcGVlZChhZGRyKTsJCisJ
bm9kZS5zeXNjdGxfaWRhdGEgPSBzcGVlZDsKKwlpZiAobnApIHsKKwkJLyogd2UncmUgYXNrZWQg
dG8gd3JpdGUgKi8JCisJCW5kID0gKm5wOworCQlub2RlLnN5c2N0bF9kYXRhID0gJnNwZWVkOwor
CQlpZiAoc3lzY3RsX2xvb2t1cChTWVNDVExGTl9DQUxMKCZub2RlKSkgPT0gMCkgeworCQkJaW50
IG5ld19yZWc7CisJCQkKKwkJCW5ld19yZWcgPSAobWF4KDAsIG1pbigxLCBub2RlLnN5c2N0bF9p
ZGF0YSkpKTsKKwkJCW9iaW9fc2V0X2NwdV9zcGVlZChhZGRyLCBuZXdfcmVnKTsKKwkJCXJldHVy
biAwOworCQl9CisJCXJldHVybiBFSU5WQUw7CisJfSBlbHNlIHsKKwkJbm9kZS5zeXNjdGxfc2l6
ZSA9IDQ7CisJCXJldHVybihzeXNjdGxfbG9va3VwKFNZU0NUTEZOX0NBTEwoJm5vZGUpKSk7CisJ
fQorfQorCitzdGF0aWMgdm9pZAorc2V0dXBfc3lzY3RsKHBhZGRyX3QgYWRkcikKK3sKKwlzdHJ1
Y3Qgc3lzY3Rsbm9kZSAqbm9kZT1OVUxMOworCWludCByZXQ7CisJCisJcmV0ID0gc3lzY3RsX2Ny
ZWF0ZXYoTlVMTCwgMCwgTlVMTCwgCisJICAgIChjb25zdCBzdHJ1Y3Qgc3lzY3Rsbm9kZSAqKikm
bm9kZSwgCisJICAgIENUTEZMQUdfUkVBRFdSSVRFIHwgQ1RMRkxBR19PV05ERVNDIHwgQ1RMRkxB
R19JTU1FRElBVEUsCisJICAgIENUTFRZUEVfSU5ULCAiY3B1X3NwZWVkIiwgIkNQVSBzcGVlZCIs
IHN5c2N0bF9jcHVzcGVlZF90ZW1wLCAKKwkJICAgIGFkZHIgLCBOVUxMLCAwLCBDVExfTUFDSERF
UCwgQ1RMX0NSRUFURSwgQ1RMX0VPTCk7CisJaWYgKG5vZGUgIT0gTlVMTCkgeworCQlub2RlLT5z
eXNjdGxfZGF0YSA9ICh2b2lkICopYWRkcjsKKwl9Cit9Cg==

--Multipart_Sun__25_Sep_2005_21_52_58_-0400_8e/tt1DxkLwDVe0K--

--Signature_Sun__25_Sep_2005_21_52_58_-0400_nFjB7ZwntpIVZwCh
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (NetBSD)

iQEVAwUBQzdUfspnzkX8Yg2nAQK1rQgAiSzQhntaSyQazpfA36AWQ2LP7ZiK0hGL
U/4IIsmCTMdDZAz+EbsY2+B4QZ4woGu3znjvt8bH8dKFjdbd7gmmNfkr9zNfKLjm
+cp3rVGeTNQYMJSaNqarSKr219hQ6TvlMz0AmRbrCqtVGY8vwiexK+w8xWIR7W/K
fGvatvSSHDmvIgjqRFiRSpcqu6mrAJhJw5tOGpus02prCmllkiQS4UmGxh61edRk
tjcDiu8ZY8d2SXjrMcXetiNWWJZxzGi0+JNFBEYTEH5cpa4Bd08fFcApCIpIMnq2
Jcl7vZuyUPpECIcZ7ef+abnvupobHHsLs4Vj/3o9YAwlQqsep90ZqA==
=V04f
-----END PGP SIGNATURE-----

--Signature_Sun__25_Sep_2005_21_52_58_-0400_nFjB7ZwntpIVZwCh--