cdb5544fd1
Phase I (a): redbear-quirks enrichment. Each flag is ported from the Linux 7.1 reference tree and applied to LG Gram 16 (2025) 16Z90TR and 16T90SP (2026 Panther Lake). The flags are generic and applicable to other OEMs too: * acpi_irq1_skip_override — Linux drivers/acpi/resource.c irq1_level_low_skip_override[] (lines 522-534). Without this the ACPI core rewrites the DSDT's ActiveLow to ActiveHigh and the i8042 keyboard IRQ stops firing on LG Gram. * kbd_deactivate_fixup — Linux drivers/input/keyboard/atkbd.c line 1913-1917. Prevents spurious keyboard ACK / dropped keys on LG hardware. * no_legacy_pm1b — Red Bear OS specific. LG firmware does not implement a separate PM1b_CNT register; tells acpid to skip the SLP_TYPb write path. Also adds a 17U70P entry (Linux matches this on board_name) and a catch-all LG Electronics entry (Linux atkbd.c matches on sys_vendor only, not product_name). Hardware-agnostic: the same flags apply to Dell, HP, Lenovo laptops with similar firmware quirks. Future Phase I work will add DMI matches for those vendors based on the Linux quirk tables. Also updates local/sources/kernel submodule pointer to 7a38664 (Phase I [patch.crates-io] for redox_syscall).
106 lines
4.0 KiB
TOML
106 lines
4.0 KiB
TOML
# DMI-based system-level quirk overrides.
|
|
# These entries are evaluated at runtime when /scheme/acpi/dmi is available.
|
|
# ACPI table skip rules are also supported via [[acpi_table_quirk]] for narrow,
|
|
# DMI-conditioned suppression of known bad firmware tables.
|
|
|
|
[[dmi_system_quirk]]
|
|
pci_vendor = 0x8086
|
|
flags = ["no_aspm"]
|
|
match.sys_vendor = "LENOVO"
|
|
match.product_name = "ThinkPad X1 Carbon"
|
|
|
|
[[dmi_system_quirk]]
|
|
flags = ["no_msi"]
|
|
match.sys_vendor = "Dell Inc."
|
|
match.product_name = "OptiPlex 7090"
|
|
|
|
[[dmi_system_quirk]]
|
|
pci_vendor = 0x14E4
|
|
flags = ["no_msix", "no_aspm"]
|
|
match.sys_vendor = "Dell Inc."
|
|
match.product_name = "PowerEdge R740"
|
|
|
|
[[dmi_system_quirk]]
|
|
pci_vendor = 0x1002
|
|
flags = ["need_iommu", "no_aspm"]
|
|
match.sys_vendor = "Framework"
|
|
match.product_name = "Laptop 16"
|
|
|
|
[[dmi_system_quirk]]
|
|
pci_vendor = 0x8086
|
|
flags = ["no_d3cold"]
|
|
match.sys_vendor = "HP"
|
|
match.product_name = "HP ProBook"
|
|
|
|
[[dmi_system_quirk]]
|
|
pci_vendor = 0x1002
|
|
flags = ["no_aspm", "need_firmware"]
|
|
match.sys_vendor = "ASUSTeK COMPUTER INC."
|
|
match.board_name = "PRIME X570-PRO"
|
|
|
|
[[dmi_system_quirk]]
|
|
pci_vendor = 0x1022
|
|
flags = ["reset_delay_ms"]
|
|
match.sys_vendor = "Gigabyte Technology Co., Ltd."
|
|
match.board_name = "X570 AORUS MASTER"
|
|
|
|
# Example (uncomment when a concrete table-specific firmware bug is identified):
|
|
# [[acpi_table_quirk]]
|
|
# signature = "DMAR"
|
|
# match.sys_vendor = "Example Vendor"
|
|
# match.product_name = "Example Model"
|
|
|
|
# LG Gram 16 (2025) / Intel Arrow Lake-H. Modern Standby (S0ix) is
|
|
# preferred over S3 (the firmware does not advertise \_S3 at all on
|
|
# this model; all sleep goes through s2idle). Disable the legacy
|
|
# ACPI S5 reset path that conflicts with the LG firmware's Modern
|
|
# Standby implementation.
|
|
#
|
|
# Flags here are ported from the Linux 7.1 reference tree:
|
|
# force_s2idle — Linux acpi/sleep.c has no LG entry
|
|
# (s2idle is the default on all LG Gram
|
|
# models; the flag is explicit for
|
|
# documentation + future-proofing if a
|
|
# BIOS update adds S3)
|
|
# acpi_irq1_skip_override — Linux drivers/acpi/resource.c
|
|
# irq1_level_low_skip_override[]
|
|
# (lines 522-534). Without this the ACPI
|
|
# core rewrites the DSDT's ActiveLow to
|
|
# ActiveHigh and the i8042 keyboard IRQ
|
|
# stops firing.
|
|
# kbd_deactivate_fixup — Linux drivers/input/keyboard/atkbd.c
|
|
# line 1913-1917. Prevents spurious
|
|
# keyboard ACK / dropped keys on LG.
|
|
# no_legacy_pm1b — Single-PM1a hardware (LG firmware does
|
|
# not implement PM1b_CNT). Tells acpid
|
|
# to skip the SLP_TYPb write path.
|
|
[[dmi_system_quirk]]
|
|
flags = ["force_s2idle", "acpi_irq1_skip_override", "kbd_deactivate_fixup", "no_legacy_pm1b"]
|
|
match.sys_vendor = "LG Electronics"
|
|
match.product_name = "16Z90TR"
|
|
|
|
# LG Gram 16T90SP (2026 Panther Lake). Same modern-standby
|
|
# preference; same keyboard/ACPI quirk set as the 16Z90TR.
|
|
# The 16T90SP is already in Linux's
|
|
# irq1_level_low_skip_override[] (commit 53f1a90, Oct 2024).
|
|
[[dmi_system_quirk]]
|
|
flags = ["force_s2idle", "acpi_irq1_skip_override", "kbd_deactivate_fixup", "no_legacy_pm1b"]
|
|
match.sys_vendor = "LG Electronics"
|
|
match.product_name = "16T90SP"
|
|
|
|
# LG Gram 17U70P (17 inch, 2020 Comet Lake). Also in Linux's
|
|
# irq1_level_low_skip_override[] (resource.c:522-527). No
|
|
# force_s2idle (older LG Gram still has working S3).
|
|
[[dmi_system_quirk]]
|
|
flags = ["acpi_irq1_skip_override", "kbd_deactivate_fixup"]
|
|
match.sys_vendor = "LG Electronics"
|
|
match.product_name = "17U70P"
|
|
|
|
# All LG Electronics: keyboard deactivate fixup (Linux atkbd.c
|
|
# matches on sys_vendor only, no product_name filter). This is
|
|
# the catch-all for older LG laptops that don't have specific
|
|
# model entries above.
|
|
[[dmi_system_quirk]]
|
|
flags = ["kbd_deactivate_fixup"]
|
|
match.sys_vendor = "LG Electronics"
|