These instructions are meant for a system with EFI, systemd-boot and deb based packages. Adjust them to your needs.
Reference: https://www.kernel.org/doc/Documentation/acpi/initrd_table_override.txt
See also https://github.com/lbschenkel/acer-sf314_43-acpi-patch
ACPICA tools: https://acpica.org/downloads
sudo apt install acpica-tools
Extract the acpi tables
mkdir acpi && cd acpi
sudo acpidump -b
Disassemble the tables
iasl -d dsdt.dat
Modify or patch the tables
vim dsdt.dsl
Assemble the custom tables
iasl -sa dsdt.dsl
Generate the cpio file for initrd
cd ..
mkdir -p kernel/firmware/acpi
cp acpi/dsdt.aml kernel/firmware/acpi/
find kernel | cpio -H newc --create > patched_acpi_tables.cpio
Grub does not require a cpio file, you can directly provide the dsl file.
SSDT tables add missing features to the existing ACPI, without requiring disassembling. They are created using the same tools and procedure.
Assemble the custom tables
iasl -sa ssdt.dsl
Generate the cpio file for initrd
cd ..
mkdir -p kernel/firmware/acpi
cp acpi/ssdt.aml kernel/firmware/acpi/
find kernel | cpio -H newc --create > patched_acpi_tables.cpio
Copy the cpio file with the custom tables where it can be addressed by the EFI boot
sudo mkdir /boot/efi/EFI/acpi
sudo cp patched_acpi_tables.cpio /boot/efi/EFI/acpi/
Edit the entry sudo vim /boot/efi/loader/entries/Pop_OS-current.conf
linux /EFI/...
initrd /EFI/acpi/patched_acpi_tables.cpio
initrd /EFI/Pop_OS-.../initrd.img
options ...
@pizFunk The log messages are just the same, so you can try: it requires no lengthy compilations, and just one reboot. In case it does not work, it is very easy to revert everything, just undo the changes in grub or systemd-boot.
The name of the block in the DSDT file is not important, SPK1 is just a variable. The block is the one that begins with
Name (_HID, "CSC3551")
, that should be present since your kernel is referencing it. Just search forCSC3551
in your disassembled file.Once there, check that there is a
_CRS
block with twoSpiSerialBusV2
devices, fourGPioIo
and oneGpioInt
, and maybe a_STA
and a_DIS
block (this one is empty). The patch should be inserted after that_DIS
block.Do not forget to increase the number in the
DefinitionBlock ("", "DSDT", 2, "_ASUS_", "Notebook", 0x01072009)
, or similar, at the beginning (so it takes precedence over the original ACPI in the BIOS).