Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

USB HID: encapsulate quirk handling into hid-quirks.c

Move the USB_VENDOR* and USB_DEVICE* defines and the hid_blacklist[]
array there from hid-core.c. Add
hid-quirks.c:usbhid_lookup_any_quirks() to return quirk information to
hid-core.c. Convert __u32, __u16 types to u32, u16.

Signed-off-by: Paul Walmsley <paul@booyaka.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>

authored by

Paul Walmsley and committed by
Jiri Kosina
2eb5dc30 4d5a1be9

+489 -446
+1 -1
drivers/hid/usbhid/Makefile
··· 3 3 # 4 4 5 5 # Multipart objects. 6 - usbhid-objs := hid-core.o 6 + usbhid-objs := hid-core.o hid-quirks.o 7 7 8 8 # Optional parts of multipart objects. 9 9
+3 -445
drivers/hid/usbhid/hid-core.c
··· 53 53 module_param_named(mousepoll, hid_mousepoll_interval, uint, 0644); 54 54 MODULE_PARM_DESC(mousepoll, "Polling interval of mice"); 55 55 56 - #define USB_VENDOR_ID_A4TECH 0x09da 57 - #define USB_DEVICE_ID_A4TECH_WCP32PU 0x0006 58 - 59 - #define USB_VENDOR_ID_AASHIMA 0x06d6 60 - #define USB_DEVICE_ID_AASHIMA_GAMEPAD 0x0025 61 - #define USB_DEVICE_ID_AASHIMA_PREDATOR 0x0026 62 - 63 - #define USB_VENDOR_ID_ACECAD 0x0460 64 - #define USB_DEVICE_ID_ACECAD_FLAIR 0x0004 65 - #define USB_DEVICE_ID_ACECAD_302 0x0008 66 - 67 - #define USB_VENDOR_ID_AIPTEK 0x08ca 68 - #define USB_DEVICE_ID_AIPTEK_01 0x0001 69 - #define USB_DEVICE_ID_AIPTEK_10 0x0010 70 - #define USB_DEVICE_ID_AIPTEK_20 0x0020 71 - #define USB_DEVICE_ID_AIPTEK_21 0x0021 72 - #define USB_DEVICE_ID_AIPTEK_22 0x0022 73 - #define USB_DEVICE_ID_AIPTEK_23 0x0023 74 - #define USB_DEVICE_ID_AIPTEK_24 0x0024 75 - 76 - #define USB_VENDOR_ID_AIRCABLE 0x16CA 77 - #define USB_DEVICE_ID_AIRCABLE1 0x1502 78 - 79 - #define USB_VENDOR_ID_ALCOR 0x058f 80 - #define USB_DEVICE_ID_ALCOR_USBRS232 0x9720 81 - 82 - #define USB_VENDOR_ID_ALPS 0x0433 83 - #define USB_DEVICE_ID_IBM_GAMEPAD 0x1101 84 - 85 - #define USB_VENDOR_ID_APPLE 0x05ac 86 - #define USB_DEVICE_ID_APPLE_MIGHTYMOUSE 0x0304 87 - #define USB_DEVICE_ID_APPLE_FOUNTAIN_ANSI 0x020e 88 - #define USB_DEVICE_ID_APPLE_FOUNTAIN_ISO 0x020f 89 - #define USB_DEVICE_ID_APPLE_GEYSER_ANSI 0x0214 90 - #define USB_DEVICE_ID_APPLE_GEYSER_ISO 0x0215 91 - #define USB_DEVICE_ID_APPLE_GEYSER_JIS 0x0216 92 - #define USB_DEVICE_ID_APPLE_GEYSER3_ANSI 0x0217 93 - #define USB_DEVICE_ID_APPLE_GEYSER3_ISO 0x0218 94 - #define USB_DEVICE_ID_APPLE_GEYSER3_JIS 0x0219 95 - #define USB_DEVICE_ID_APPLE_GEYSER4_ANSI 0x021a 96 - #define USB_DEVICE_ID_APPLE_GEYSER4_ISO 0x021b 97 - #define USB_DEVICE_ID_APPLE_GEYSER4_JIS 0x021c 98 - #define USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY 0x030a 99 - #define USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY 0x030b 100 - #define USB_DEVICE_ID_APPLE_IR 0x8240 101 - 102 - #define USB_VENDOR_ID_ATEN 0x0557 103 - #define USB_DEVICE_ID_ATEN_UC100KM 0x2004 104 - #define USB_DEVICE_ID_ATEN_CS124U 0x2202 105 - #define USB_DEVICE_ID_ATEN_2PORTKVM 0x2204 106 - #define USB_DEVICE_ID_ATEN_4PORTKVM 0x2205 107 - #define USB_DEVICE_ID_ATEN_4PORTKVMC 0x2208 108 - 109 - #define USB_VENDOR_ID_BELKIN 0x050d 110 - #define USB_DEVICE_ID_FLIP_KVM 0x3201 111 - 112 - #define USB_VENDOR_ID_BERKSHIRE 0x0c98 113 - #define USB_DEVICE_ID_BERKSHIRE_PCWD 0x1140 114 - 115 - #define USB_VENDOR_ID_CHERRY 0x046a 116 - #define USB_DEVICE_ID_CHERRY_CYMOTION 0x0023 117 - 118 - #define USB_VENDOR_ID_CHIC 0x05fe 119 - #define USB_DEVICE_ID_CHIC_GAMEPAD 0x0014 120 - 121 - #define USB_VENDOR_ID_CIDC 0x1677 122 - 123 - #define USB_VENDOR_ID_CODEMERCS 0x07c0 124 - #define USB_DEVICE_ID_CODEMERCS_IOW_FIRST 0x1500 125 - #define USB_DEVICE_ID_CODEMERCS_IOW_LAST 0x15ff 126 - 127 - #define USB_VENDOR_ID_CYPRESS 0x04b4 128 - #define USB_DEVICE_ID_CYPRESS_MOUSE 0x0001 129 - #define USB_DEVICE_ID_CYPRESS_HIDCOM 0x5500 130 - #define USB_DEVICE_ID_CYPRESS_ULTRAMOUSE 0x7417 131 - 132 - #define USB_VENDOR_ID_DELL 0x413c 133 - #define USB_DEVICE_ID_DELL_W7658 0x2005 134 - 135 - #define USB_VENDOR_ID_DELORME 0x1163 136 - #define USB_DEVICE_ID_DELORME_EARTHMATE 0x0100 137 - #define USB_DEVICE_ID_DELORME_EM_LT20 0x0200 138 - 139 - #define USB_VENDOR_ID_ESSENTIAL_REALITY 0x0d7f 140 - #define USB_DEVICE_ID_ESSENTIAL_REALITY_P5 0x0100 141 - 142 - #define USB_VENDOR_ID_GLAB 0x06c2 143 - #define USB_DEVICE_ID_4_PHIDGETSERVO_30 0x0038 144 - #define USB_DEVICE_ID_1_PHIDGETSERVO_30 0x0039 145 - #define USB_DEVICE_ID_0_0_4_IF_KIT 0x0040 146 - #define USB_DEVICE_ID_0_16_16_IF_KIT 0x0044 147 - #define USB_DEVICE_ID_8_8_8_IF_KIT 0x0045 148 - #define USB_DEVICE_ID_0_8_7_IF_KIT 0x0051 149 - #define USB_DEVICE_ID_0_8_8_IF_KIT 0x0053 150 - #define USB_DEVICE_ID_PHIDGET_MOTORCONTROL 0x0058 151 - 152 - #define USB_VENDOR_ID_GRIFFIN 0x077d 153 - #define USB_DEVICE_ID_POWERMATE 0x0410 154 - #define USB_DEVICE_ID_SOUNDKNOB 0x04AA 155 - 156 - #define USB_VENDOR_ID_GTCO 0x078c 157 - #define USB_DEVICE_ID_GTCO_90 0x0090 158 - #define USB_DEVICE_ID_GTCO_100 0x0100 159 - #define USB_DEVICE_ID_GTCO_101 0x0101 160 - #define USB_DEVICE_ID_GTCO_103 0x0103 161 - #define USB_DEVICE_ID_GTCO_104 0x0104 162 - #define USB_DEVICE_ID_GTCO_105 0x0105 163 - #define USB_DEVICE_ID_GTCO_106 0x0106 164 - #define USB_DEVICE_ID_GTCO_107 0x0107 165 - #define USB_DEVICE_ID_GTCO_108 0x0108 166 - #define USB_DEVICE_ID_GTCO_200 0x0200 167 - #define USB_DEVICE_ID_GTCO_201 0x0201 168 - #define USB_DEVICE_ID_GTCO_202 0x0202 169 - #define USB_DEVICE_ID_GTCO_203 0x0203 170 - #define USB_DEVICE_ID_GTCO_204 0x0204 171 - #define USB_DEVICE_ID_GTCO_205 0x0205 172 - #define USB_DEVICE_ID_GTCO_206 0x0206 173 - #define USB_DEVICE_ID_GTCO_207 0x0207 174 - #define USB_DEVICE_ID_GTCO_300 0x0300 175 - #define USB_DEVICE_ID_GTCO_301 0x0301 176 - #define USB_DEVICE_ID_GTCO_302 0x0302 177 - #define USB_DEVICE_ID_GTCO_303 0x0303 178 - #define USB_DEVICE_ID_GTCO_304 0x0304 179 - #define USB_DEVICE_ID_GTCO_305 0x0305 180 - #define USB_DEVICE_ID_GTCO_306 0x0306 181 - #define USB_DEVICE_ID_GTCO_307 0x0307 182 - #define USB_DEVICE_ID_GTCO_308 0x0308 183 - #define USB_DEVICE_ID_GTCO_309 0x0309 184 - #define USB_DEVICE_ID_GTCO_400 0x0400 185 - #define USB_DEVICE_ID_GTCO_401 0x0401 186 - #define USB_DEVICE_ID_GTCO_402 0x0402 187 - #define USB_DEVICE_ID_GTCO_403 0x0403 188 - #define USB_DEVICE_ID_GTCO_404 0x0404 189 - #define USB_DEVICE_ID_GTCO_405 0x0405 190 - #define USB_DEVICE_ID_GTCO_500 0x0500 191 - #define USB_DEVICE_ID_GTCO_501 0x0501 192 - #define USB_DEVICE_ID_GTCO_502 0x0502 193 - #define USB_DEVICE_ID_GTCO_503 0x0503 194 - #define USB_DEVICE_ID_GTCO_504 0x0504 195 - #define USB_DEVICE_ID_GTCO_1000 0x1000 196 - #define USB_DEVICE_ID_GTCO_1001 0x1001 197 - #define USB_DEVICE_ID_GTCO_1002 0x1002 198 - #define USB_DEVICE_ID_GTCO_1003 0x1003 199 - #define USB_DEVICE_ID_GTCO_1004 0x1004 200 - #define USB_DEVICE_ID_GTCO_1005 0x1005 201 - #define USB_DEVICE_ID_GTCO_1006 0x1006 202 - 203 - #define USB_VENDOR_ID_HAPP 0x078b 204 - #define USB_DEVICE_ID_UGCI_DRIVING 0x0010 205 - #define USB_DEVICE_ID_UGCI_FLYING 0x0020 206 - #define USB_DEVICE_ID_UGCI_FIGHTING 0x0030 207 - 208 - #define USB_VENDOR_ID_IMATION 0x0718 209 - #define USB_DEVICE_ID_DISC_STAKKA 0xd000 210 - 211 - #define USB_VENDOR_ID_KBGEAR 0x084e 212 - #define USB_DEVICE_ID_KBGEAR_JAMSTUDIO 0x1001 213 - 214 - #define USB_VENDOR_ID_LD 0x0f11 215 - #define USB_DEVICE_ID_LD_CASSY 0x1000 216 - #define USB_DEVICE_ID_LD_POCKETCASSY 0x1010 217 - #define USB_DEVICE_ID_LD_MOBILECASSY 0x1020 218 - #define USB_DEVICE_ID_LD_JWM 0x1080 219 - #define USB_DEVICE_ID_LD_DMMP 0x1081 220 - #define USB_DEVICE_ID_LD_UMIP 0x1090 221 - #define USB_DEVICE_ID_LD_XRAY1 0x1100 222 - #define USB_DEVICE_ID_LD_XRAY2 0x1101 223 - #define USB_DEVICE_ID_LD_VIDEOCOM 0x1200 224 - #define USB_DEVICE_ID_LD_COM3LAB 0x2000 225 - #define USB_DEVICE_ID_LD_TELEPORT 0x2010 226 - #define USB_DEVICE_ID_LD_NETWORKANALYSER 0x2020 227 - #define USB_DEVICE_ID_LD_POWERCONTROL 0x2030 228 - #define USB_DEVICE_ID_LD_MACHINETEST 0x2040 229 - 230 - #define USB_VENDOR_ID_LOGITECH 0x046d 231 - #define USB_DEVICE_ID_LOGITECH_RECEIVER 0xc101 232 - #define USB_DEVICE_ID_S510_RECEIVER 0xc50c 233 - #define USB_DEVICE_ID_S510_RECEIVER_2 0xc517 234 - #define USB_DEVICE_ID_MX3000_RECEIVER 0xc513 235 - #define USB_DEVICE_ID_DINOVO_EDGE 0xc714 236 - 237 - #define USB_VENDOR_ID_MCC 0x09db 238 - #define USB_DEVICE_ID_MCC_PMD1024LS 0x0076 239 - #define USB_DEVICE_ID_MCC_PMD1208LS 0x007a 240 - 241 - #define USB_VENDOR_ID_MGE 0x0463 242 - #define USB_DEVICE_ID_MGE_UPS 0xffff 243 - #define USB_DEVICE_ID_MGE_UPS1 0x0001 244 - 245 - #define USB_VENDOR_ID_NEC 0x073e 246 - #define USB_DEVICE_ID_NEC_USB_GAME_PAD 0x0301 247 - 248 - #define USB_VENDOR_ID_ONTRAK 0x0a07 249 - #define USB_DEVICE_ID_ONTRAK_ADU100 0x0064 250 - 251 - #define USB_VENDOR_ID_PANJIT 0x134c 252 - 253 - #define USB_VENDOR_ID_PANTHERLORD 0x0810 254 - #define USB_DEVICE_ID_PANTHERLORD_TWIN_USB_JOYSTICK 0x0001 255 - 256 - #define USB_VENDOR_ID_PLAYDOTCOM 0x0b43 257 - #define USB_DEVICE_ID_PLAYDOTCOM_EMS_USBII 0x0003 258 - 259 - #define USB_VENDOR_ID_SAITEK 0x06a3 260 - #define USB_DEVICE_ID_SAITEK_RUMBLEPAD 0xff17 261 - 262 - #define USB_VENDOR_ID_SONY 0x054c 263 - #define USB_DEVICE_ID_SONY_PS3_CONTROLLER 0x0268 264 - 265 - #define USB_VENDOR_ID_SUN 0x0430 266 - #define USB_DEVICE_ID_RARITAN_KVM_DONGLE 0xcdab 267 - 268 - #define USB_VENDOR_ID_TOPMAX 0x0663 269 - #define USB_DEVICE_ID_TOPMAX_COBRAPAD 0x0103 270 - 271 - #define USB_VENDOR_ID_TURBOX 0x062a 272 - #define USB_DEVICE_ID_TURBOX_KEYBOARD 0x0201 273 - 274 - #define USB_VENDOR_ID_VERNIER 0x08f7 275 - #define USB_DEVICE_ID_VERNIER_LABPRO 0x0001 276 - #define USB_DEVICE_ID_VERNIER_GOTEMP 0x0002 277 - #define USB_DEVICE_ID_VERNIER_SKIP 0x0003 278 - #define USB_DEVICE_ID_VERNIER_CYCLOPS 0x0004 279 - 280 - #define USB_VENDOR_ID_WACOM 0x056a 281 - 282 - #define USB_VENDOR_ID_WISEGROUP 0x0925 283 - #define USB_DEVICE_ID_1_PHIDGETSERVO_20 0x8101 284 - #define USB_DEVICE_ID_4_PHIDGETSERVO_20 0x8104 285 - #define USB_DEVICE_ID_8_8_4_IF_KIT 0x8201 286 - #define USB_DEVICE_ID_QUAD_USB_JOYPAD 0x8800 287 - #define USB_DEVICE_ID_DUAL_USB_JOYPAD 0x8866 288 - 289 - #define USB_VENDOR_ID_WISEGROUP_LTD 0x6677 290 - #define USB_DEVICE_ID_SMARTJOY_DUAL_PLUS 0x8802 291 - 292 - #define USB_VENDOR_ID_YEALINK 0x6993 293 - #define USB_DEVICE_ID_YEALINK_P1K_P4K_B2K 0xb001 294 - 295 - /* 296 - * Alphabetically sorted blacklist by quirk type. 297 - */ 298 - 299 - static const struct hid_blacklist { 300 - __u16 idVendor; 301 - __u16 idProduct; 302 - __u32 quirks; 303 - } hid_blacklist[] = { 304 - 305 - { USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_WCP32PU, HID_QUIRK_2WHEEL_MOUSE_HACK_7 }, 306 - { USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_MOUSE, HID_QUIRK_2WHEEL_MOUSE_HACK_5 }, 307 - 308 - { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_RECEIVER, HID_QUIRK_BAD_RELATIVE_KEYS }, 309 - 310 - { USB_VENDOR_ID_AASHIMA, USB_DEVICE_ID_AASHIMA_GAMEPAD, HID_QUIRK_BADPAD }, 311 - { USB_VENDOR_ID_AASHIMA, USB_DEVICE_ID_AASHIMA_PREDATOR, HID_QUIRK_BADPAD }, 312 - { USB_VENDOR_ID_ALPS, USB_DEVICE_ID_IBM_GAMEPAD, HID_QUIRK_BADPAD }, 313 - { USB_VENDOR_ID_CHIC, USB_DEVICE_ID_CHIC_GAMEPAD, HID_QUIRK_BADPAD }, 314 - { USB_VENDOR_ID_HAPP, USB_DEVICE_ID_UGCI_DRIVING, HID_QUIRK_BADPAD | HID_QUIRK_MULTI_INPUT }, 315 - { USB_VENDOR_ID_HAPP, USB_DEVICE_ID_UGCI_FLYING, HID_QUIRK_BADPAD | HID_QUIRK_MULTI_INPUT }, 316 - { USB_VENDOR_ID_HAPP, USB_DEVICE_ID_UGCI_FIGHTING, HID_QUIRK_BADPAD | HID_QUIRK_MULTI_INPUT }, 317 - { USB_VENDOR_ID_NEC, USB_DEVICE_ID_NEC_USB_GAME_PAD, HID_QUIRK_BADPAD }, 318 - { USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_RUMBLEPAD, HID_QUIRK_BADPAD }, 319 - { USB_VENDOR_ID_TOPMAX, USB_DEVICE_ID_TOPMAX_COBRAPAD, HID_QUIRK_BADPAD }, 320 - 321 - { USB_VENDOR_ID_CHERRY, USB_DEVICE_ID_CHERRY_CYMOTION, HID_QUIRK_CYMOTION }, 322 - 323 - { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_DINOVO_EDGE, HID_QUIRK_DUPLICATE_USAGES }, 324 - 325 - { USB_VENDOR_ID_BELKIN, USB_DEVICE_ID_FLIP_KVM, HID_QUIRK_HIDDEV }, 326 - 327 - { USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_01, HID_QUIRK_IGNORE }, 328 - { USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_10, HID_QUIRK_IGNORE }, 329 - { USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_20, HID_QUIRK_IGNORE }, 330 - { USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_21, HID_QUIRK_IGNORE }, 331 - { USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_22, HID_QUIRK_IGNORE }, 332 - { USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_23, HID_QUIRK_IGNORE }, 333 - { USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_24, HID_QUIRK_IGNORE }, 334 - { USB_VENDOR_ID_AIRCABLE, USB_DEVICE_ID_AIRCABLE1, HID_QUIRK_IGNORE }, 335 - { USB_VENDOR_ID_ALCOR, USB_DEVICE_ID_ALCOR_USBRS232, HID_QUIRK_IGNORE }, 336 - { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IR, HID_QUIRK_IGNORE }, 337 - { USB_VENDOR_ID_BERKSHIRE, USB_DEVICE_ID_BERKSHIRE_PCWD, HID_QUIRK_IGNORE }, 338 - { USB_VENDOR_ID_CIDC, 0x0103, HID_QUIRK_IGNORE }, 339 - { USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_HIDCOM, HID_QUIRK_IGNORE }, 340 - { USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_ULTRAMOUSE, HID_QUIRK_IGNORE }, 341 - { USB_VENDOR_ID_DELORME, USB_DEVICE_ID_DELORME_EARTHMATE, HID_QUIRK_IGNORE }, 342 - { USB_VENDOR_ID_DELORME, USB_DEVICE_ID_DELORME_EM_LT20, HID_QUIRK_IGNORE }, 343 - { USB_VENDOR_ID_ESSENTIAL_REALITY, USB_DEVICE_ID_ESSENTIAL_REALITY_P5, HID_QUIRK_IGNORE }, 344 - { USB_VENDOR_ID_GLAB, USB_DEVICE_ID_4_PHIDGETSERVO_30, HID_QUIRK_IGNORE }, 345 - { USB_VENDOR_ID_GLAB, USB_DEVICE_ID_1_PHIDGETSERVO_30, HID_QUIRK_IGNORE }, 346 - { USB_VENDOR_ID_GLAB, USB_DEVICE_ID_0_0_4_IF_KIT, HID_QUIRK_IGNORE }, 347 - { USB_VENDOR_ID_GLAB, USB_DEVICE_ID_0_16_16_IF_KIT, HID_QUIRK_IGNORE }, 348 - { USB_VENDOR_ID_GLAB, USB_DEVICE_ID_8_8_8_IF_KIT, HID_QUIRK_IGNORE }, 349 - { USB_VENDOR_ID_GLAB, USB_DEVICE_ID_0_8_7_IF_KIT, HID_QUIRK_IGNORE }, 350 - { USB_VENDOR_ID_GLAB, USB_DEVICE_ID_0_8_8_IF_KIT, HID_QUIRK_IGNORE }, 351 - { USB_VENDOR_ID_GLAB, USB_DEVICE_ID_PHIDGET_MOTORCONTROL, HID_QUIRK_IGNORE }, 352 - { USB_VENDOR_ID_GRIFFIN, USB_DEVICE_ID_POWERMATE, HID_QUIRK_IGNORE }, 353 - { USB_VENDOR_ID_GRIFFIN, USB_DEVICE_ID_SOUNDKNOB, HID_QUIRK_IGNORE }, 354 - { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_90, HID_QUIRK_IGNORE }, 355 - { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_100, HID_QUIRK_IGNORE }, 356 - { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_101, HID_QUIRK_IGNORE }, 357 - { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_103, HID_QUIRK_IGNORE }, 358 - { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_104, HID_QUIRK_IGNORE }, 359 - { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_105, HID_QUIRK_IGNORE }, 360 - { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_106, HID_QUIRK_IGNORE }, 361 - { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_107, HID_QUIRK_IGNORE }, 362 - { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_108, HID_QUIRK_IGNORE }, 363 - { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_200, HID_QUIRK_IGNORE }, 364 - { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_201, HID_QUIRK_IGNORE }, 365 - { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_202, HID_QUIRK_IGNORE }, 366 - { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_203, HID_QUIRK_IGNORE }, 367 - { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_204, HID_QUIRK_IGNORE }, 368 - { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_205, HID_QUIRK_IGNORE }, 369 - { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_206, HID_QUIRK_IGNORE }, 370 - { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_207, HID_QUIRK_IGNORE }, 371 - { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_300, HID_QUIRK_IGNORE }, 372 - { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_301, HID_QUIRK_IGNORE }, 373 - { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_302, HID_QUIRK_IGNORE }, 374 - { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_303, HID_QUIRK_IGNORE }, 375 - { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_304, HID_QUIRK_IGNORE }, 376 - { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_305, HID_QUIRK_IGNORE }, 377 - { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_306, HID_QUIRK_IGNORE }, 378 - { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_307, HID_QUIRK_IGNORE }, 379 - { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_308, HID_QUIRK_IGNORE }, 380 - { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_309, HID_QUIRK_IGNORE }, 381 - { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_400, HID_QUIRK_IGNORE }, 382 - { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_401, HID_QUIRK_IGNORE }, 383 - { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_402, HID_QUIRK_IGNORE }, 384 - { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_403, HID_QUIRK_IGNORE }, 385 - { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_404, HID_QUIRK_IGNORE }, 386 - { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_405, HID_QUIRK_IGNORE }, 387 - { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_500, HID_QUIRK_IGNORE }, 388 - { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_501, HID_QUIRK_IGNORE }, 389 - { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_502, HID_QUIRK_IGNORE }, 390 - { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_503, HID_QUIRK_IGNORE }, 391 - { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_504, HID_QUIRK_IGNORE }, 392 - { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1000, HID_QUIRK_IGNORE }, 393 - { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1001, HID_QUIRK_IGNORE }, 394 - { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1002, HID_QUIRK_IGNORE }, 395 - { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1003, HID_QUIRK_IGNORE }, 396 - { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1004, HID_QUIRK_IGNORE }, 397 - { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1005, HID_QUIRK_IGNORE }, 398 - { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1006, HID_QUIRK_IGNORE }, 399 - { USB_VENDOR_ID_IMATION, USB_DEVICE_ID_DISC_STAKKA, HID_QUIRK_IGNORE }, 400 - { USB_VENDOR_ID_KBGEAR, USB_DEVICE_ID_KBGEAR_JAMSTUDIO, HID_QUIRK_IGNORE }, 401 - { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_CASSY, HID_QUIRK_IGNORE }, 402 - { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_POCKETCASSY, HID_QUIRK_IGNORE }, 403 - { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MOBILECASSY, HID_QUIRK_IGNORE }, 404 - { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_JWM, HID_QUIRK_IGNORE }, 405 - { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_DMMP, HID_QUIRK_IGNORE }, 406 - { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_UMIP, HID_QUIRK_IGNORE }, 407 - { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_XRAY1, HID_QUIRK_IGNORE }, 408 - { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_XRAY2, HID_QUIRK_IGNORE }, 409 - { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_VIDEOCOM, HID_QUIRK_IGNORE }, 410 - { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_COM3LAB, HID_QUIRK_IGNORE }, 411 - { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_TELEPORT, HID_QUIRK_IGNORE }, 412 - { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_NETWORKANALYSER, HID_QUIRK_IGNORE }, 413 - { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_POWERCONTROL, HID_QUIRK_IGNORE }, 414 - { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MACHINETEST, HID_QUIRK_IGNORE }, 415 - { USB_VENDOR_ID_MCC, USB_DEVICE_ID_MCC_PMD1024LS, HID_QUIRK_IGNORE }, 416 - { USB_VENDOR_ID_MCC, USB_DEVICE_ID_MCC_PMD1208LS, HID_QUIRK_IGNORE }, 417 - { USB_VENDOR_ID_MGE, USB_DEVICE_ID_MGE_UPS, HID_QUIRK_IGNORE }, 418 - { USB_VENDOR_ID_MGE, USB_DEVICE_ID_MGE_UPS1, HID_QUIRK_IGNORE }, 419 - { USB_VENDOR_ID_ONTRAK, USB_DEVICE_ID_ONTRAK_ADU100, HID_QUIRK_IGNORE }, 420 - { USB_VENDOR_ID_ONTRAK, USB_DEVICE_ID_ONTRAK_ADU100 + 20, HID_QUIRK_IGNORE }, 421 - { USB_VENDOR_ID_ONTRAK, USB_DEVICE_ID_ONTRAK_ADU100 + 30, HID_QUIRK_IGNORE }, 422 - { USB_VENDOR_ID_ONTRAK, USB_DEVICE_ID_ONTRAK_ADU100 + 100, HID_QUIRK_IGNORE }, 423 - { USB_VENDOR_ID_ONTRAK, USB_DEVICE_ID_ONTRAK_ADU100 + 108, HID_QUIRK_IGNORE }, 424 - { USB_VENDOR_ID_ONTRAK, USB_DEVICE_ID_ONTRAK_ADU100 + 118, HID_QUIRK_IGNORE }, 425 - { USB_VENDOR_ID_ONTRAK, USB_DEVICE_ID_ONTRAK_ADU100 + 200, HID_QUIRK_IGNORE }, 426 - { USB_VENDOR_ID_ONTRAK, USB_DEVICE_ID_ONTRAK_ADU100 + 300, HID_QUIRK_IGNORE }, 427 - { USB_VENDOR_ID_ONTRAK, USB_DEVICE_ID_ONTRAK_ADU100 + 400, HID_QUIRK_IGNORE }, 428 - { USB_VENDOR_ID_ONTRAK, USB_DEVICE_ID_ONTRAK_ADU100 + 500, HID_QUIRK_IGNORE }, 429 - { USB_VENDOR_ID_PANJIT, 0x0001, HID_QUIRK_IGNORE }, 430 - { USB_VENDOR_ID_PANJIT, 0x0002, HID_QUIRK_IGNORE }, 431 - { USB_VENDOR_ID_PANJIT, 0x0003, HID_QUIRK_IGNORE }, 432 - { USB_VENDOR_ID_PANJIT, 0x0004, HID_QUIRK_IGNORE }, 433 - { USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_LABPRO, HID_QUIRK_IGNORE }, 434 - { USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_GOTEMP, HID_QUIRK_IGNORE }, 435 - { USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_SKIP, HID_QUIRK_IGNORE }, 436 - { USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_CYCLOPS, HID_QUIRK_IGNORE }, 437 - { USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_4_PHIDGETSERVO_20, HID_QUIRK_IGNORE }, 438 - { USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_1_PHIDGETSERVO_20, HID_QUIRK_IGNORE }, 439 - { USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_8_8_4_IF_KIT, HID_QUIRK_IGNORE }, 440 - { USB_VENDOR_ID_YEALINK, USB_DEVICE_ID_YEALINK_P1K_P4K_B2K, HID_QUIRK_IGNORE }, 441 - 442 - { USB_VENDOR_ID_ACECAD, USB_DEVICE_ID_ACECAD_FLAIR, HID_QUIRK_IGNORE }, 443 - { USB_VENDOR_ID_ACECAD, USB_DEVICE_ID_ACECAD_302, HID_QUIRK_IGNORE }, 444 - 445 - { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_MX3000_RECEIVER, HID_QUIRK_LOGITECH_DESCRIPTOR }, 446 - { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_S510_RECEIVER, HID_QUIRK_LOGITECH_DESCRIPTOR }, 447 - { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_S510_RECEIVER_2, HID_QUIRK_LOGITECH_DESCRIPTOR }, 448 - 449 - { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MIGHTYMOUSE, HID_QUIRK_MIGHTYMOUSE | HID_QUIRK_INVERT_HWHEEL }, 450 - 451 - { USB_VENDOR_ID_PANTHERLORD, USB_DEVICE_ID_PANTHERLORD_TWIN_USB_JOYSTICK, HID_QUIRK_MULTI_INPUT | HID_QUIRK_SKIP_OUTPUT_REPORTS }, 452 - { USB_VENDOR_ID_PLAYDOTCOM, USB_DEVICE_ID_PLAYDOTCOM_EMS_USBII, HID_QUIRK_MULTI_INPUT }, 453 - 454 - { USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_PS3_CONTROLLER, HID_QUIRK_SONY_PS3_CONTROLLER }, 455 - 456 - { USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_UC100KM, HID_QUIRK_NOGET }, 457 - { USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_CS124U, HID_QUIRK_NOGET }, 458 - { USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_2PORTKVM, HID_QUIRK_NOGET }, 459 - { USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_4PORTKVM, HID_QUIRK_NOGET }, 460 - { USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_4PORTKVMC, HID_QUIRK_NOGET }, 461 - { USB_VENDOR_ID_SUN, USB_DEVICE_ID_RARITAN_KVM_DONGLE, HID_QUIRK_NOGET }, 462 - { USB_VENDOR_ID_TURBOX, USB_DEVICE_ID_TURBOX_KEYBOARD, HID_QUIRK_NOGET }, 463 - { USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_DUAL_USB_JOYPAD, HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT }, 464 - { USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_QUAD_USB_JOYPAD, HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT }, 465 - 466 - { USB_VENDOR_ID_WISEGROUP_LTD, USB_DEVICE_ID_SMARTJOY_DUAL_PLUS, HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT }, 467 - 468 - { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_ANSI, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, 469 - { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_ISO, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, 470 - { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_ANSI, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, 471 - { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_ISO, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_POWERBOOK_ISO_KEYBOARD}, 472 - { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_JIS, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, 473 - { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_ANSI, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, 474 - { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_ISO, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_POWERBOOK_ISO_KEYBOARD}, 475 - { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_JIS, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, 476 - { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ANSI, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, 477 - { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ISO, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_POWERBOOK_ISO_KEYBOARD}, 478 - { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_JIS, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, 479 - { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, 480 - { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, 481 - 482 - { USB_VENDOR_ID_DELL, USB_DEVICE_ID_DELL_W7658, HID_QUIRK_RESET_LEDS }, 483 - 484 - { 0, 0 } 485 - }; 486 - 487 56 /* 488 57 * Input submission and I/O error handler. 489 58 */ ··· 691 1122 struct usb_device *dev = interface_to_usbdev (intf); 692 1123 struct hid_descriptor *hdesc; 693 1124 struct hid_device *hid; 694 - __u32 quirks = 0; 1125 + u32 quirks = 0; 695 1126 unsigned rsize = 0; 696 1127 char *rdesc; 697 1128 int n, len, insize = 0; 698 1129 struct usbhid_device *usbhid; 699 1130 700 - /* Ignore all Wacom devices */ 701 - if (le16_to_cpu(dev->descriptor.idVendor) == USB_VENDOR_ID_WACOM) 702 - return NULL; 703 - /* ignore all Code Mercenaries IOWarrior devices */ 704 - if (le16_to_cpu(dev->descriptor.idVendor) == USB_VENDOR_ID_CODEMERCS) 705 - if (le16_to_cpu(dev->descriptor.idProduct) >= USB_DEVICE_ID_CODEMERCS_IOW_FIRST && 706 - le16_to_cpu(dev->descriptor.idProduct) <= USB_DEVICE_ID_CODEMERCS_IOW_LAST) 707 - return NULL; 708 - 709 - for (n = 0; hid_blacklist[n].idVendor; n++) 710 - if ((hid_blacklist[n].idVendor == le16_to_cpu(dev->descriptor.idVendor)) && 711 - (hid_blacklist[n].idProduct == le16_to_cpu(dev->descriptor.idProduct))) 712 - quirks = hid_blacklist[n].quirks; 1131 + quirks = usbhid_lookup_quirk(le16_to_cpu(dev->descriptor.idVendor), 1132 + le16_to_cpu(dev->descriptor.idProduct)); 713 1133 714 1134 /* Many keyboards and mice don't like to be polled for reports, 715 1135 * so we will always set the HID_QUIRK_NOGET flag for them. */
+483
drivers/hid/usbhid/hid-quirks.c
··· 1 + /* 2 + * USB HID quirks support for Linux 3 + * 4 + * Copyright (c) 1999 Andreas Gal 5 + * Copyright (c) 2000-2005 Vojtech Pavlik <vojtech@suse.cz> 6 + * Copyright (c) 2005 Michael Haboustak <mike-@cinci.rr.com> for Concept2, Inc 7 + * Copyright (c) 2006-2007 Jiri Kosina 8 + * Copyright (c) 2007 Paul Walmsley 9 + */ 10 + 11 + /* 12 + * This program is free software; you can redistribute it and/or modify it 13 + * under the terms of the GNU General Public License as published by the Free 14 + * Software Foundation; either version 2 of the License, or (at your option) 15 + * any later version. 16 + */ 17 + 18 + #include <linux/hid.h> 19 + 20 + #define USB_VENDOR_ID_A4TECH 0x09da 21 + #define USB_DEVICE_ID_A4TECH_WCP32PU 0x0006 22 + 23 + #define USB_VENDOR_ID_AASHIMA 0x06d6 24 + #define USB_DEVICE_ID_AASHIMA_GAMEPAD 0x0025 25 + #define USB_DEVICE_ID_AASHIMA_PREDATOR 0x0026 26 + 27 + #define USB_VENDOR_ID_ACECAD 0x0460 28 + #define USB_DEVICE_ID_ACECAD_FLAIR 0x0004 29 + #define USB_DEVICE_ID_ACECAD_302 0x0008 30 + 31 + #define USB_VENDOR_ID_AIPTEK 0x08ca 32 + #define USB_DEVICE_ID_AIPTEK_01 0x0001 33 + #define USB_DEVICE_ID_AIPTEK_10 0x0010 34 + #define USB_DEVICE_ID_AIPTEK_20 0x0020 35 + #define USB_DEVICE_ID_AIPTEK_21 0x0021 36 + #define USB_DEVICE_ID_AIPTEK_22 0x0022 37 + #define USB_DEVICE_ID_AIPTEK_23 0x0023 38 + #define USB_DEVICE_ID_AIPTEK_24 0x0024 39 + 40 + #define USB_VENDOR_ID_AIRCABLE 0x16CA 41 + #define USB_DEVICE_ID_AIRCABLE1 0x1502 42 + 43 + #define USB_VENDOR_ID_ALCOR 0x058f 44 + #define USB_DEVICE_ID_ALCOR_USBRS232 0x9720 45 + 46 + #define USB_VENDOR_ID_ALPS 0x0433 47 + #define USB_DEVICE_ID_IBM_GAMEPAD 0x1101 48 + 49 + #define USB_VENDOR_ID_APPLE 0x05ac 50 + #define USB_DEVICE_ID_APPLE_MIGHTYMOUSE 0x0304 51 + #define USB_DEVICE_ID_APPLE_FOUNTAIN_ANSI 0x020e 52 + #define USB_DEVICE_ID_APPLE_FOUNTAIN_ISO 0x020f 53 + #define USB_DEVICE_ID_APPLE_GEYSER_ANSI 0x0214 54 + #define USB_DEVICE_ID_APPLE_GEYSER_ISO 0x0215 55 + #define USB_DEVICE_ID_APPLE_GEYSER_JIS 0x0216 56 + #define USB_DEVICE_ID_APPLE_GEYSER3_ANSI 0x0217 57 + #define USB_DEVICE_ID_APPLE_GEYSER3_ISO 0x0218 58 + #define USB_DEVICE_ID_APPLE_GEYSER3_JIS 0x0219 59 + #define USB_DEVICE_ID_APPLE_GEYSER4_ANSI 0x021a 60 + #define USB_DEVICE_ID_APPLE_GEYSER4_ISO 0x021b 61 + #define USB_DEVICE_ID_APPLE_GEYSER4_JIS 0x021c 62 + #define USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY 0x030a 63 + #define USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY 0x030b 64 + #define USB_DEVICE_ID_APPLE_IR 0x8240 65 + 66 + #define USB_VENDOR_ID_ATEN 0x0557 67 + #define USB_DEVICE_ID_ATEN_UC100KM 0x2004 68 + #define USB_DEVICE_ID_ATEN_CS124U 0x2202 69 + #define USB_DEVICE_ID_ATEN_2PORTKVM 0x2204 70 + #define USB_DEVICE_ID_ATEN_4PORTKVM 0x2205 71 + #define USB_DEVICE_ID_ATEN_4PORTKVMC 0x2208 72 + 73 + #define USB_VENDOR_ID_BELKIN 0x050d 74 + #define USB_DEVICE_ID_FLIP_KVM 0x3201 75 + 76 + #define USB_VENDOR_ID_BERKSHIRE 0x0c98 77 + #define USB_DEVICE_ID_BERKSHIRE_PCWD 0x1140 78 + 79 + #define USB_VENDOR_ID_CHERRY 0x046a 80 + #define USB_DEVICE_ID_CHERRY_CYMOTION 0x0023 81 + 82 + #define USB_VENDOR_ID_CHIC 0x05fe 83 + #define USB_DEVICE_ID_CHIC_GAMEPAD 0x0014 84 + 85 + #define USB_VENDOR_ID_CIDC 0x1677 86 + 87 + #define USB_VENDOR_ID_CODEMERCS 0x07c0 88 + #define USB_DEVICE_ID_CODEMERCS_IOW_FIRST 0x1500 89 + #define USB_DEVICE_ID_CODEMERCS_IOW_LAST 0x15ff 90 + 91 + #define USB_VENDOR_ID_CYPRESS 0x04b4 92 + #define USB_DEVICE_ID_CYPRESS_MOUSE 0x0001 93 + #define USB_DEVICE_ID_CYPRESS_HIDCOM 0x5500 94 + #define USB_DEVICE_ID_CYPRESS_ULTRAMOUSE 0x7417 95 + 96 + #define USB_VENDOR_ID_DELL 0x413c 97 + #define USB_DEVICE_ID_DELL_W7658 0x2005 98 + 99 + #define USB_VENDOR_ID_DELORME 0x1163 100 + #define USB_DEVICE_ID_DELORME_EARTHMATE 0x0100 101 + #define USB_DEVICE_ID_DELORME_EM_LT20 0x0200 102 + 103 + #define USB_VENDOR_ID_ESSENTIAL_REALITY 0x0d7f 104 + #define USB_DEVICE_ID_ESSENTIAL_REALITY_P5 0x0100 105 + 106 + #define USB_VENDOR_ID_GLAB 0x06c2 107 + #define USB_DEVICE_ID_4_PHIDGETSERVO_30 0x0038 108 + #define USB_DEVICE_ID_1_PHIDGETSERVO_30 0x0039 109 + #define USB_DEVICE_ID_0_0_4_IF_KIT 0x0040 110 + #define USB_DEVICE_ID_0_16_16_IF_KIT 0x0044 111 + #define USB_DEVICE_ID_8_8_8_IF_KIT 0x0045 112 + #define USB_DEVICE_ID_0_8_7_IF_KIT 0x0051 113 + #define USB_DEVICE_ID_0_8_8_IF_KIT 0x0053 114 + #define USB_DEVICE_ID_PHIDGET_MOTORCONTROL 0x0058 115 + 116 + #define USB_VENDOR_ID_GRIFFIN 0x077d 117 + #define USB_DEVICE_ID_POWERMATE 0x0410 118 + #define USB_DEVICE_ID_SOUNDKNOB 0x04AA 119 + 120 + #define USB_VENDOR_ID_GTCO 0x078c 121 + #define USB_DEVICE_ID_GTCO_90 0x0090 122 + #define USB_DEVICE_ID_GTCO_100 0x0100 123 + #define USB_DEVICE_ID_GTCO_101 0x0101 124 + #define USB_DEVICE_ID_GTCO_103 0x0103 125 + #define USB_DEVICE_ID_GTCO_104 0x0104 126 + #define USB_DEVICE_ID_GTCO_105 0x0105 127 + #define USB_DEVICE_ID_GTCO_106 0x0106 128 + #define USB_DEVICE_ID_GTCO_107 0x0107 129 + #define USB_DEVICE_ID_GTCO_108 0x0108 130 + #define USB_DEVICE_ID_GTCO_200 0x0200 131 + #define USB_DEVICE_ID_GTCO_201 0x0201 132 + #define USB_DEVICE_ID_GTCO_202 0x0202 133 + #define USB_DEVICE_ID_GTCO_203 0x0203 134 + #define USB_DEVICE_ID_GTCO_204 0x0204 135 + #define USB_DEVICE_ID_GTCO_205 0x0205 136 + #define USB_DEVICE_ID_GTCO_206 0x0206 137 + #define USB_DEVICE_ID_GTCO_207 0x0207 138 + #define USB_DEVICE_ID_GTCO_300 0x0300 139 + #define USB_DEVICE_ID_GTCO_301 0x0301 140 + #define USB_DEVICE_ID_GTCO_302 0x0302 141 + #define USB_DEVICE_ID_GTCO_303 0x0303 142 + #define USB_DEVICE_ID_GTCO_304 0x0304 143 + #define USB_DEVICE_ID_GTCO_305 0x0305 144 + #define USB_DEVICE_ID_GTCO_306 0x0306 145 + #define USB_DEVICE_ID_GTCO_307 0x0307 146 + #define USB_DEVICE_ID_GTCO_308 0x0308 147 + #define USB_DEVICE_ID_GTCO_309 0x0309 148 + #define USB_DEVICE_ID_GTCO_400 0x0400 149 + #define USB_DEVICE_ID_GTCO_401 0x0401 150 + #define USB_DEVICE_ID_GTCO_402 0x0402 151 + #define USB_DEVICE_ID_GTCO_403 0x0403 152 + #define USB_DEVICE_ID_GTCO_404 0x0404 153 + #define USB_DEVICE_ID_GTCO_405 0x0405 154 + #define USB_DEVICE_ID_GTCO_500 0x0500 155 + #define USB_DEVICE_ID_GTCO_501 0x0501 156 + #define USB_DEVICE_ID_GTCO_502 0x0502 157 + #define USB_DEVICE_ID_GTCO_503 0x0503 158 + #define USB_DEVICE_ID_GTCO_504 0x0504 159 + #define USB_DEVICE_ID_GTCO_1000 0x1000 160 + #define USB_DEVICE_ID_GTCO_1001 0x1001 161 + #define USB_DEVICE_ID_GTCO_1002 0x1002 162 + #define USB_DEVICE_ID_GTCO_1003 0x1003 163 + #define USB_DEVICE_ID_GTCO_1004 0x1004 164 + #define USB_DEVICE_ID_GTCO_1005 0x1005 165 + #define USB_DEVICE_ID_GTCO_1006 0x1006 166 + 167 + #define USB_VENDOR_ID_HAPP 0x078b 168 + #define USB_DEVICE_ID_UGCI_DRIVING 0x0010 169 + #define USB_DEVICE_ID_UGCI_FLYING 0x0020 170 + #define USB_DEVICE_ID_UGCI_FIGHTING 0x0030 171 + 172 + #define USB_VENDOR_ID_IMATION 0x0718 173 + #define USB_DEVICE_ID_DISC_STAKKA 0xd000 174 + 175 + #define USB_VENDOR_ID_KBGEAR 0x084e 176 + #define USB_DEVICE_ID_KBGEAR_JAMSTUDIO 0x1001 177 + 178 + #define USB_VENDOR_ID_LD 0x0f11 179 + #define USB_DEVICE_ID_LD_CASSY 0x1000 180 + #define USB_DEVICE_ID_LD_POCKETCASSY 0x1010 181 + #define USB_DEVICE_ID_LD_MOBILECASSY 0x1020 182 + #define USB_DEVICE_ID_LD_JWM 0x1080 183 + #define USB_DEVICE_ID_LD_DMMP 0x1081 184 + #define USB_DEVICE_ID_LD_UMIP 0x1090 185 + #define USB_DEVICE_ID_LD_XRAY1 0x1100 186 + #define USB_DEVICE_ID_LD_XRAY2 0x1101 187 + #define USB_DEVICE_ID_LD_VIDEOCOM 0x1200 188 + #define USB_DEVICE_ID_LD_COM3LAB 0x2000 189 + #define USB_DEVICE_ID_LD_TELEPORT 0x2010 190 + #define USB_DEVICE_ID_LD_NETWORKANALYSER 0x2020 191 + #define USB_DEVICE_ID_LD_POWERCONTROL 0x2030 192 + #define USB_DEVICE_ID_LD_MACHINETEST 0x2040 193 + 194 + #define USB_VENDOR_ID_LOGITECH 0x046d 195 + #define USB_DEVICE_ID_LOGITECH_RECEIVER 0xc101 196 + #define USB_DEVICE_ID_S510_RECEIVER 0xc50c 197 + #define USB_DEVICE_ID_S510_RECEIVER_2 0xc517 198 + #define USB_DEVICE_ID_MX3000_RECEIVER 0xc513 199 + #define USB_DEVICE_ID_DINOVO_EDGE 0xc714 200 + 201 + #define USB_VENDOR_ID_MCC 0x09db 202 + #define USB_DEVICE_ID_MCC_PMD1024LS 0x0076 203 + #define USB_DEVICE_ID_MCC_PMD1208LS 0x007a 204 + 205 + #define USB_VENDOR_ID_MGE 0x0463 206 + #define USB_DEVICE_ID_MGE_UPS 0xffff 207 + #define USB_DEVICE_ID_MGE_UPS1 0x0001 208 + 209 + #define USB_VENDOR_ID_NEC 0x073e 210 + #define USB_DEVICE_ID_NEC_USB_GAME_PAD 0x0301 211 + 212 + #define USB_VENDOR_ID_ONTRAK 0x0a07 213 + #define USB_DEVICE_ID_ONTRAK_ADU100 0x0064 214 + 215 + #define USB_VENDOR_ID_PANJIT 0x134c 216 + 217 + #define USB_VENDOR_ID_PANTHERLORD 0x0810 218 + #define USB_DEVICE_ID_PANTHERLORD_TWIN_USB_JOYSTICK 0x0001 219 + 220 + #define USB_VENDOR_ID_PLAYDOTCOM 0x0b43 221 + #define USB_DEVICE_ID_PLAYDOTCOM_EMS_USBII 0x0003 222 + 223 + #define USB_VENDOR_ID_SAITEK 0x06a3 224 + #define USB_DEVICE_ID_SAITEK_RUMBLEPAD 0xff17 225 + 226 + #define USB_VENDOR_ID_SONY 0x054c 227 + #define USB_DEVICE_ID_SONY_PS3_CONTROLLER 0x0268 228 + 229 + #define USB_VENDOR_ID_SUN 0x0430 230 + #define USB_DEVICE_ID_RARITAN_KVM_DONGLE 0xcdab 231 + 232 + #define USB_VENDOR_ID_TOPMAX 0x0663 233 + #define USB_DEVICE_ID_TOPMAX_COBRAPAD 0x0103 234 + 235 + #define USB_VENDOR_ID_TURBOX 0x062a 236 + #define USB_DEVICE_ID_TURBOX_KEYBOARD 0x0201 237 + 238 + #define USB_VENDOR_ID_VERNIER 0x08f7 239 + #define USB_DEVICE_ID_VERNIER_LABPRO 0x0001 240 + #define USB_DEVICE_ID_VERNIER_GOTEMP 0x0002 241 + #define USB_DEVICE_ID_VERNIER_SKIP 0x0003 242 + #define USB_DEVICE_ID_VERNIER_CYCLOPS 0x0004 243 + 244 + #define USB_VENDOR_ID_WACOM 0x056a 245 + 246 + #define USB_VENDOR_ID_WISEGROUP 0x0925 247 + #define USB_DEVICE_ID_1_PHIDGETSERVO_20 0x8101 248 + #define USB_DEVICE_ID_4_PHIDGETSERVO_20 0x8104 249 + #define USB_DEVICE_ID_8_8_4_IF_KIT 0x8201 250 + #define USB_DEVICE_ID_QUAD_USB_JOYPAD 0x8800 251 + #define USB_DEVICE_ID_DUAL_USB_JOYPAD 0x8866 252 + 253 + #define USB_VENDOR_ID_WISEGROUP_LTD 0x6677 254 + #define USB_DEVICE_ID_SMARTJOY_DUAL_PLUS 0x8802 255 + 256 + #define USB_VENDOR_ID_YEALINK 0x6993 257 + #define USB_DEVICE_ID_YEALINK_P1K_P4K_B2K 0xb001 258 + 259 + /* 260 + * Alphabetically sorted blacklist by quirk type. 261 + */ 262 + 263 + static const struct hid_blacklist { 264 + __u16 idVendor; 265 + __u16 idProduct; 266 + __u32 quirks; 267 + } hid_blacklist[] = { 268 + 269 + { USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_WCP32PU, HID_QUIRK_2WHEEL_MOUSE_HACK_7 }, 270 + { USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_MOUSE, HID_QUIRK_2WHEEL_MOUSE_HACK_5 }, 271 + 272 + { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_RECEIVER, HID_QUIRK_BAD_RELATIVE_KEYS }, 273 + 274 + { USB_VENDOR_ID_AASHIMA, USB_DEVICE_ID_AASHIMA_GAMEPAD, HID_QUIRK_BADPAD }, 275 + { USB_VENDOR_ID_AASHIMA, USB_DEVICE_ID_AASHIMA_PREDATOR, HID_QUIRK_BADPAD }, 276 + { USB_VENDOR_ID_ALPS, USB_DEVICE_ID_IBM_GAMEPAD, HID_QUIRK_BADPAD }, 277 + { USB_VENDOR_ID_CHIC, USB_DEVICE_ID_CHIC_GAMEPAD, HID_QUIRK_BADPAD }, 278 + { USB_VENDOR_ID_HAPP, USB_DEVICE_ID_UGCI_DRIVING, HID_QUIRK_BADPAD | HID_QUIRK_MULTI_INPUT }, 279 + { USB_VENDOR_ID_HAPP, USB_DEVICE_ID_UGCI_FLYING, HID_QUIRK_BADPAD | HID_QUIRK_MULTI_INPUT }, 280 + { USB_VENDOR_ID_HAPP, USB_DEVICE_ID_UGCI_FIGHTING, HID_QUIRK_BADPAD | HID_QUIRK_MULTI_INPUT }, 281 + { USB_VENDOR_ID_NEC, USB_DEVICE_ID_NEC_USB_GAME_PAD, HID_QUIRK_BADPAD }, 282 + { USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_RUMBLEPAD, HID_QUIRK_BADPAD }, 283 + { USB_VENDOR_ID_TOPMAX, USB_DEVICE_ID_TOPMAX_COBRAPAD, HID_QUIRK_BADPAD }, 284 + 285 + { USB_VENDOR_ID_CHERRY, USB_DEVICE_ID_CHERRY_CYMOTION, HID_QUIRK_CYMOTION }, 286 + 287 + { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_DINOVO_EDGE, HID_QUIRK_DUPLICATE_USAGES }, 288 + 289 + { USB_VENDOR_ID_BELKIN, USB_DEVICE_ID_FLIP_KVM, HID_QUIRK_HIDDEV }, 290 + 291 + { USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_01, HID_QUIRK_IGNORE }, 292 + { USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_10, HID_QUIRK_IGNORE }, 293 + { USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_20, HID_QUIRK_IGNORE }, 294 + { USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_21, HID_QUIRK_IGNORE }, 295 + { USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_22, HID_QUIRK_IGNORE }, 296 + { USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_23, HID_QUIRK_IGNORE }, 297 + { USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_24, HID_QUIRK_IGNORE }, 298 + { USB_VENDOR_ID_AIRCABLE, USB_DEVICE_ID_AIRCABLE1, HID_QUIRK_IGNORE }, 299 + { USB_VENDOR_ID_ALCOR, USB_DEVICE_ID_ALCOR_USBRS232, HID_QUIRK_IGNORE }, 300 + { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IR, HID_QUIRK_IGNORE }, 301 + { USB_VENDOR_ID_BERKSHIRE, USB_DEVICE_ID_BERKSHIRE_PCWD, HID_QUIRK_IGNORE }, 302 + { USB_VENDOR_ID_CIDC, 0x0103, HID_QUIRK_IGNORE }, 303 + { USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_HIDCOM, HID_QUIRK_IGNORE }, 304 + { USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_ULTRAMOUSE, HID_QUIRK_IGNORE }, 305 + { USB_VENDOR_ID_DELORME, USB_DEVICE_ID_DELORME_EARTHMATE, HID_QUIRK_IGNORE }, 306 + { USB_VENDOR_ID_DELORME, USB_DEVICE_ID_DELORME_EM_LT20, HID_QUIRK_IGNORE }, 307 + { USB_VENDOR_ID_ESSENTIAL_REALITY, USB_DEVICE_ID_ESSENTIAL_REALITY_P5, HID_QUIRK_IGNORE }, 308 + { USB_VENDOR_ID_GLAB, USB_DEVICE_ID_4_PHIDGETSERVO_30, HID_QUIRK_IGNORE }, 309 + { USB_VENDOR_ID_GLAB, USB_DEVICE_ID_1_PHIDGETSERVO_30, HID_QUIRK_IGNORE }, 310 + { USB_VENDOR_ID_GLAB, USB_DEVICE_ID_0_0_4_IF_KIT, HID_QUIRK_IGNORE }, 311 + { USB_VENDOR_ID_GLAB, USB_DEVICE_ID_0_16_16_IF_KIT, HID_QUIRK_IGNORE }, 312 + { USB_VENDOR_ID_GLAB, USB_DEVICE_ID_8_8_8_IF_KIT, HID_QUIRK_IGNORE }, 313 + { USB_VENDOR_ID_GLAB, USB_DEVICE_ID_0_8_7_IF_KIT, HID_QUIRK_IGNORE }, 314 + { USB_VENDOR_ID_GLAB, USB_DEVICE_ID_0_8_8_IF_KIT, HID_QUIRK_IGNORE }, 315 + { USB_VENDOR_ID_GLAB, USB_DEVICE_ID_PHIDGET_MOTORCONTROL, HID_QUIRK_IGNORE }, 316 + { USB_VENDOR_ID_GRIFFIN, USB_DEVICE_ID_POWERMATE, HID_QUIRK_IGNORE }, 317 + { USB_VENDOR_ID_GRIFFIN, USB_DEVICE_ID_SOUNDKNOB, HID_QUIRK_IGNORE }, 318 + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_90, HID_QUIRK_IGNORE }, 319 + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_100, HID_QUIRK_IGNORE }, 320 + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_101, HID_QUIRK_IGNORE }, 321 + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_103, HID_QUIRK_IGNORE }, 322 + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_104, HID_QUIRK_IGNORE }, 323 + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_105, HID_QUIRK_IGNORE }, 324 + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_106, HID_QUIRK_IGNORE }, 325 + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_107, HID_QUIRK_IGNORE }, 326 + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_108, HID_QUIRK_IGNORE }, 327 + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_200, HID_QUIRK_IGNORE }, 328 + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_201, HID_QUIRK_IGNORE }, 329 + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_202, HID_QUIRK_IGNORE }, 330 + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_203, HID_QUIRK_IGNORE }, 331 + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_204, HID_QUIRK_IGNORE }, 332 + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_205, HID_QUIRK_IGNORE }, 333 + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_206, HID_QUIRK_IGNORE }, 334 + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_207, HID_QUIRK_IGNORE }, 335 + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_300, HID_QUIRK_IGNORE }, 336 + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_301, HID_QUIRK_IGNORE }, 337 + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_302, HID_QUIRK_IGNORE }, 338 + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_303, HID_QUIRK_IGNORE }, 339 + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_304, HID_QUIRK_IGNORE }, 340 + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_305, HID_QUIRK_IGNORE }, 341 + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_306, HID_QUIRK_IGNORE }, 342 + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_307, HID_QUIRK_IGNORE }, 343 + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_308, HID_QUIRK_IGNORE }, 344 + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_309, HID_QUIRK_IGNORE }, 345 + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_400, HID_QUIRK_IGNORE }, 346 + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_401, HID_QUIRK_IGNORE }, 347 + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_402, HID_QUIRK_IGNORE }, 348 + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_403, HID_QUIRK_IGNORE }, 349 + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_404, HID_QUIRK_IGNORE }, 350 + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_405, HID_QUIRK_IGNORE }, 351 + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_500, HID_QUIRK_IGNORE }, 352 + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_501, HID_QUIRK_IGNORE }, 353 + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_502, HID_QUIRK_IGNORE }, 354 + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_503, HID_QUIRK_IGNORE }, 355 + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_504, HID_QUIRK_IGNORE }, 356 + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1000, HID_QUIRK_IGNORE }, 357 + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1001, HID_QUIRK_IGNORE }, 358 + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1002, HID_QUIRK_IGNORE }, 359 + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1003, HID_QUIRK_IGNORE }, 360 + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1004, HID_QUIRK_IGNORE }, 361 + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1005, HID_QUIRK_IGNORE }, 362 + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1006, HID_QUIRK_IGNORE }, 363 + { USB_VENDOR_ID_IMATION, USB_DEVICE_ID_DISC_STAKKA, HID_QUIRK_IGNORE }, 364 + { USB_VENDOR_ID_KBGEAR, USB_DEVICE_ID_KBGEAR_JAMSTUDIO, HID_QUIRK_IGNORE }, 365 + { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_CASSY, HID_QUIRK_IGNORE }, 366 + { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_POCKETCASSY, HID_QUIRK_IGNORE }, 367 + { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MOBILECASSY, HID_QUIRK_IGNORE }, 368 + { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_JWM, HID_QUIRK_IGNORE }, 369 + { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_DMMP, HID_QUIRK_IGNORE }, 370 + { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_UMIP, HID_QUIRK_IGNORE }, 371 + { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_XRAY1, HID_QUIRK_IGNORE }, 372 + { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_XRAY2, HID_QUIRK_IGNORE }, 373 + { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_VIDEOCOM, HID_QUIRK_IGNORE }, 374 + { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_COM3LAB, HID_QUIRK_IGNORE }, 375 + { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_TELEPORT, HID_QUIRK_IGNORE }, 376 + { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_NETWORKANALYSER, HID_QUIRK_IGNORE }, 377 + { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_POWERCONTROL, HID_QUIRK_IGNORE }, 378 + { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MACHINETEST, HID_QUIRK_IGNORE }, 379 + { USB_VENDOR_ID_MCC, USB_DEVICE_ID_MCC_PMD1024LS, HID_QUIRK_IGNORE }, 380 + { USB_VENDOR_ID_MCC, USB_DEVICE_ID_MCC_PMD1208LS, HID_QUIRK_IGNORE }, 381 + { USB_VENDOR_ID_MGE, USB_DEVICE_ID_MGE_UPS, HID_QUIRK_IGNORE }, 382 + { USB_VENDOR_ID_MGE, USB_DEVICE_ID_MGE_UPS1, HID_QUIRK_IGNORE }, 383 + { USB_VENDOR_ID_ONTRAK, USB_DEVICE_ID_ONTRAK_ADU100, HID_QUIRK_IGNORE }, 384 + { USB_VENDOR_ID_ONTRAK, USB_DEVICE_ID_ONTRAK_ADU100 + 20, HID_QUIRK_IGNORE }, 385 + { USB_VENDOR_ID_ONTRAK, USB_DEVICE_ID_ONTRAK_ADU100 + 30, HID_QUIRK_IGNORE }, 386 + { USB_VENDOR_ID_ONTRAK, USB_DEVICE_ID_ONTRAK_ADU100 + 100, HID_QUIRK_IGNORE }, 387 + { USB_VENDOR_ID_ONTRAK, USB_DEVICE_ID_ONTRAK_ADU100 + 108, HID_QUIRK_IGNORE }, 388 + { USB_VENDOR_ID_ONTRAK, USB_DEVICE_ID_ONTRAK_ADU100 + 118, HID_QUIRK_IGNORE }, 389 + { USB_VENDOR_ID_ONTRAK, USB_DEVICE_ID_ONTRAK_ADU100 + 200, HID_QUIRK_IGNORE }, 390 + { USB_VENDOR_ID_ONTRAK, USB_DEVICE_ID_ONTRAK_ADU100 + 300, HID_QUIRK_IGNORE }, 391 + { USB_VENDOR_ID_ONTRAK, USB_DEVICE_ID_ONTRAK_ADU100 + 400, HID_QUIRK_IGNORE }, 392 + { USB_VENDOR_ID_ONTRAK, USB_DEVICE_ID_ONTRAK_ADU100 + 500, HID_QUIRK_IGNORE }, 393 + { USB_VENDOR_ID_PANJIT, 0x0001, HID_QUIRK_IGNORE }, 394 + { USB_VENDOR_ID_PANJIT, 0x0002, HID_QUIRK_IGNORE }, 395 + { USB_VENDOR_ID_PANJIT, 0x0003, HID_QUIRK_IGNORE }, 396 + { USB_VENDOR_ID_PANJIT, 0x0004, HID_QUIRK_IGNORE }, 397 + { USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_LABPRO, HID_QUIRK_IGNORE }, 398 + { USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_GOTEMP, HID_QUIRK_IGNORE }, 399 + { USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_SKIP, HID_QUIRK_IGNORE }, 400 + { USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_CYCLOPS, HID_QUIRK_IGNORE }, 401 + { USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_4_PHIDGETSERVO_20, HID_QUIRK_IGNORE }, 402 + { USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_1_PHIDGETSERVO_20, HID_QUIRK_IGNORE }, 403 + { USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_8_8_4_IF_KIT, HID_QUIRK_IGNORE }, 404 + { USB_VENDOR_ID_YEALINK, USB_DEVICE_ID_YEALINK_P1K_P4K_B2K, HID_QUIRK_IGNORE }, 405 + 406 + { USB_VENDOR_ID_ACECAD, USB_DEVICE_ID_ACECAD_FLAIR, HID_QUIRK_IGNORE }, 407 + { USB_VENDOR_ID_ACECAD, USB_DEVICE_ID_ACECAD_302, HID_QUIRK_IGNORE }, 408 + 409 + { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_MX3000_RECEIVER, HID_QUIRK_LOGITECH_DESCRIPTOR }, 410 + { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_S510_RECEIVER, HID_QUIRK_LOGITECH_DESCRIPTOR }, 411 + { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_S510_RECEIVER_2, HID_QUIRK_LOGITECH_DESCRIPTOR }, 412 + 413 + { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MIGHTYMOUSE, HID_QUIRK_MIGHTYMOUSE | HID_QUIRK_INVERT_HWHEEL }, 414 + 415 + { USB_VENDOR_ID_PANTHERLORD, USB_DEVICE_ID_PANTHERLORD_TWIN_USB_JOYSTICK, HID_QUIRK_MULTI_INPUT | HID_QUIRK_SKIP_OUTPUT_REPORTS }, 416 + { USB_VENDOR_ID_PLAYDOTCOM, USB_DEVICE_ID_PLAYDOTCOM_EMS_USBII, HID_QUIRK_MULTI_INPUT }, 417 + 418 + { USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_PS3_CONTROLLER, HID_QUIRK_SONY_PS3_CONTROLLER }, 419 + 420 + { USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_UC100KM, HID_QUIRK_NOGET }, 421 + { USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_CS124U, HID_QUIRK_NOGET }, 422 + { USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_2PORTKVM, HID_QUIRK_NOGET }, 423 + { USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_4PORTKVM, HID_QUIRK_NOGET }, 424 + { USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_4PORTKVMC, HID_QUIRK_NOGET }, 425 + { USB_VENDOR_ID_SUN, USB_DEVICE_ID_RARITAN_KVM_DONGLE, HID_QUIRK_NOGET }, 426 + { USB_VENDOR_ID_TURBOX, USB_DEVICE_ID_TURBOX_KEYBOARD, HID_QUIRK_NOGET }, 427 + { USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_DUAL_USB_JOYPAD, HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT }, 428 + { USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_QUAD_USB_JOYPAD, HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT }, 429 + 430 + { USB_VENDOR_ID_WISEGROUP_LTD, USB_DEVICE_ID_SMARTJOY_DUAL_PLUS, HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT }, 431 + 432 + { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_ANSI, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, 433 + { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_ISO, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, 434 + { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_ANSI, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, 435 + { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_ISO, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_POWERBOOK_ISO_KEYBOARD}, 436 + { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_JIS, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, 437 + { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_ANSI, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, 438 + { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_ISO, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_POWERBOOK_ISO_KEYBOARD}, 439 + { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_JIS, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, 440 + { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ANSI, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, 441 + { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ISO, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_POWERBOOK_ISO_KEYBOARD}, 442 + { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_JIS, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, 443 + { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, 444 + { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, 445 + 446 + { USB_VENDOR_ID_DELL, USB_DEVICE_ID_DELL_W7658, HID_QUIRK_RESET_LEDS }, 447 + 448 + { 0, 0 } 449 + }; 450 + 451 + /** 452 + * usbhid_lookup_quirk: return any quirks associated with a USB HID device 453 + * @idVendor: the 16-bit USB vendor ID, in native byteorder 454 + * @idProduct: the 16-bit USB product ID, in native byteorder 455 + * 456 + * Description: 457 + * Given a USB vendor ID and product ID, return any quirks associated 458 + * with that device. 459 + * 460 + * Returns: a u32 quirks value. 461 + */ 462 + u32 usbhid_lookup_quirk(const u16 idVendor, const u16 idProduct) 463 + { 464 + u32 quirks = 0; 465 + int n = 0; 466 + 467 + /* Ignore all Wacom devices */ 468 + if (idVendor == USB_VENDOR_ID_WACOM) 469 + return HID_QUIRK_IGNORE; 470 + 471 + /* ignore all Code Mercenaries IOWarrior devices */ 472 + if (idVendor == USB_VENDOR_ID_CODEMERCS) 473 + if (idProduct >= USB_DEVICE_ID_CODEMERCS_IOW_FIRST && 474 + idProduct <= USB_DEVICE_ID_CODEMERCS_IOW_LAST) 475 + return HID_QUIRK_IGNORE; 476 + 477 + for (; hid_blacklist[n].idVendor; n++) 478 + if (hid_blacklist[n].idVendor == idVendor && 479 + hid_blacklist[n].idProduct == idProduct) 480 + quirks = hid_blacklist[n].quirks; 481 + 482 + return quirks; 483 + }
+2
include/linux/hid.h
··· 495 495 void hid_free_device(struct hid_device *device); 496 496 struct hid_device *hid_parse_report(__u8 *start, unsigned size); 497 497 498 + u32 usbhid_lookup_quirk(const u16 idVendor, const u16 idProduct); 499 + 498 500 #ifdef CONFIG_HID_FF 499 501 int hid_ff_init(struct hid_device *hid); 500 502