: In the Linux ecosystem, hardware is mapped using Device Trees via a property called compatible . The ACPI standard introduced PRP0001 as a universal hardware ID. It tells the OS kernel: "Read the Device Specification Data ( _DSD ) block to figure out what driver this device actually needs."
By ensuring your ACPI tables have a valid compatible property and your drivers have a proper of_match_table , you can leverage the full power of PRP0001 to bring up devices on your x86 or ACPI-based ARM platform without waiting for official ACPI IDs.
If you are seeing errors or logs regarding PRP0001 in your dmesg output, here is what you need to know. Is it an error?
Parsing the _DSD for PRP0001 devices adds cycles. On a real-time embedded system with tens of pseudo-devices, disabling PRP0001 can shave tens of milliseconds from the boot sequence – critical for safety-critical initialization. acpi prp0001 0
In essence, PRP0001 acts as a "magic key" that allows a device, described using Device Tree conventions, to be understood and driven by Linux on an ACPI-based system, typically an x86 PC. This article delves into the details of this mechanism, exploring its origins, how it works, where it is used, and the challenges it presents to both system integrators and driver developers.
It is used when a device is connected via a low-level serial bus (like I2C or SPI) rather than a native bus like PCI.
/* Device Tree match table */ static const struct of_device_id tmp75_of_match[] = .compatible = "ti,tmp75", .data = (void *)tmp75 , : In the Linux ecosystem, hardware is mapped
Because of this "bridge" capability, you will often see this ID on devices that don't belong to a single brand. HP Support Community Chromebooks and Steam Decks : It is commonly found on the Steam Deck and various Chromebooks
Comprehensive Guide to ACPI\PRP0001\0: Understanding and Fixing the "Unknown Device" Error
For kernel developers, PRP0001 is part of the "Unified Device Property API." It allows you to define device properties in ACPI using a special _DSD (Device Specific Data) object. This permits the kernel to match the device to a driver using a compatible string (like atmel,24c256 ) even though it's on an ACPI platform. If you are seeing errors or logs regarding
Ensure the driver you are trying to bind actually has an of_device_id table that matches the "compatible" string specified in your _DSD .
The upstream maintainers accepted that PRP0001 devices exist in the wild with valid but undocumented compatibles. The checkpatch.pl warnings for these cases are now suppressed, and such compatibles are documented in a non-dt-devices binding file. If you encounter similar warnings, review the thread referenced in the search results for guidance on how to submit patches for your device.