2007-04-19 13:27:04 +02:00
/*
* USB HID quirks support for Linux
*
* Copyright ( c ) 1999 Andreas Gal
* Copyright ( c ) 2000 - 2005 Vojtech Pavlik < vojtech @ suse . cz >
* Copyright ( c ) 2005 Michael Haboustak < mike - @ cinci . rr . com > for Concept2 , Inc
* Copyright ( c ) 2006 - 2007 Jiri Kosina
* Copyright ( c ) 2007 Paul Walmsley
*/
/*
* This program is free software ; you can redistribute it and / or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation ; either version 2 of the License , or ( at your option )
* any later version .
*/
# include <linux/hid.h>
# define USB_VENDOR_ID_A4TECH 0x09da
# define USB_DEVICE_ID_A4TECH_WCP32PU 0x0006
# define USB_VENDOR_ID_AASHIMA 0x06d6
# define USB_DEVICE_ID_AASHIMA_GAMEPAD 0x0025
# define USB_DEVICE_ID_AASHIMA_PREDATOR 0x0026
# define USB_VENDOR_ID_ACECAD 0x0460
# define USB_DEVICE_ID_ACECAD_FLAIR 0x0004
# define USB_DEVICE_ID_ACECAD_302 0x0008
# define USB_VENDOR_ID_AIPTEK 0x08ca
# define USB_DEVICE_ID_AIPTEK_01 0x0001
# define USB_DEVICE_ID_AIPTEK_10 0x0010
# define USB_DEVICE_ID_AIPTEK_20 0x0020
# define USB_DEVICE_ID_AIPTEK_21 0x0021
# define USB_DEVICE_ID_AIPTEK_22 0x0022
# define USB_DEVICE_ID_AIPTEK_23 0x0023
# define USB_DEVICE_ID_AIPTEK_24 0x0024
# define USB_VENDOR_ID_AIRCABLE 0x16CA
# define USB_DEVICE_ID_AIRCABLE1 0x1502
# define USB_VENDOR_ID_ALCOR 0x058f
# define USB_DEVICE_ID_ALCOR_USBRS232 0x9720
# define USB_VENDOR_ID_ALPS 0x0433
# define USB_DEVICE_ID_IBM_GAMEPAD 0x1101
# define USB_VENDOR_ID_APPLE 0x05ac
# define USB_DEVICE_ID_APPLE_MIGHTYMOUSE 0x0304
# define USB_DEVICE_ID_APPLE_FOUNTAIN_ANSI 0x020e
# define USB_DEVICE_ID_APPLE_FOUNTAIN_ISO 0x020f
# define USB_DEVICE_ID_APPLE_GEYSER_ANSI 0x0214
# define USB_DEVICE_ID_APPLE_GEYSER_ISO 0x0215
# define USB_DEVICE_ID_APPLE_GEYSER_JIS 0x0216
# define USB_DEVICE_ID_APPLE_GEYSER3_ANSI 0x0217
# define USB_DEVICE_ID_APPLE_GEYSER3_ISO 0x0218
# define USB_DEVICE_ID_APPLE_GEYSER3_JIS 0x0219
# define USB_DEVICE_ID_APPLE_GEYSER4_ANSI 0x021a
# define USB_DEVICE_ID_APPLE_GEYSER4_ISO 0x021b
# define USB_DEVICE_ID_APPLE_GEYSER4_JIS 0x021c
# define USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY 0x030a
# define USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY 0x030b
# define USB_DEVICE_ID_APPLE_IR 0x8240
# define USB_VENDOR_ID_ATEN 0x0557
# define USB_DEVICE_ID_ATEN_UC100KM 0x2004
# define USB_DEVICE_ID_ATEN_CS124U 0x2202
# define USB_DEVICE_ID_ATEN_2PORTKVM 0x2204
# define USB_DEVICE_ID_ATEN_4PORTKVM 0x2205
# define USB_DEVICE_ID_ATEN_4PORTKVMC 0x2208
# define USB_VENDOR_ID_BELKIN 0x050d
# define USB_DEVICE_ID_FLIP_KVM 0x3201
# define USB_VENDOR_ID_BERKSHIRE 0x0c98
# define USB_DEVICE_ID_BERKSHIRE_PCWD 0x1140
# define USB_VENDOR_ID_CHERRY 0x046a
# define USB_DEVICE_ID_CHERRY_CYMOTION 0x0023
# define USB_VENDOR_ID_CHIC 0x05fe
# define USB_DEVICE_ID_CHIC_GAMEPAD 0x0014
# define USB_VENDOR_ID_CIDC 0x1677
# define USB_VENDOR_ID_CODEMERCS 0x07c0
# define USB_DEVICE_ID_CODEMERCS_IOW_FIRST 0x1500
# define USB_DEVICE_ID_CODEMERCS_IOW_LAST 0x15ff
# define USB_VENDOR_ID_CYPRESS 0x04b4
# define USB_DEVICE_ID_CYPRESS_MOUSE 0x0001
# define USB_DEVICE_ID_CYPRESS_HIDCOM 0x5500
# define USB_DEVICE_ID_CYPRESS_ULTRAMOUSE 0x7417
# define USB_VENDOR_ID_DELL 0x413c
# define USB_DEVICE_ID_DELL_W7658 0x2005
# define USB_VENDOR_ID_DELORME 0x1163
# define USB_DEVICE_ID_DELORME_EARTHMATE 0x0100
# define USB_DEVICE_ID_DELORME_EM_LT20 0x0200
# define USB_VENDOR_ID_ESSENTIAL_REALITY 0x0d7f
# define USB_DEVICE_ID_ESSENTIAL_REALITY_P5 0x0100
# define USB_VENDOR_ID_GLAB 0x06c2
# define USB_DEVICE_ID_4_PHIDGETSERVO_30 0x0038
# define USB_DEVICE_ID_1_PHIDGETSERVO_30 0x0039
# define USB_DEVICE_ID_0_0_4_IF_KIT 0x0040
# define USB_DEVICE_ID_0_16_16_IF_KIT 0x0044
# define USB_DEVICE_ID_8_8_8_IF_KIT 0x0045
# define USB_DEVICE_ID_0_8_7_IF_KIT 0x0051
# define USB_DEVICE_ID_0_8_8_IF_KIT 0x0053
# define USB_DEVICE_ID_PHIDGET_MOTORCONTROL 0x0058
# define USB_VENDOR_ID_GRIFFIN 0x077d
# define USB_DEVICE_ID_POWERMATE 0x0410
# define USB_DEVICE_ID_SOUNDKNOB 0x04AA
# define USB_VENDOR_ID_GTCO 0x078c
# define USB_DEVICE_ID_GTCO_90 0x0090
# define USB_DEVICE_ID_GTCO_100 0x0100
# define USB_DEVICE_ID_GTCO_101 0x0101
# define USB_DEVICE_ID_GTCO_103 0x0103
# define USB_DEVICE_ID_GTCO_104 0x0104
# define USB_DEVICE_ID_GTCO_105 0x0105
# define USB_DEVICE_ID_GTCO_106 0x0106
# define USB_DEVICE_ID_GTCO_107 0x0107
# define USB_DEVICE_ID_GTCO_108 0x0108
# define USB_DEVICE_ID_GTCO_200 0x0200
# define USB_DEVICE_ID_GTCO_201 0x0201
# define USB_DEVICE_ID_GTCO_202 0x0202
# define USB_DEVICE_ID_GTCO_203 0x0203
# define USB_DEVICE_ID_GTCO_204 0x0204
# define USB_DEVICE_ID_GTCO_205 0x0205
# define USB_DEVICE_ID_GTCO_206 0x0206
# define USB_DEVICE_ID_GTCO_207 0x0207
# define USB_DEVICE_ID_GTCO_300 0x0300
# define USB_DEVICE_ID_GTCO_301 0x0301
# define USB_DEVICE_ID_GTCO_302 0x0302
# define USB_DEVICE_ID_GTCO_303 0x0303
# define USB_DEVICE_ID_GTCO_304 0x0304
# define USB_DEVICE_ID_GTCO_305 0x0305
# define USB_DEVICE_ID_GTCO_306 0x0306
# define USB_DEVICE_ID_GTCO_307 0x0307
# define USB_DEVICE_ID_GTCO_308 0x0308
# define USB_DEVICE_ID_GTCO_309 0x0309
# define USB_DEVICE_ID_GTCO_400 0x0400
# define USB_DEVICE_ID_GTCO_401 0x0401
# define USB_DEVICE_ID_GTCO_402 0x0402
# define USB_DEVICE_ID_GTCO_403 0x0403
# define USB_DEVICE_ID_GTCO_404 0x0404
# define USB_DEVICE_ID_GTCO_405 0x0405
# define USB_DEVICE_ID_GTCO_500 0x0500
# define USB_DEVICE_ID_GTCO_501 0x0501
# define USB_DEVICE_ID_GTCO_502 0x0502
# define USB_DEVICE_ID_GTCO_503 0x0503
# define USB_DEVICE_ID_GTCO_504 0x0504
# define USB_DEVICE_ID_GTCO_1000 0x1000
# define USB_DEVICE_ID_GTCO_1001 0x1001
# define USB_DEVICE_ID_GTCO_1002 0x1002
# define USB_DEVICE_ID_GTCO_1003 0x1003
# define USB_DEVICE_ID_GTCO_1004 0x1004
# define USB_DEVICE_ID_GTCO_1005 0x1005
# define USB_DEVICE_ID_GTCO_1006 0x1006
# define USB_VENDOR_ID_HAPP 0x078b
# define USB_DEVICE_ID_UGCI_DRIVING 0x0010
# define USB_DEVICE_ID_UGCI_FLYING 0x0020
# define USB_DEVICE_ID_UGCI_FIGHTING 0x0030
# define USB_VENDOR_ID_IMATION 0x0718
# define USB_DEVICE_ID_DISC_STAKKA 0xd000
# define USB_VENDOR_ID_KBGEAR 0x084e
# define USB_DEVICE_ID_KBGEAR_JAMSTUDIO 0x1001
# define USB_VENDOR_ID_LD 0x0f11
# define USB_DEVICE_ID_LD_CASSY 0x1000
# define USB_DEVICE_ID_LD_POCKETCASSY 0x1010
# define USB_DEVICE_ID_LD_MOBILECASSY 0x1020
# define USB_DEVICE_ID_LD_JWM 0x1080
# define USB_DEVICE_ID_LD_DMMP 0x1081
# define USB_DEVICE_ID_LD_UMIP 0x1090
# define USB_DEVICE_ID_LD_XRAY1 0x1100
# define USB_DEVICE_ID_LD_XRAY2 0x1101
# define USB_DEVICE_ID_LD_VIDEOCOM 0x1200
# define USB_DEVICE_ID_LD_COM3LAB 0x2000
# define USB_DEVICE_ID_LD_TELEPORT 0x2010
# define USB_DEVICE_ID_LD_NETWORKANALYSER 0x2020
# define USB_DEVICE_ID_LD_POWERCONTROL 0x2030
# define USB_DEVICE_ID_LD_MACHINETEST 0x2040
# define USB_VENDOR_ID_LOGITECH 0x046d
# define USB_DEVICE_ID_LOGITECH_RECEIVER 0xc101
# define USB_DEVICE_ID_S510_RECEIVER 0xc50c
# define USB_DEVICE_ID_S510_RECEIVER_2 0xc517
# define USB_DEVICE_ID_MX3000_RECEIVER 0xc513
# define USB_DEVICE_ID_DINOVO_EDGE 0xc714
# define USB_VENDOR_ID_MCC 0x09db
# define USB_DEVICE_ID_MCC_PMD1024LS 0x0076
# define USB_DEVICE_ID_MCC_PMD1208LS 0x007a
# define USB_VENDOR_ID_MGE 0x0463
# define USB_DEVICE_ID_MGE_UPS 0xffff
# define USB_DEVICE_ID_MGE_UPS1 0x0001
# define USB_VENDOR_ID_NEC 0x073e
# define USB_DEVICE_ID_NEC_USB_GAME_PAD 0x0301
# define USB_VENDOR_ID_ONTRAK 0x0a07
# define USB_DEVICE_ID_ONTRAK_ADU100 0x0064
# define USB_VENDOR_ID_PANJIT 0x134c
# define USB_VENDOR_ID_PANTHERLORD 0x0810
# define USB_DEVICE_ID_PANTHERLORD_TWIN_USB_JOYSTICK 0x0001
# define USB_VENDOR_ID_PLAYDOTCOM 0x0b43
# define USB_DEVICE_ID_PLAYDOTCOM_EMS_USBII 0x0003
# define USB_VENDOR_ID_SAITEK 0x06a3
# define USB_DEVICE_ID_SAITEK_RUMBLEPAD 0xff17
# define USB_VENDOR_ID_SONY 0x054c
# define USB_DEVICE_ID_SONY_PS3_CONTROLLER 0x0268
# define USB_VENDOR_ID_SUN 0x0430
# define USB_DEVICE_ID_RARITAN_KVM_DONGLE 0xcdab
# define USB_VENDOR_ID_TOPMAX 0x0663
# define USB_DEVICE_ID_TOPMAX_COBRAPAD 0x0103
# define USB_VENDOR_ID_TURBOX 0x062a
# define USB_DEVICE_ID_TURBOX_KEYBOARD 0x0201
# define USB_VENDOR_ID_VERNIER 0x08f7
# define USB_DEVICE_ID_VERNIER_LABPRO 0x0001
# define USB_DEVICE_ID_VERNIER_GOTEMP 0x0002
# define USB_DEVICE_ID_VERNIER_SKIP 0x0003
# define USB_DEVICE_ID_VERNIER_CYCLOPS 0x0004
# define USB_VENDOR_ID_WACOM 0x056a
# define USB_VENDOR_ID_WISEGROUP 0x0925
# define USB_DEVICE_ID_1_PHIDGETSERVO_20 0x8101
# define USB_DEVICE_ID_4_PHIDGETSERVO_20 0x8104
# define USB_DEVICE_ID_8_8_4_IF_KIT 0x8201
# define USB_DEVICE_ID_QUAD_USB_JOYPAD 0x8800
# define USB_DEVICE_ID_DUAL_USB_JOYPAD 0x8866
# define USB_VENDOR_ID_WISEGROUP_LTD 0x6677
# define USB_DEVICE_ID_SMARTJOY_DUAL_PLUS 0x8802
# define USB_VENDOR_ID_YEALINK 0x6993
# define USB_DEVICE_ID_YEALINK_P1K_P4K_B2K 0xb001
/*
* Alphabetically sorted blacklist by quirk type .
*/
static const struct hid_blacklist {
__u16 idVendor ;
__u16 idProduct ;
__u32 quirks ;
} hid_blacklist [ ] = {
{ USB_VENDOR_ID_A4TECH , USB_DEVICE_ID_A4TECH_WCP32PU , HID_QUIRK_2WHEEL_MOUSE_HACK_7 } ,
{ USB_VENDOR_ID_CYPRESS , USB_DEVICE_ID_CYPRESS_MOUSE , HID_QUIRK_2WHEEL_MOUSE_HACK_5 } ,
{ USB_VENDOR_ID_LOGITECH , USB_DEVICE_ID_LOGITECH_RECEIVER , HID_QUIRK_BAD_RELATIVE_KEYS } ,
{ USB_VENDOR_ID_AASHIMA , USB_DEVICE_ID_AASHIMA_GAMEPAD , HID_QUIRK_BADPAD } ,
{ USB_VENDOR_ID_AASHIMA , USB_DEVICE_ID_AASHIMA_PREDATOR , HID_QUIRK_BADPAD } ,
{ USB_VENDOR_ID_ALPS , USB_DEVICE_ID_IBM_GAMEPAD , HID_QUIRK_BADPAD } ,
{ USB_VENDOR_ID_CHIC , USB_DEVICE_ID_CHIC_GAMEPAD , HID_QUIRK_BADPAD } ,
{ USB_VENDOR_ID_HAPP , USB_DEVICE_ID_UGCI_DRIVING , HID_QUIRK_BADPAD | HID_QUIRK_MULTI_INPUT } ,
{ USB_VENDOR_ID_HAPP , USB_DEVICE_ID_UGCI_FLYING , HID_QUIRK_BADPAD | HID_QUIRK_MULTI_INPUT } ,
{ USB_VENDOR_ID_HAPP , USB_DEVICE_ID_UGCI_FIGHTING , HID_QUIRK_BADPAD | HID_QUIRK_MULTI_INPUT } ,
{ USB_VENDOR_ID_NEC , USB_DEVICE_ID_NEC_USB_GAME_PAD , HID_QUIRK_BADPAD } ,
{ USB_VENDOR_ID_SAITEK , USB_DEVICE_ID_SAITEK_RUMBLEPAD , HID_QUIRK_BADPAD } ,
{ USB_VENDOR_ID_TOPMAX , USB_DEVICE_ID_TOPMAX_COBRAPAD , HID_QUIRK_BADPAD } ,
{ USB_VENDOR_ID_CHERRY , USB_DEVICE_ID_CHERRY_CYMOTION , HID_QUIRK_CYMOTION } ,
{ USB_VENDOR_ID_LOGITECH , USB_DEVICE_ID_DINOVO_EDGE , HID_QUIRK_DUPLICATE_USAGES } ,
{ USB_VENDOR_ID_BELKIN , USB_DEVICE_ID_FLIP_KVM , HID_QUIRK_HIDDEV } ,
{ USB_VENDOR_ID_AIPTEK , USB_DEVICE_ID_AIPTEK_01 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_AIPTEK , USB_DEVICE_ID_AIPTEK_10 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_AIPTEK , USB_DEVICE_ID_AIPTEK_20 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_AIPTEK , USB_DEVICE_ID_AIPTEK_21 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_AIPTEK , USB_DEVICE_ID_AIPTEK_22 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_AIPTEK , USB_DEVICE_ID_AIPTEK_23 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_AIPTEK , USB_DEVICE_ID_AIPTEK_24 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_AIRCABLE , USB_DEVICE_ID_AIRCABLE1 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_ALCOR , USB_DEVICE_ID_ALCOR_USBRS232 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_APPLE , USB_DEVICE_ID_APPLE_IR , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_BERKSHIRE , USB_DEVICE_ID_BERKSHIRE_PCWD , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_CIDC , 0x0103 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_CYPRESS , USB_DEVICE_ID_CYPRESS_HIDCOM , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_CYPRESS , USB_DEVICE_ID_CYPRESS_ULTRAMOUSE , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_DELORME , USB_DEVICE_ID_DELORME_EARTHMATE , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_DELORME , USB_DEVICE_ID_DELORME_EM_LT20 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_ESSENTIAL_REALITY , USB_DEVICE_ID_ESSENTIAL_REALITY_P5 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GLAB , USB_DEVICE_ID_4_PHIDGETSERVO_30 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GLAB , USB_DEVICE_ID_1_PHIDGETSERVO_30 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GLAB , USB_DEVICE_ID_0_0_4_IF_KIT , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GLAB , USB_DEVICE_ID_0_16_16_IF_KIT , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GLAB , USB_DEVICE_ID_8_8_8_IF_KIT , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GLAB , USB_DEVICE_ID_0_8_7_IF_KIT , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GLAB , USB_DEVICE_ID_0_8_8_IF_KIT , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GLAB , USB_DEVICE_ID_PHIDGET_MOTORCONTROL , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GRIFFIN , USB_DEVICE_ID_POWERMATE , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GRIFFIN , USB_DEVICE_ID_SOUNDKNOB , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GTCO , USB_DEVICE_ID_GTCO_90 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GTCO , USB_DEVICE_ID_GTCO_100 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GTCO , USB_DEVICE_ID_GTCO_101 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GTCO , USB_DEVICE_ID_GTCO_103 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GTCO , USB_DEVICE_ID_GTCO_104 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GTCO , USB_DEVICE_ID_GTCO_105 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GTCO , USB_DEVICE_ID_GTCO_106 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GTCO , USB_DEVICE_ID_GTCO_107 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GTCO , USB_DEVICE_ID_GTCO_108 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GTCO , USB_DEVICE_ID_GTCO_200 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GTCO , USB_DEVICE_ID_GTCO_201 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GTCO , USB_DEVICE_ID_GTCO_202 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GTCO , USB_DEVICE_ID_GTCO_203 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GTCO , USB_DEVICE_ID_GTCO_204 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GTCO , USB_DEVICE_ID_GTCO_205 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GTCO , USB_DEVICE_ID_GTCO_206 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GTCO , USB_DEVICE_ID_GTCO_207 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GTCO , USB_DEVICE_ID_GTCO_300 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GTCO , USB_DEVICE_ID_GTCO_301 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GTCO , USB_DEVICE_ID_GTCO_302 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GTCO , USB_DEVICE_ID_GTCO_303 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GTCO , USB_DEVICE_ID_GTCO_304 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GTCO , USB_DEVICE_ID_GTCO_305 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GTCO , USB_DEVICE_ID_GTCO_306 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GTCO , USB_DEVICE_ID_GTCO_307 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GTCO , USB_DEVICE_ID_GTCO_308 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GTCO , USB_DEVICE_ID_GTCO_309 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GTCO , USB_DEVICE_ID_GTCO_400 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GTCO , USB_DEVICE_ID_GTCO_401 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GTCO , USB_DEVICE_ID_GTCO_402 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GTCO , USB_DEVICE_ID_GTCO_403 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GTCO , USB_DEVICE_ID_GTCO_404 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GTCO , USB_DEVICE_ID_GTCO_405 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GTCO , USB_DEVICE_ID_GTCO_500 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GTCO , USB_DEVICE_ID_GTCO_501 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GTCO , USB_DEVICE_ID_GTCO_502 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GTCO , USB_DEVICE_ID_GTCO_503 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GTCO , USB_DEVICE_ID_GTCO_504 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GTCO , USB_DEVICE_ID_GTCO_1000 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GTCO , USB_DEVICE_ID_GTCO_1001 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GTCO , USB_DEVICE_ID_GTCO_1002 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GTCO , USB_DEVICE_ID_GTCO_1003 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GTCO , USB_DEVICE_ID_GTCO_1004 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GTCO , USB_DEVICE_ID_GTCO_1005 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_GTCO , USB_DEVICE_ID_GTCO_1006 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_IMATION , USB_DEVICE_ID_DISC_STAKKA , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_KBGEAR , USB_DEVICE_ID_KBGEAR_JAMSTUDIO , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_LD , USB_DEVICE_ID_LD_CASSY , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_LD , USB_DEVICE_ID_LD_POCKETCASSY , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_LD , USB_DEVICE_ID_LD_MOBILECASSY , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_LD , USB_DEVICE_ID_LD_JWM , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_LD , USB_DEVICE_ID_LD_DMMP , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_LD , USB_DEVICE_ID_LD_UMIP , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_LD , USB_DEVICE_ID_LD_XRAY1 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_LD , USB_DEVICE_ID_LD_XRAY2 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_LD , USB_DEVICE_ID_LD_VIDEOCOM , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_LD , USB_DEVICE_ID_LD_COM3LAB , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_LD , USB_DEVICE_ID_LD_TELEPORT , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_LD , USB_DEVICE_ID_LD_NETWORKANALYSER , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_LD , USB_DEVICE_ID_LD_POWERCONTROL , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_LD , USB_DEVICE_ID_LD_MACHINETEST , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_MCC , USB_DEVICE_ID_MCC_PMD1024LS , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_MCC , USB_DEVICE_ID_MCC_PMD1208LS , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_MGE , USB_DEVICE_ID_MGE_UPS , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_MGE , USB_DEVICE_ID_MGE_UPS1 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_ONTRAK , USB_DEVICE_ID_ONTRAK_ADU100 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_ONTRAK , USB_DEVICE_ID_ONTRAK_ADU100 + 20 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_ONTRAK , USB_DEVICE_ID_ONTRAK_ADU100 + 30 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_ONTRAK , USB_DEVICE_ID_ONTRAK_ADU100 + 100 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_ONTRAK , USB_DEVICE_ID_ONTRAK_ADU100 + 108 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_ONTRAK , USB_DEVICE_ID_ONTRAK_ADU100 + 118 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_ONTRAK , USB_DEVICE_ID_ONTRAK_ADU100 + 200 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_ONTRAK , USB_DEVICE_ID_ONTRAK_ADU100 + 300 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_ONTRAK , USB_DEVICE_ID_ONTRAK_ADU100 + 400 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_ONTRAK , USB_DEVICE_ID_ONTRAK_ADU100 + 500 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_PANJIT , 0x0001 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_PANJIT , 0x0002 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_PANJIT , 0x0003 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_PANJIT , 0x0004 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_VERNIER , USB_DEVICE_ID_VERNIER_LABPRO , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_VERNIER , USB_DEVICE_ID_VERNIER_GOTEMP , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_VERNIER , USB_DEVICE_ID_VERNIER_SKIP , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_VERNIER , USB_DEVICE_ID_VERNIER_CYCLOPS , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_WISEGROUP , USB_DEVICE_ID_4_PHIDGETSERVO_20 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_WISEGROUP , USB_DEVICE_ID_1_PHIDGETSERVO_20 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_WISEGROUP , USB_DEVICE_ID_8_8_4_IF_KIT , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_YEALINK , USB_DEVICE_ID_YEALINK_P1K_P4K_B2K , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_ACECAD , USB_DEVICE_ID_ACECAD_FLAIR , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_ACECAD , USB_DEVICE_ID_ACECAD_302 , HID_QUIRK_IGNORE } ,
{ USB_VENDOR_ID_LOGITECH , USB_DEVICE_ID_MX3000_RECEIVER , HID_QUIRK_LOGITECH_DESCRIPTOR } ,
{ USB_VENDOR_ID_LOGITECH , USB_DEVICE_ID_S510_RECEIVER , HID_QUIRK_LOGITECH_DESCRIPTOR } ,
{ USB_VENDOR_ID_LOGITECH , USB_DEVICE_ID_S510_RECEIVER_2 , HID_QUIRK_LOGITECH_DESCRIPTOR } ,
{ USB_VENDOR_ID_APPLE , USB_DEVICE_ID_APPLE_MIGHTYMOUSE , HID_QUIRK_MIGHTYMOUSE | HID_QUIRK_INVERT_HWHEEL } ,
{ USB_VENDOR_ID_PANTHERLORD , USB_DEVICE_ID_PANTHERLORD_TWIN_USB_JOYSTICK , HID_QUIRK_MULTI_INPUT | HID_QUIRK_SKIP_OUTPUT_REPORTS } ,
{ USB_VENDOR_ID_PLAYDOTCOM , USB_DEVICE_ID_PLAYDOTCOM_EMS_USBII , HID_QUIRK_MULTI_INPUT } ,
{ USB_VENDOR_ID_SONY , USB_DEVICE_ID_SONY_PS3_CONTROLLER , HID_QUIRK_SONY_PS3_CONTROLLER } ,
{ USB_VENDOR_ID_ATEN , USB_DEVICE_ID_ATEN_UC100KM , HID_QUIRK_NOGET } ,
{ USB_VENDOR_ID_ATEN , USB_DEVICE_ID_ATEN_CS124U , HID_QUIRK_NOGET } ,
{ USB_VENDOR_ID_ATEN , USB_DEVICE_ID_ATEN_2PORTKVM , HID_QUIRK_NOGET } ,
{ USB_VENDOR_ID_ATEN , USB_DEVICE_ID_ATEN_4PORTKVM , HID_QUIRK_NOGET } ,
{ USB_VENDOR_ID_ATEN , USB_DEVICE_ID_ATEN_4PORTKVMC , HID_QUIRK_NOGET } ,
{ USB_VENDOR_ID_SUN , USB_DEVICE_ID_RARITAN_KVM_DONGLE , HID_QUIRK_NOGET } ,
{ USB_VENDOR_ID_TURBOX , USB_DEVICE_ID_TURBOX_KEYBOARD , HID_QUIRK_NOGET } ,
{ USB_VENDOR_ID_WISEGROUP , USB_DEVICE_ID_DUAL_USB_JOYPAD , HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT } ,
{ USB_VENDOR_ID_WISEGROUP , USB_DEVICE_ID_QUAD_USB_JOYPAD , HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT } ,
{ USB_VENDOR_ID_WISEGROUP_LTD , USB_DEVICE_ID_SMARTJOY_DUAL_PLUS , HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT } ,
{ USB_VENDOR_ID_APPLE , USB_DEVICE_ID_APPLE_FOUNTAIN_ANSI , HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE } ,
{ USB_VENDOR_ID_APPLE , USB_DEVICE_ID_APPLE_FOUNTAIN_ISO , HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE } ,
{ USB_VENDOR_ID_APPLE , USB_DEVICE_ID_APPLE_GEYSER_ANSI , HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE } ,
{ USB_VENDOR_ID_APPLE , USB_DEVICE_ID_APPLE_GEYSER_ISO , HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_POWERBOOK_ISO_KEYBOARD } ,
{ USB_VENDOR_ID_APPLE , USB_DEVICE_ID_APPLE_GEYSER_JIS , HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE } ,
{ USB_VENDOR_ID_APPLE , USB_DEVICE_ID_APPLE_GEYSER3_ANSI , HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE } ,
{ USB_VENDOR_ID_APPLE , USB_DEVICE_ID_APPLE_GEYSER3_ISO , HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_POWERBOOK_ISO_KEYBOARD } ,
{ USB_VENDOR_ID_APPLE , USB_DEVICE_ID_APPLE_GEYSER3_JIS , HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE } ,
{ USB_VENDOR_ID_APPLE , USB_DEVICE_ID_APPLE_GEYSER4_ANSI , HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE } ,
{ USB_VENDOR_ID_APPLE , USB_DEVICE_ID_APPLE_GEYSER4_ISO , HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_POWERBOOK_ISO_KEYBOARD } ,
{ USB_VENDOR_ID_APPLE , USB_DEVICE_ID_APPLE_GEYSER4_JIS , HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE } ,
{ USB_VENDOR_ID_APPLE , USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY , HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE } ,
{ USB_VENDOR_ID_APPLE , USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY , HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE } ,
{ USB_VENDOR_ID_DELL , USB_DEVICE_ID_DELL_W7658 , HID_QUIRK_RESET_LEDS } ,
{ 0 , 0 }
} ;
2007-04-19 13:45:57 +02:00
/**
* usbhid_exists_squirk : return any static quirks for a USB HID device
* @ idVendor : the 16 - bit USB vendor ID , in native byteorder
* @ idProduct : the 16 - bit USB product ID , in native byteorder
*
* Description :
* Given a USB vendor ID and product ID , return a pointer to
* the hid_blacklist entry associated with that device .
*
* Returns : pointer if quirk found , or NULL if no quirks found .
*/
static const struct hid_blacklist * usbhid_exists_squirk ( const u16 idVendor ,
const u16 idProduct )
{
const struct hid_blacklist * bl_entry = NULL ;
int n = 0 ;
for ( ; hid_blacklist [ n ] . idVendor ; n + + )
if ( hid_blacklist [ n ] . idVendor = = idVendor & &
hid_blacklist [ n ] . idProduct = = idProduct )
bl_entry = & hid_blacklist [ n ] ;
if ( bl_entry ! = NULL )
dbg ( " Found squirk 0x%x for USB HID vendor 0x%hx prod 0x%hx \n " ,
bl_entry - > quirks , bl_entry - > idVendor ,
bl_entry - > idProduct ) ;
return bl_entry ;
}
2007-04-19 13:27:04 +02:00
/**
* usbhid_lookup_quirk : return any quirks associated with a USB HID device
* @ idVendor : the 16 - bit USB vendor ID , in native byteorder
* @ idProduct : the 16 - bit USB product ID , in native byteorder
*
* Description :
* Given a USB vendor ID and product ID , return any quirks associated
* with that device .
*
* Returns : a u32 quirks value .
*/
u32 usbhid_lookup_quirk ( const u16 idVendor , const u16 idProduct )
{
u32 quirks = 0 ;
2007-04-19 13:45:57 +02:00
const struct hid_blacklist * bl_entry = NULL ;
2007-04-19 13:27:04 +02:00
/* Ignore all Wacom devices */
if ( idVendor = = USB_VENDOR_ID_WACOM )
return HID_QUIRK_IGNORE ;
/* ignore all Code Mercenaries IOWarrior devices */
if ( idVendor = = USB_VENDOR_ID_CODEMERCS )
if ( idProduct > = USB_DEVICE_ID_CODEMERCS_IOW_FIRST & &
idProduct < = USB_DEVICE_ID_CODEMERCS_IOW_LAST )
return HID_QUIRK_IGNORE ;
2007-04-19 13:45:57 +02:00
bl_entry = usbhid_exists_squirk ( idVendor , idProduct ) ;
if ( bl_entry )
quirks = bl_entry - > quirks ;
2007-04-19 13:27:04 +02:00
return quirks ;
}
2007-04-19 13:45:57 +02:00