Expand USB quirks and hardware validation
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
@@ -69,18 +69,35 @@ bitflags::bitflags! {
|
||||
bitflags::bitflags! {
|
||||
/// Flags for USB device quirks.
|
||||
///
|
||||
/// Mirrors Linux's `USB_QUIRK_*` defines.
|
||||
/// Mirrors Linux's `USB_QUIRK_*` defines from `include/linux/usb/quirks.h`.
|
||||
/// Flags 0–8 are the original Red Bear set. Flags 9–21 are mined from
|
||||
/// Linux 7.0 (`drivers/usb/core/quirks.c`, released 2026-04-13).
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct UsbQuirkFlags: u64 {
|
||||
const NO_STRING_FETCH = 1 << 0;
|
||||
const RESET_DELAY = 1 << 1;
|
||||
const NO_USB3 = 1 << 2;
|
||||
const NO_SET_CONFIG = 1 << 3;
|
||||
const NO_SUSPEND = 1 << 4;
|
||||
const NEED_RESET = 1 << 5;
|
||||
const BAD_DESCRIPTOR = 1 << 6;
|
||||
const NO_LPM = 1 << 7;
|
||||
const NO_U1U2 = 1 << 8;
|
||||
// Original Red Bear flags (0–8)
|
||||
const NO_STRING_FETCH = 1 << 0; // USB_QUIRK_STRING_FETCH_255
|
||||
const RESET_DELAY = 1 << 1; // USB_QUIRK_DELAY_INIT
|
||||
const NO_USB3 = 1 << 2; // no Linux equivalent (Red Bear-specific)
|
||||
const NO_SET_CONFIG = 1 << 3; // USB_QUIRK_NO_SET_INTF (SET_INTERFACE)
|
||||
const NO_SUSPEND = 1 << 4; // USB_QUIRK_DISCONNECT_SUSPEND
|
||||
const NEED_RESET = 1 << 5; // USB_QUIRK_RESET_RESUME
|
||||
const BAD_DESCRIPTOR = 1 << 6; // USB_QUIRK_LINEAR_UFRAME_INTR_BINTERVAL
|
||||
const NO_LPM = 1 << 7; // USB_QUIRK_NO_LPM
|
||||
const NO_U1U2 = 1 << 8; // USB_QUIRK_NO_U1_U2
|
||||
// Mined from Linux 7.0 (9–22)
|
||||
const NO_SET_INTF = 1 << 9; // USB_QUIRK_NO_SET_INTF
|
||||
const CONFIG_INTF_STRINGS = 1 << 10; // USB_QUIRK_CONFIG_INTF_STRINGS
|
||||
const NO_RESET = 1 << 11; // USB_QUIRK_RESET (device can't be reset)
|
||||
const HONOR_BNUMINTERFACES = 1 << 12; // USB_QUIRK_HONOR_BNUMINTERFACES
|
||||
const DEVICE_QUALIFIER = 1 << 13; // USB_QUIRK_DEVICE_QUALIFIER
|
||||
const IGNORE_REMOTE_WAKEUP = 1 << 14; // USB_QUIRK_IGNORE_REMOTE_WAKEUP
|
||||
const DELAY_CTRL_MSG = 1 << 15; // USB_QUIRK_DELAY_CTRL_MSG
|
||||
const HUB_SLOW_RESET = 1 << 16; // USB_QUIRK_HUB_SLOW_RESET
|
||||
const NO_BOS = 1 << 17; // USB_QUIRK_NO_BOS
|
||||
const SHORT_SET_ADDR_TIMEOUT = 1 << 18; // USB_QUIRK_SHORT_SET_ADDRESS_REQ_TIMEOUT
|
||||
const FORCE_ONE_CONFIG = 1 << 19; // USB_QUIRK_FORCE_ONE_CONFIG
|
||||
const ENDPOINT_IGNORE = 1 << 20; // USB_QUIRK_ENDPOINT_IGNORE
|
||||
const LINEAR_FRAME_BINTERVAL = 1 << 21; // USB_QUIRK_LINEAR_FRAME_INTR_BINTERVAL
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -126,6 +126,25 @@ const USB_FLAG_NAMES: &[(&str, UsbQuirkFlags)] = &[
|
||||
("bad_descriptor", UsbQuirkFlags::BAD_DESCRIPTOR),
|
||||
("no_lpm", UsbQuirkFlags::NO_LPM),
|
||||
("no_u1u2", UsbQuirkFlags::NO_U1U2),
|
||||
("no_set_intf", UsbQuirkFlags::NO_SET_INTF),
|
||||
("config_intf_strings", UsbQuirkFlags::CONFIG_INTF_STRINGS),
|
||||
("no_reset", UsbQuirkFlags::NO_RESET),
|
||||
("honor_bnuminterfaces", UsbQuirkFlags::HONOR_BNUMINTERFACES),
|
||||
("device_qualifier", UsbQuirkFlags::DEVICE_QUALIFIER),
|
||||
("ignore_remote_wakeup", UsbQuirkFlags::IGNORE_REMOTE_WAKEUP),
|
||||
("delay_ctrl_msg", UsbQuirkFlags::DELAY_CTRL_MSG),
|
||||
("hub_slow_reset", UsbQuirkFlags::HUB_SLOW_RESET),
|
||||
("no_bos", UsbQuirkFlags::NO_BOS),
|
||||
(
|
||||
"short_set_addr_timeout",
|
||||
UsbQuirkFlags::SHORT_SET_ADDR_TIMEOUT,
|
||||
),
|
||||
("force_one_config", UsbQuirkFlags::FORCE_ONE_CONFIG),
|
||||
("endpoint_ignore", UsbQuirkFlags::ENDPOINT_IGNORE),
|
||||
(
|
||||
"linear_frame_binterval",
|
||||
UsbQuirkFlags::LINEAR_FRAME_BINTERVAL,
|
||||
),
|
||||
];
|
||||
|
||||
fn flag_from_name<F: Copy>(name: &str, mapping: &[(&str, F)]) -> Option<F> {
|
||||
|
||||
@@ -1,51 +1,752 @@
|
||||
use super::{UsbQuirkEntry, UsbQuirkFlags, PCI_QUIRK_ANY_ID};
|
||||
|
||||
const F_NO_SUSP_RESET: UsbQuirkFlags = UsbQuirkFlags::from_bits_truncate(
|
||||
UsbQuirkFlags::NO_SUSPEND.bits() | UsbQuirkFlags::NEED_RESET.bits(),
|
||||
const F_00: UsbQuirkFlags = UsbQuirkFlags::from_bits_truncate(
|
||||
UsbQuirkFlags::NEED_RESET.bits() | UsbQuirkFlags::NO_LPM.bits(),
|
||||
);
|
||||
const F_BAD_DESC_NO_CFG: UsbQuirkFlags = UsbQuirkFlags::from_bits_truncate(
|
||||
UsbQuirkFlags::BAD_DESCRIPTOR.bits() | UsbQuirkFlags::NO_SET_CONFIG.bits(),
|
||||
const F_01: UsbQuirkFlags = UsbQuirkFlags::from_bits_truncate(
|
||||
UsbQuirkFlags::NO_LPM.bits() | UsbQuirkFlags::RESET_DELAY.bits(),
|
||||
);
|
||||
const F_02: UsbQuirkFlags = UsbQuirkFlags::from_bits_truncate(
|
||||
UsbQuirkFlags::DELAY_CTRL_MSG.bits() | UsbQuirkFlags::RESET_DELAY.bits(),
|
||||
);
|
||||
const F_03: UsbQuirkFlags = UsbQuirkFlags::from_bits_truncate(
|
||||
UsbQuirkFlags::NO_SUSPEND.bits() | UsbQuirkFlags::NEED_RESET.bits(),
|
||||
);
|
||||
|
||||
pub const USB_QUIRK_TABLE: &[UsbQuirkEntry] = &[
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x0BDA,
|
||||
product: 0x8153,
|
||||
vendor: 0x0204,
|
||||
product: 0x6025,
|
||||
flags: UsbQuirkFlags::NEED_RESET,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x0218,
|
||||
product: 0x0201,
|
||||
flags: UsbQuirkFlags::CONFIG_INTF_STRINGS,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x0218,
|
||||
product: 0x0401,
|
||||
flags: UsbQuirkFlags::CONFIG_INTF_STRINGS,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x03F0,
|
||||
product: 0x0701,
|
||||
flags: UsbQuirkFlags::NO_STRING_FETCH,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x0BDA,
|
||||
product: 0x8156,
|
||||
vendor: 0x03F0,
|
||||
product: 0x3F40,
|
||||
flags: UsbQuirkFlags::RESET_DELAY,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x03F0,
|
||||
product: 0xA31D,
|
||||
flags: UsbQuirkFlags::NO_SUSPEND,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x041E,
|
||||
product: 0x3020,
|
||||
flags: UsbQuirkFlags::NEED_RESET,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x0424,
|
||||
product: 0x3503,
|
||||
flags: UsbQuirkFlags::NEED_RESET,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x045E,
|
||||
product: 0x00E1,
|
||||
flags: UsbQuirkFlags::NEED_RESET,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x045E,
|
||||
product: 0x0770,
|
||||
flags: UsbQuirkFlags::NEED_RESET,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x045E,
|
||||
product: 0x07C6,
|
||||
flags: UsbQuirkFlags::NO_LPM,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x046A,
|
||||
product: 0x0023,
|
||||
flags: UsbQuirkFlags::NEED_RESET,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x046D,
|
||||
product: 0x0825,
|
||||
flags: F_00,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x046D,
|
||||
product: 0x082D,
|
||||
flags: UsbQuirkFlags::RESET_DELAY,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x046D,
|
||||
product: 0x0841,
|
||||
flags: UsbQuirkFlags::RESET_DELAY,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x046D,
|
||||
product: 0x0843,
|
||||
flags: UsbQuirkFlags::RESET_DELAY,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x046D,
|
||||
product: 0x085B,
|
||||
flags: UsbQuirkFlags::RESET_DELAY,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x046D,
|
||||
product: 0x085C,
|
||||
flags: UsbQuirkFlags::RESET_DELAY,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x046D,
|
||||
product: 0x0847,
|
||||
flags: UsbQuirkFlags::RESET_DELAY,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x046D,
|
||||
product: 0x0848,
|
||||
flags: UsbQuirkFlags::RESET_DELAY,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x046D,
|
||||
product: 0x0853,
|
||||
flags: UsbQuirkFlags::RESET_DELAY,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x046D,
|
||||
product: 0x086C,
|
||||
flags: UsbQuirkFlags::NO_LPM,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x046D,
|
||||
product: 0x08C1,
|
||||
flags: UsbQuirkFlags::NEED_RESET,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x046D,
|
||||
product: 0x08C2,
|
||||
flags: UsbQuirkFlags::NEED_RESET,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x046D,
|
||||
product: 0x08C3,
|
||||
flags: UsbQuirkFlags::NEED_RESET,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x046D,
|
||||
product: 0x08C5,
|
||||
flags: UsbQuirkFlags::NEED_RESET,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x046D,
|
||||
product: 0x08C6,
|
||||
flags: UsbQuirkFlags::NEED_RESET,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x046D,
|
||||
product: 0x08C7,
|
||||
flags: UsbQuirkFlags::NEED_RESET,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x046D,
|
||||
product: 0xC122,
|
||||
flags: UsbQuirkFlags::RESET_DELAY,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x0471,
|
||||
product: 0x0155,
|
||||
flags: UsbQuirkFlags::NEED_RESET,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x047F,
|
||||
product: 0xC008,
|
||||
flags: UsbQuirkFlags::NEED_RESET,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x047F,
|
||||
product: 0xC013,
|
||||
flags: UsbQuirkFlags::NEED_RESET,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x04B4,
|
||||
product: 0x0526,
|
||||
flags: UsbQuirkFlags::CONFIG_INTF_STRINGS,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x04D8,
|
||||
product: 0x000C,
|
||||
flags: UsbQuirkFlags::CONFIG_INTF_STRINGS,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x04E7,
|
||||
product: 0x0009,
|
||||
flags: UsbQuirkFlags::NEED_RESET,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x04E7,
|
||||
product: 0x0030,
|
||||
flags: UsbQuirkFlags::NEED_RESET,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x04E8,
|
||||
product: 0x6601,
|
||||
flags: UsbQuirkFlags::CONFIG_INTF_STRINGS,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x04F3,
|
||||
product: 0x0089,
|
||||
flags: UsbQuirkFlags::DEVICE_QUALIFIER,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x04F3,
|
||||
product: 0x009B,
|
||||
flags: UsbQuirkFlags::DEVICE_QUALIFIER,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x04F3,
|
||||
product: 0x010C,
|
||||
flags: UsbQuirkFlags::DEVICE_QUALIFIER,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x04F3,
|
||||
product: 0x0125,
|
||||
flags: UsbQuirkFlags::DEVICE_QUALIFIER,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x04F3,
|
||||
product: 0x016F,
|
||||
flags: UsbQuirkFlags::DEVICE_QUALIFIER,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x04F3,
|
||||
product: 0x0381,
|
||||
flags: UsbQuirkFlags::NO_LPM,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x04F3,
|
||||
product: 0x21B8,
|
||||
flags: UsbQuirkFlags::DEVICE_QUALIFIER,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x0582,
|
||||
product: 0x0007,
|
||||
flags: UsbQuirkFlags::NEED_RESET,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x0582,
|
||||
product: 0x0027,
|
||||
flags: UsbQuirkFlags::NEED_RESET,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x058F,
|
||||
product: 0x9254,
|
||||
flags: UsbQuirkFlags::NEED_RESET,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x05AC,
|
||||
product: 0x021A,
|
||||
flags: UsbQuirkFlags::NEED_RESET,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x05E3,
|
||||
product: 0x0612,
|
||||
flags: UsbQuirkFlags::NO_LPM,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x05CC,
|
||||
product: 0x2267,
|
||||
flags: UsbQuirkFlags::NEED_RESET,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x05E3,
|
||||
product: 0x0616,
|
||||
flags: UsbQuirkFlags::NO_LPM,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x0638,
|
||||
product: 0x0A13,
|
||||
flags: UsbQuirkFlags::NO_STRING_FETCH,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x067B,
|
||||
product: 0x2731,
|
||||
flags: F_01,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x06A3,
|
||||
product: 0x0006,
|
||||
flags: UsbQuirkFlags::CONFIG_INTF_STRINGS,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x06BD,
|
||||
product: 0x0001,
|
||||
flags: UsbQuirkFlags::NEED_RESET,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x06F8,
|
||||
product: 0x0804,
|
||||
flags: UsbQuirkFlags::NEED_RESET,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x06F8,
|
||||
product: 0x3005,
|
||||
flags: UsbQuirkFlags::NEED_RESET,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x06F8,
|
||||
product: 0xB000,
|
||||
flags: UsbQuirkFlags::ENDPOINT_IGNORE,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x0763,
|
||||
product: 0x0192,
|
||||
flags: UsbQuirkFlags::NEED_RESET,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x0781,
|
||||
product: 0x5583,
|
||||
flags: UsbQuirkFlags::NO_LPM,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x0781,
|
||||
product: 0x5591,
|
||||
flags: UsbQuirkFlags::NO_LPM,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x0781,
|
||||
product: 0x5596,
|
||||
flags: UsbQuirkFlags::RESET_DELAY,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x0781,
|
||||
product: 0x55A3,
|
||||
flags: UsbQuirkFlags::RESET_DELAY,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x0781,
|
||||
product: 0x55AE,
|
||||
flags: UsbQuirkFlags::NO_LPM,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x07CA,
|
||||
product: 0x2553,
|
||||
flags: UsbQuirkFlags::NO_BOS,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x0853,
|
||||
product: 0x011B,
|
||||
flags: UsbQuirkFlags::NO_LPM,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x08EC,
|
||||
product: 0x1000,
|
||||
flags: UsbQuirkFlags::NEED_RESET,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x0904,
|
||||
product: 0x6101,
|
||||
flags: UsbQuirkFlags::LINEAR_FRAME_BINTERVAL,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x0904,
|
||||
product: 0x6102,
|
||||
flags: UsbQuirkFlags::LINEAR_FRAME_BINTERVAL,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x0904,
|
||||
product: 0x6103,
|
||||
flags: UsbQuirkFlags::LINEAR_FRAME_BINTERVAL,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x090C,
|
||||
product: 0x1000,
|
||||
flags: UsbQuirkFlags::RESET_DELAY,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x090C,
|
||||
product: 0x2000,
|
||||
flags: UsbQuirkFlags::RESET_DELAY,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x0926,
|
||||
product: 0x0202,
|
||||
flags: UsbQuirkFlags::ENDPOINT_IGNORE,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x0926,
|
||||
product: 0x0208,
|
||||
flags: UsbQuirkFlags::ENDPOINT_IGNORE,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x0926,
|
||||
product: 0x3333,
|
||||
flags: UsbQuirkFlags::CONFIG_INTF_STRINGS,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x0951,
|
||||
product: 0x1666,
|
||||
flags: UsbQuirkFlags::NO_LPM,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x0930,
|
||||
product: 0x1408,
|
||||
flags: UsbQuirkFlags::NO_LPM,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x0955,
|
||||
product: 0x7018,
|
||||
flags: UsbQuirkFlags::NEED_RESET,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x0955,
|
||||
product: 0x7019,
|
||||
flags: UsbQuirkFlags::NEED_RESET,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x0955,
|
||||
product: 0x7418,
|
||||
flags: UsbQuirkFlags::NEED_RESET,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x0955,
|
||||
product: 0x7721,
|
||||
flags: UsbQuirkFlags::NEED_RESET,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x0955,
|
||||
product: 0x7C18,
|
||||
flags: UsbQuirkFlags::NEED_RESET,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x0955,
|
||||
product: 0x7E19,
|
||||
flags: UsbQuirkFlags::NEED_RESET,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x0955,
|
||||
product: 0x7F21,
|
||||
flags: UsbQuirkFlags::NEED_RESET,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x0971,
|
||||
product: 0x2000,
|
||||
flags: UsbQuirkFlags::NO_SET_INTF,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x09A1,
|
||||
product: 0x0028,
|
||||
flags: UsbQuirkFlags::DELAY_CTRL_MSG,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x0A5C,
|
||||
product: 0x2021,
|
||||
flags: UsbQuirkFlags::NEED_RESET,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x0A92,
|
||||
product: 0x0091,
|
||||
flags: UsbQuirkFlags::NEED_RESET,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x0B05,
|
||||
product: 0x17E0,
|
||||
flags: UsbQuirkFlags::IGNORE_REMOTE_WAKEUP,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x0B05,
|
||||
product: 0x1AB9,
|
||||
flags: UsbQuirkFlags::NO_BOS,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x0BDA,
|
||||
product: 0x0151,
|
||||
flags: UsbQuirkFlags::CONFIG_INTF_STRINGS,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x0BDA,
|
||||
product: 0x0487,
|
||||
flags: UsbQuirkFlags::NO_LPM,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x0BDA,
|
||||
product: 0x8153,
|
||||
flags: UsbQuirkFlags::NO_LPM,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x0C45,
|
||||
product: 0x7056,
|
||||
flags: UsbQuirkFlags::IGNORE_REMOTE_WAKEUP,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x0FD9,
|
||||
product: 0x009B,
|
||||
flags: UsbQuirkFlags::NO_BOS,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x0FCE,
|
||||
product: 0x0DDE,
|
||||
flags: UsbQuirkFlags::NO_LPM,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x10D6,
|
||||
product: 0x2200,
|
||||
flags: UsbQuirkFlags::NO_STRING_FETCH,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x1235,
|
||||
product: 0x0061,
|
||||
flags: UsbQuirkFlags::NEED_RESET,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x1235,
|
||||
product: 0x8211,
|
||||
flags: UsbQuirkFlags::NO_SUSPEND,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x12D1,
|
||||
product: 0x15BB,
|
||||
flags: UsbQuirkFlags::NO_SUSPEND,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x12D1,
|
||||
product: 0x15C1,
|
||||
flags: UsbQuirkFlags::NO_SUSPEND,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x12D1,
|
||||
product: 0x15C3,
|
||||
flags: UsbQuirkFlags::NO_SUSPEND,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x1516,
|
||||
product: 0x8628,
|
||||
flags: UsbQuirkFlags::NEED_RESET,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x1532,
|
||||
product: 0x0116,
|
||||
flags: UsbQuirkFlags::BAD_DESCRIPTOR,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x1532,
|
||||
product: 0x0E05,
|
||||
flags: UsbQuirkFlags::NO_LPM,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x17EF,
|
||||
product: 0x1018,
|
||||
flags: UsbQuirkFlags::NEED_RESET,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x17EF,
|
||||
product: 0x1019,
|
||||
flags: UsbQuirkFlags::NEED_RESET,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x17EF,
|
||||
product: 0x720C,
|
||||
flags: UsbQuirkFlags::NO_LPM,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x17EF,
|
||||
product: 0x721E,
|
||||
flags: UsbQuirkFlags::NO_LPM,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x17EF,
|
||||
product: 0xA012,
|
||||
flags: UsbQuirkFlags::NO_SUSPEND,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x17EF,
|
||||
product: 0xA387,
|
||||
flags: UsbQuirkFlags::NO_LPM,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x1908,
|
||||
product: 0x1315,
|
||||
flags: UsbQuirkFlags::HONOR_BNUMINTERFACES,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x1A0A,
|
||||
product: 0x0200,
|
||||
flags: UsbQuirkFlags::BAD_DESCRIPTOR,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x1A40,
|
||||
product: 0x0101,
|
||||
flags: UsbQuirkFlags::HUB_SLOW_RESET,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x1B1C,
|
||||
product: 0x1B13,
|
||||
flags: F_02,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x1B1C,
|
||||
product: 0x1B15,
|
||||
flags: F_02,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x1B1C,
|
||||
product: 0x1B20,
|
||||
flags: F_02,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x1B1C,
|
||||
product: 0x1B33,
|
||||
flags: UsbQuirkFlags::RESET_DELAY,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x1B1C,
|
||||
product: 0x1B36,
|
||||
flags: UsbQuirkFlags::RESET_DELAY,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x1B1C,
|
||||
product: 0x1B38,
|
||||
flags: F_02,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x1BC3,
|
||||
product: 0x0003,
|
||||
flags: UsbQuirkFlags::NO_SET_INTF,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x1C75,
|
||||
product: 0x0204,
|
||||
flags: UsbQuirkFlags::CONFIG_INTF_STRINGS,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x1DE1,
|
||||
product: 0xC102,
|
||||
flags: UsbQuirkFlags::NO_LPM,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x2109,
|
||||
product: 0x2813,
|
||||
vendor: 0x1EDB,
|
||||
product: 0xBD3B,
|
||||
flags: UsbQuirkFlags::NO_LPM,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x2109,
|
||||
product: 0x0815,
|
||||
flags: UsbQuirkFlags::NO_U1U2,
|
||||
vendor: 0x1EDB,
|
||||
product: 0xBD4F,
|
||||
flags: UsbQuirkFlags::NO_LPM,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x8087,
|
||||
product: 0x0025,
|
||||
flags: UsbQuirkFlags::NO_SUSPEND,
|
||||
vendor: 0x1F75,
|
||||
product: 0x0917,
|
||||
flags: UsbQuirkFlags::NO_LPM,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x2040,
|
||||
product: 0x7200,
|
||||
flags: UsbQuirkFlags::CONFIG_INTF_STRINGS,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x2109,
|
||||
product: 0x0711,
|
||||
flags: UsbQuirkFlags::NO_LPM,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x2386,
|
||||
product: 0x3114,
|
||||
flags: UsbQuirkFlags::NO_LPM,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x2386,
|
||||
product: 0x3119,
|
||||
flags: UsbQuirkFlags::NO_LPM,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x2386,
|
||||
product: 0x350E,
|
||||
flags: UsbQuirkFlags::NO_LPM,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x2B89,
|
||||
product: 0x5871,
|
||||
flags: UsbQuirkFlags::NO_BOS,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x2C48,
|
||||
product: 0x0132,
|
||||
flags: UsbQuirkFlags::SHORT_SET_ADDR_TIMEOUT,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x2CA3,
|
||||
product: 0x0031,
|
||||
flags: UsbQuirkFlags::NO_LPM,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x2CE3,
|
||||
product: 0x9563,
|
||||
flags: UsbQuirkFlags::NO_LPM,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x32ED,
|
||||
product: 0x0401,
|
||||
flags: UsbQuirkFlags::NO_BOS,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x413C,
|
||||
product: 0xB062,
|
||||
flags: F_00,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x4296,
|
||||
product: 0x7570,
|
||||
flags: UsbQuirkFlags::CONFIG_INTF_STRINGS,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x5131,
|
||||
product: 0x2007,
|
||||
flags: UsbQuirkFlags::FORCE_ONE_CONFIG,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x8086,
|
||||
product: 0xF1A5,
|
||||
flags: UsbQuirkFlags::NEED_RESET,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x17EF,
|
||||
product: 0x602E,
|
||||
flags: UsbQuirkFlags::NEED_RESET,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x093A,
|
||||
product: 0x2500,
|
||||
flags: UsbQuirkFlags::NEED_RESET,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x093A,
|
||||
product: 0x2510,
|
||||
flags: UsbQuirkFlags::NEED_RESET,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x093A,
|
||||
product: 0x2521,
|
||||
flags: UsbQuirkFlags::NEED_RESET,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x03F0,
|
||||
product: 0x2B4A,
|
||||
flags: UsbQuirkFlags::NEED_RESET,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x046D,
|
||||
product: 0xC05A,
|
||||
flags: UsbQuirkFlags::NEED_RESET,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x8087,
|
||||
product: 0x0A2B,
|
||||
flags: F_NO_SUSP_RESET,
|
||||
},
|
||||
UsbQuirkEntry {
|
||||
vendor: 0x0A12,
|
||||
product: PCI_QUIRK_ANY_ID,
|
||||
flags: F_BAD_DESC_NO_CFG,
|
||||
flags: F_03,
|
||||
},
|
||||
];
|
||||
|
||||
Reference in New Issue
Block a user