Fix broken DSDT for Acer TravelMate 3012 WTMi


Well, to fix the broken DSDT you need ias, an ASL compiler/decompiler, which is available here. At the moment there a three approaches to fix the DSDT, two of them require a kernel patch even for the most recent kernels and are not covered here. The third one is applicable to recent kernels of the 2.6 series out of the box.
  1. Get the current (broken) DSDT (as root)
    $ cd /tmp && cat /proc/acpi/dsdt > dsdt.dat
    
  2. Disassemble the DSDT
    $ cd /tmp && iasl -d dsdt.dat > dsdt.dsl
    
  3. See how broken the DSDT is by trying to create an C hex table
    $ cd /tmp && iasl -tc dsdt.dsl
    
  4. Fix your broken DSDT
  5. Create a C hex table
    $ cd /tmp && iasl -tc dsdt.dsl
    
  6. Copy the C hex table to the kernel sources (adapt the path accordingly)
    $ cd /tmp && cp dsdt.hex /usr/src/linux/include/acpi/dsdt_table.h
    
  7. Adapt your kernel configuration to reflect the things shown below
    $ cd  /usr/src/linux/
    $ grep STANDALONE .config
    # CONFIG_STANDALONE is not set
    $ grep -i dsdt .config
    CONFIG_ACPI_CUSTOM_DSDT=y
    CONFIG_ACPI_CUSTOM_DSDT_FILE="/usr/src/linux/include/acpi/dsdt_table.h"
    
    This means you have to disable in Device Driver -> Generic Driver Options the option Select only drivers that don't need compile-time external ....

    Afterwards to you have to enable in Power management options -> ACPI (Advanced ...) the option Include Custom DSDT and provide the full path to the file in the next field.

  8. Follow the normale procedure to compile the kernel, put it place and boot with this kernel.