This is a great issue. I have put a lot energy into this. Now porting ACPI to SB700 is quite easy based on SB600 code. But I have the feeling that I have already forgot something. So I am gonna have to submit a new post to record the whole procedure.
What is Power Management? It is, adding some feature to make your system have the required performance and comsume the least power. Let's skip the boring history and cut to the chase, ACPI. We can go to ACPI spec. That is a whole picture. The goal of this post is to record some useful information in case that I would forgot.
ACPI set up a detailed profile of the whole system. It is provided by BIOS and used by OS. It is put in memory and OS probe it. ACPI uses tables to describe system information. Please go to ACPI spec "ACPI Software Programming Model". You can find the detailed table architecture of ACPI.
The Root table is point by RSDP, from which we can trace all the tables. Of all the tables, 2 are the most important, FADT and DSDT.
1. FADT has the ACPI hardware registers. ACPI hardware registers are defined in spec "ACPI Hardware Specification". They are often located in SB chipset. BIOS should allocate the IO spaces to them and write the IO address in FADT. So the OS can find them.
2. DSDT has the ASL code which describe the system.
(to be continue ...)
tip: (That is why I write this post)
1. Change the frequency of CPU.
orignal information comes from linux kernel Documatation.
linux-2.6.xx/Documentation/cpu-freq/user-guide.txt
All the cpufreq interface is located in
/sys/devices/system/cpu/cpu0/cpufreq/
2. Make the system powerdown or sleep.
bash> poweroff #power down the system.
bash> echo "standby" > /sys/power/state # S1
bash> echo "mem" > /sys/power/state #S3
bash> echo "disk" > /sys/power/state #S4
3. See the temperature of the CPU.
cat /proc/acpi/thermal_zone/XXXX/temperature.
4. See the interrupt infomation.
cat /proc/interrupts
February 11, 2009
Subscribe to:
Posts (Atom)