_CRS Deep Dive
How ACPI _CRS reports device resources to the OS and how wrong IRQ, GPIO, I2C, SPI, or MMIO descriptors cause driver problems.
The driver binds. The device appears. But it does not work.
No touch events. No interrupt. No MMIO access. Sometimes the OS log says resource conflict.
This is where _CRS becomes important.
_CRS means Current Resource Settings. It tells the OS which hardware resources belong to an ACPI device.
| Item | Value | Note |
|---|---|---|
| IRQ / GpioInt | Interrupt resource | Wrong interrupt means driver may load but never receive events. |
| GpioIo | GPIO control pin | Often used for reset, power enable, or mode select. |
| I2CSerialBus | I2C connection descriptor | Used by HID-over-I2C touchpads, sensors, and PMICs. |
| SpiSerialBus | SPI connection descriptor | Used by some touch controllers, TPMs, and board devices. |
| Memory32Fixed / QWordMemory | MMIO resource | Wrong base or length can cause access failure or conflict. |
| DMA | DMA resource | Required for some platform devices. |
Example: HID-over-I2C touchpad resource
Name (RBUF, ResourceTemplate ()
{
I2CSerialBusV2 (0x002C, ControllerInitiated, 400000,
AddressingMode7Bit, "\\_SB.PCI0.I2C1", 0x00,
ResourceConsumer, , Exclusive)
GpioInt (Level, ActiveLow, ExclusiveAndWake, PullUp, 0,
"\\_SB.GPI0", 0x00, ResourceConsumer, , )
{
0x003A
}
})
Method (_CRS, 0, NotSerialized)
{
Return (RBUF)
}
If the I2C address is wrong, the driver probes the wrong slave. If the GPIO interrupt pin is wrong, the device may initialize but never report input.
Debug Diary: device present, interrupt silent
Symptom:
Device Manager: HID I2C device exists
Driver: loaded
Touchpad: no input
OS log: interrupt count stays 0
ACPI path:
_HID says driver identity is correct
_STA says device is present
_CRS gives I2C address and GPIO interrupt
In this case, _CRS is more suspicious than _HID or _STA.
_CRS debug checklist
Common Pitfall: correct device, wrong resource
A driver can bind correctly because _HID is correct, but still fail because _CRS describes the wrong electrical connection. This is common during board bring-up when the schematic changes but ACPI resources are copied from an older SKU.
Related notes
- _STA Deep Dive
- _HID Deep Dive
- GPIO OperationRegion
- Embedded Controller OperationRegion
- ACPI Debug Playbook
Found this useful?
Save it or share it with someone learning firmware, BIOS/UEFI, and embedded systems.
Nội dung liên quan
Một số bài viết, ghi chú hoặc project có liên quan đến nội dung bạn vừa đọc.
GPIO OperationRegion
How ACPI models GPIO-backed platform state and why GPIO numbering, polarity, wake flags, and controller paths are common firmware bugs.
What is ACPI Method?
Quick note explaining ACPI Method for BIOS/UEFI and embedded firmware readers.
What is GPIO in platform firmware?
Quick note explaining GPIO in platform firmware for BIOS/UEFI and embedded firmware readers.
Biến note thành bài viết hoàn chỉnh
Notes là nơi ghi nhanh khái niệm.