-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Hi all,
I'm attaching my very experimental util, which can generate ACPI powernow objects. It needs for pre K8 rev F a table entry which can be easily added from datasheet. (So far there is Opteron 175 and some 4400 system.
For k8 revF it should follow an algorithm in BKDG to generate the table. That code is totally UNTESTED - I dont have any access to revF system.
For pre revF it works quite fine, it produces same result as proprietary BIOS except the bus latency value, which is recommended to 7 by AMD but my BIOS gives there 9. (output.txt) If you want to compare with original bios use acpidump to dump the SSDT table and iasl -d to get the text result.
So if you want to give a try, you will need to add your system to atable and check the http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/3043...
For the table. Maybe AMD has some other form of the table ready to use by programs/parsers?
The C structure quite follows the table entries so it is easy to add it there.
If someone have time (I dont :/) it would be nice to see if the revF algo works or get fixed.
It uses cpuid.c from x86info - it must be linked like gcc cpuid.c genpowernow.c - -o genpowernow
Comments/suggestions/FIXES/IMPROVEMENTS welcome :)
Thanks, Rudolf
Scope (_PR.CPU0) { Name (_PCT, Package (0x02) { ResourceTemplate () { Register (FFixedHW, 0x00, // Bit Width 0x00, // Bit Offset 0x0000000000000000, // Address ,) },
ResourceTemplate () { Register (FFixedHW, 0x00, // Bit Width 0x00, // Bit Offset 0x0000000000000000, // Address ,) } }) Name (_PSS, Package (0x04) { /* P#0 freq 2200 [MHz] voltage 1.350000 [V] TDP 110.000000 [W] */ Package (0x06) { 0x00000898, 0x0001adb0, 0x00000064, 0x00000007, 0xe0202a0e, 0x0000020e }, /* P#1 freq 2000 [MHz] voltage 1.300000 [V] TDP 105.600000 [W] */ Package (0x06) { 0x000007d0, 0x00019c80, 0x00000064, 0x00000007, 0xe0202a8c, 0x0000028c }, /* P#2 freq 1800 [MHz] voltage 1.250000 [V] TDP 89.100000 [W] */ Package (0x06) { 0x00000708, 0x00015c0c, 0x00000064, 0x00000007, 0xe0202b0a, 0x0000030a }, /* P#3 freq 1000 [MHz] voltage 1.100000 [V] TDP 49.000000 [W] */ Package (0x06) { 0x000003e8, 0x0000bf68, 0x00000064, 0x00000007, 0xe0202c82, 0x00000482 }, }) Method (_PPC, 0, NotSerialized) { Return (0x00) } } Scope (_PR.CPU1) { Name (_PCT, Package (0x02) { ResourceTemplate () { Register (FFixedHW, 0x00, // Bit Width 0x00, // Bit Offset 0x0000000000000000, // Address ,) },
ResourceTemplate () { Register (FFixedHW, 0x00, // Bit Width 0x00, // Bit Offset 0x0000000000000000, // Address ,) } }) Name (_PSS, Package (0x04) { /* P#0 freq 2200 [MHz] voltage 1.350000 [V] TDP 110.000000 [W] */ Package (0x06) { 0x00000898, 0x0001adb0, 0x00000064, 0x00000007, 0xe0202a0e, 0x0000020e }, /* P#1 freq 2000 [MHz] voltage 1.300000 [V] TDP 105.600000 [W] */ Package (0x06) { 0x000007d0, 0x00019c80, 0x00000064, 0x00000007, 0xe0202a8c, 0x0000028c }, /* P#2 freq 1800 [MHz] voltage 1.250000 [V] TDP 89.100000 [W] */ Package (0x06) { 0x00000708, 0x00015c0c, 0x00000064, 0x00000007, 0xe0202b0a, 0x0000030a }, /* P#3 freq 1000 [MHz] voltage 1.100000 [V] TDP 49.000000 [W] */ Package (0x06) { 0x000003e8, 0x0000bf68, 0x00000064, 0x00000007, 0xe0202c82, 0x00000482 }, }) Method (_PPC, 0, NotSerialized) { Return (0x00) } }
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Hi again,
I forgot to thank Carl-Daniel for his comments and some small fixes.
Thanks, Rudolf