************************************************************************ * HOW TO MODIFY THE DSDT FILE * * * * Alessio Signorini * * * * 27th of August 2005 * ************************************************************************ [A] Tools that you need ------------------------------------------------ IASL http://www.intel.com/technology/iapc/acpi/downloads.htm PM-TOOLS (acpidump) http://ftp.kernel.org/pub/linux/kernel/people/lenb/acpi/utils/ [B] Obtain your DSDT --------------------------------------------------- You can obtain the DSDT of your machine in two ways: 1) If the file "/proc/acpi/dsdt" exists, just use the unix command cat /proc/acpi/dsdt > dsdt.aml to save it into the file DSDT.AML. 2) Use the utility ACPIDUMP of the PM-TOOLS writing on the prompt acpidump -t DSDT -b > dsdt.aml [C] Decompile your DSDT ------------------------------------------------ Use the software IASL to decompile it and obtain the assembler that you will modify. At the console prompt write iasl -d dsdt.aml to obtain the decompiled file DSDT.DSL. [D] Obtain your trip-points -------------------------------------------- At the console prompt write cat /proc/acpi/thermal_zone/THRM/trip_points then convert those values in HEX code using a whatever calculator. In my system they are 45 (2D in hex) and 75 (4B in hex). [E] Edit the disassembled file ----------------------------------------- With a text editor as NEDIT or GEDIT or VI find those values in the disassembled file DSDT.DSL. Look for something like 0x2D or 0x4B in my cases. In my case I found them in a part of code like this Method (_AC0, 0, Serialized) { Store (0x2D, Local0) Return (Add (0x0AAC, Multiply (Local0, 0x0A))) } Your one may differ. However, modify the found value with the HEX code of the new temperature that you would like (for example 35 degree Celsius are represented by the hex code 23). When you are done save the file and exit. [F] Compile the modified disassembled file ----------------------------- At the console prompt write iasl -tc dsdt.dsl to obtain the file DSDT.HEX that is the one you have to include in your kernel source code to make it work. [G] Include DSDT.HEX in the kernel source code ------------------------- Copy the file DSDT.HEX in the directory driver/acpi/ of the last kernel source code. Then open with a text editor the file osl.c somewhere before the lines #ifdef CONFIG_ACPI_CUSTOM_DSDT #include CONFIG_ACPI_CUSTOM_DSDT_FILE #endif you have to write something like #define CONFIG_ACPI_CUSTOM_DSDT #define CONFIG_ACPI_CUSTOM_DSDT_FILE "dsdt.hex" Then delete the file OSL.O if it exists and recompile your kernel.