Learning ACPI Source Language
GoelBiju opened this issue · 3 comments
Hi @Lekensteyn ,
I was quite interested in learning how to edit DSDT and ACPI tables. Are there any particular resources online that you would recommend in order to learn ASL?
Thanks
Hi Goel,
I'd recommend you to grab the ACPI spec from https://uefi.org/specifications
Learn on the go, extract the DSDT/SSDT from an acpidump, disassemble it and study the result. If you are not sure what a method does, look it up in the spec.
Although possibly outdated, these earlier notes might be of help: https://github.com/Bumblebee-Project/Bumblebee/wiki/ACPI-for-Developers
As for tools, acpidump, acpixtract and iasl are mandatory. See also the get_methods
and bios-extract.sh
scripts in this repo for convenience.
Replacing a whole DSDT/SSDT is doable although you might run into issues while trying to recompile a disassembled result. For modifying single ACPI methods, have a look at the custom_method
Linux kernel module.
For ACPI-related stuff on Linux, see also https://www.kernel.org/doc/Documentation/acpi/. In particular:
- Overriding the DSDT from an initrd, https://www.kernel.org/doc/Documentation/acpi/initrd_table_override.txt
- Use of
custom_method
: https://www.kernel.org/doc/Documentation/acpi/method-customizing.txt - The acpidbg utility for runtime inspection (requires a special kernel option), https://www.kernel.org/doc/Documentation/acpi/aml-debugger.txt
Hope it helps.
@Lekensteyn, Thank you very much for the help and resources provided!
https://acpica.org/ also offers great resources. Would it make sense to add the links and hints to the README here @Lekensteyn?