Name ACPI hardware IDs instead of magic _HID strings
Turn acpi-ids.zig's flat name table into a HardwareId enum modeled on ps2-library's Port: one entry() switch holds the registry (variant -> _HID string + human-readable name), with hid(), description(), and fromHid() methods. The free description(hid) lookup the kernel's device-tree dump uses survives, implemented over the enum, and a new test round-trips every variant through fromHid. Callers now name the device instead of quoting its id: - ps2-library's DeviceType.hid() and ps2-bus's descriptor lookups use HardwareId.ps2_keyboard / .ps2_mouse. - device-manager's driverFor parses the HID once with fromHid and switches on named values. - acpi.zig's isPciRootNode carried the same ids twice, as strings and as packed-EISA integers (0x030AD041/0x080AD041); both branches now decode to the string form and answer through one isPciRootHid helper using .pci_bus / .pci_express_root_bridge. - build.zig threads the acpi-ids module (previously kernel-only) into every user binary, like xkeyboard-config.
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
//! shared definitions between the different PS/2 drivers
|
||||
const std = @import("std");
|
||||
const runtime = @import("runtime");
|
||||
const acpi_ids = @import("acpi-ids");
|
||||
const device = runtime.device;
|
||||
const system = runtime.system;
|
||||
|
||||
@@ -261,8 +262,8 @@ pub const DeviceType = enum(u32) {
|
||||
/// its command-line argument, or null if we could not classify it.
|
||||
pub fn hid(self: DeviceType) ?[]const u8 {
|
||||
return switch (self) {
|
||||
.keyboard => "PNP0303",
|
||||
.mouse => "PNP0F13",
|
||||
.keyboard => acpi_ids.HardwareId.ps2_keyboard.hid(),
|
||||
.mouse => acpi_ids.HardwareId.ps2_mouse.hid(),
|
||||
.unknown => null,
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user