9fc1947d53
Replace xhcid's self-contained 294-line xhci/quirks.rs (7-flag bitflags type + ~30-entry quirk table) with a thin re-export shim that delegates to redox-driver-sys::quirks, which now carries all 51 Linux 7.1 quirk flags and the full ~85-entry canonical controller table. Changes: - Cargo.toml: add redox-driver-sys path dependency - xhci/quirks.rs: replace table with pub use XhciControllerQuirkFlags as XhciQuirks + delegating lookup_quirks(vendor, device, revision, hci_version) - main.rs: read real HCIVERSION from MMIO offset 0x04 via cap.hci_ver.read() instead of hardcoded 0x100 — matches Linux 7.1 xhci_gen_setup() at xhci.c:5455. Two table entries depend on the value: AMD_0x96_HOST (xhci-pci.c:308) and >= 0x120 spec rule (xhci-pci.c:511). - main.rs: resolve quirks BEFORE get_int_method() so BROKEN_MSI skips MSI/MSI-X probing entirely (matching Linux xhci_try_enable_msi at xhci-pci.c:143-209). Previously the quirk only overrode the method label while irq_file still held the MSI handle — a mismatch causing silent interrupt-delivery failures on BROKEN_MSI controllers. - get_int_method (both cfg variants): accept quirks parameter
43 lines
989 B
TOML
43 lines
989 B
TOML
[package]
|
|
name = "xhcid"
|
|
description = "xHCI controller driver"
|
|
version = "0.1.0"
|
|
edition = "2018"
|
|
|
|
[[bin]]
|
|
name = "xhcid"
|
|
path = "src/main.rs"
|
|
|
|
[lib]
|
|
name = "xhcid_interface"
|
|
path = "src/lib.rs"
|
|
|
|
[dependencies]
|
|
bitflags.workspace = true
|
|
chashmap = "2.2.2"
|
|
crossbeam-channel = "0.4"
|
|
futures = "0.3"
|
|
plain.workspace = true
|
|
lazy_static = "1.4"
|
|
log.workspace = true
|
|
redox_event.workspace = true
|
|
redox-scheme.workspace = true
|
|
scheme-utils = { path = "../../../scheme-utils" }
|
|
redox_syscall.workspace = true
|
|
serde.workspace = true
|
|
serde_json.workspace = true
|
|
smallvec = { workspace = true, features = ["serde"] }
|
|
thiserror.workspace = true
|
|
toml.workspace = true
|
|
|
|
common = { path = "../../common" }
|
|
daemon = { path = "../../../daemon" }
|
|
pcid = { path = "../../pcid" }
|
|
libredox.workspace = true
|
|
regex = "1.10.6"
|
|
usb-core = { path = "../../../../../recipes/drivers/usb-core/source" }
|
|
redox-driver-sys = { path = "../../../../../recipes/drivers/redox-driver-sys/source" }
|
|
|
|
[lints]
|
|
workspace = true
|