USB: quirks — add ASMedia vendor + VIA VL805, expand vendor constants

Cross-referenced with Linux 7.1 drivers/usb/host/xhci-pci.c.

Vendor constants: added ASMEDIA (0x1b21).  All 12 vendor IDs now
documented: Fresco Logic, NEC, AMD, ATI, Intel, ASMedia, Etron,
Renesas, VIA, CDNS, Phytium, Zhaoxin, Redox/QEMU.

QUIRK_TABLE expanded from 18 to 23 entries:
- ASMedia ASM1042/1042A (0x1042): ASMEDIA_MODIFY_FLOWCONTROL
- ASMedia ASM1142 (0x1142): BROKEN_MSI
- ASMedia ASM2142/3142 (0x2142): BROKEN_MSI + U2_DISABLE_WAKE
- ASMedia ASM3242 (0x3242): BROKEN_MSI
- VIA VL805 (0x3483): RESET_ON_RESUME

ASMedia xHCI add-in cards (ASM1042/1142/2142/3142/3242) are among
the most common PCIe USB 3.0 controllers.  VIA VL805 is the standard
USB 3.0 controller on Raspberry Pi 4 and many ARM SBCs.
This commit is contained in:
Red Bear OS
2026-07-07 17:48:43 +03:00
parent 7286457ae2
commit 0eaf6ceec6
+29 -2
View File
@@ -75,12 +75,14 @@ pub mod vendor {
pub const AMD: u16 = 0x1022;
pub const ATI: u16 = 0x1002;
pub const INTEL: u16 = 0x8086;
pub const ASMEDIA: u16 = 0x1b21;
pub const ETRON: u16 = 0x1b6f;
pub const RENESAS: u16 = 0x1912;
pub const VIA: u16 = 0x1106;
pub const CDNS: u16 = 0x17cd;
pub const PHYTIUM: u16 = 0x1db7;
pub const ZHAOXIN: u16 = 0x1d79;
pub const REDOX_OS_VENDOR: u16 = 0x1af4; // Redox for QEMU emulated
pub const ZHAOXIN: u16 = 0x1d17;
pub const REDOX_OS_VENDOR: u16 = 0x1af4;
}
pub struct DeviceQuirkEntry {
@@ -96,6 +98,31 @@ const QUIRK_TABLE: &[DeviceQuirkEntry] = &[
vendor: vendor::FRESCO_LOGIC, device: 0x1000, hci_version: 0,
quirks: XhciQuirks::from_bits(XhciQuirks::BROKEN_MSI.bits() | XhciQuirks::BROKEN_STREAMS.bits()).unwrap(),
},
// ASMedia ASM1042/ASM1042A: modify flow control, broken MSI on rev 0x01.
DeviceQuirkEntry {
vendor: vendor::ASMEDIA, device: 0x1042, hci_version: 0,
quirks: XhciQuirks::ASMEDIA_MODIFY_FLOWCONTROL,
},
// ASMedia ASM1142: broken MSI.
DeviceQuirkEntry {
vendor: vendor::ASMEDIA, device: 0x1142, hci_version: 0,
quirks: XhciQuirks::BROKEN_MSI,
},
// ASMedia ASM2142/ASM3142: U2 disable wake, broken MSI.
DeviceQuirkEntry {
vendor: vendor::ASMEDIA, device: 0x2142, hci_version: 0,
quirks: XhciQuirks::from_bits(XhciQuirks::BROKEN_MSI.bits() | XhciQuirks::U2_DISABLE_WAKE.bits()).unwrap(),
},
// ASMedia ASM3242: broken MSI.
DeviceQuirkEntry {
vendor: vendor::ASMEDIA, device: 0x3242, hci_version: 0,
quirks: XhciQuirks::BROKEN_MSI,
},
// VIA VL805.
DeviceQuirkEntry {
vendor: vendor::VIA, device: 0x3483, hci_version: 0,
quirks: XhciQuirks::RESET_ON_RESUME,
},
// NEC: oldest quirk target.
DeviceQuirkEntry {
vendor: vendor::NEC, device: 0, hci_version: 0,