Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    1) // SPDX-License-Identifier: GPL-2.0-or-later
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    3)  *  HID quirks support for Linux
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    4)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    5)  *  Copyright (c) 1999 Andreas Gal
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    6)  *  Copyright (c) 2000-2005 Vojtech Pavlik <vojtech@suse.cz>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    7)  *  Copyright (c) 2005 Michael Haboustak <mike-@cinci.rr.com> for Concept2, Inc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    8)  *  Copyright (c) 2006-2007 Jiri Kosina
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    9)  *  Copyright (c) 2007 Paul Walmsley
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   10)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   11) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   12) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   13)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   14) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   15) #include <linux/hid.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   16) #include <linux/export.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   17) #include <linux/slab.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   18) #include <linux/mutex.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   19) #include <linux/input/elan-i2c-ids.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   20) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   21) #include "hid-ids.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   22) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   23) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   24)  * Alphabetically sorted by vendor then product.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   25)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   26) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   27) static const struct hid_device_id hid_quirks[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   28) 	{ HID_USB_DEVICE(USB_VENDOR_ID_AASHIMA, USB_DEVICE_ID_AASHIMA_GAMEPAD), HID_QUIRK_BADPAD },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   29) 	{ HID_USB_DEVICE(USB_VENDOR_ID_AASHIMA, USB_DEVICE_ID_AASHIMA_PREDATOR), HID_QUIRK_BADPAD },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   30) 	{ HID_USB_DEVICE(USB_VENDOR_ID_AFATECH, USB_DEVICE_ID_AFATECH_AF9016), HID_QUIRK_FULLSPEED_INTERVAL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   31) 	{ HID_USB_DEVICE(USB_VENDOR_ID_AIREN, USB_DEVICE_ID_AIREN_SLIMPLUS), HID_QUIRK_NOGET },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   32) 	{ HID_USB_DEVICE(USB_VENDOR_ID_AKAI_09E8, USB_DEVICE_ID_AKAI_09E8_MIDIMIX), HID_QUIRK_NO_INIT_REPORTS },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   33) 	{ HID_USB_DEVICE(USB_VENDOR_ID_AKAI, USB_DEVICE_ID_AKAI_MPKMINI2), HID_QUIRK_NO_INIT_REPORTS },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   34) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ALPS, USB_DEVICE_ID_IBM_GAMEPAD), HID_QUIRK_BADPAD },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   35) 	{ HID_USB_DEVICE(USB_VENDOR_ID_AMI, USB_DEVICE_ID_AMI_VIRT_KEYBOARD_AND_MOUSE), HID_QUIRK_ALWAYS_POLL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   36) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_2PORTKVM), HID_QUIRK_NOGET },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   37) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_4PORTKVMC), HID_QUIRK_NOGET },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   38) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_4PORTKVM), HID_QUIRK_NOGET },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   39) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_CS124U), HID_QUIRK_NOGET },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   40) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_CS1758), HID_QUIRK_NOGET },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   41) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_CS682), HID_QUIRK_NOGET },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   42) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_CS692), HID_QUIRK_NOGET },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   43) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_UC100KM), HID_QUIRK_NOGET },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   44) 	{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_MULTI_TOUCH), HID_QUIRK_MULTI_INPUT },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   45) 	{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE), HID_QUIRK_ALWAYS_POLL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   46) 	{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE2), HID_QUIRK_ALWAYS_POLL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   47) 	{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_WIRELESS), HID_QUIRK_MULTI_INPUT },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   48) 	{ HID_USB_DEVICE(USB_VENDOR_ID_CHIC, USB_DEVICE_ID_CHIC_GAMEPAD), HID_QUIRK_BADPAD },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   49) 	{ HID_USB_DEVICE(USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_3AXIS_5BUTTON_STICK), HID_QUIRK_NOGET },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   50) 	{ HID_USB_DEVICE(USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_AXIS_295), HID_QUIRK_NOGET },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   51) 	{ HID_USB_DEVICE(USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_COMBATSTICK), HID_QUIRK_NOGET },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   52) 	{ HID_USB_DEVICE(USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_FIGHTERSTICK), HID_QUIRK_NOGET },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   53) 	{ HID_USB_DEVICE(USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_FLIGHT_SIM_ECLIPSE_YOKE), HID_QUIRK_NOGET },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   54) 	{ HID_USB_DEVICE(USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_FLIGHT_SIM_YOKE), HID_QUIRK_NOGET },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   55) 	{ HID_USB_DEVICE(USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_PRO_PEDALS), HID_QUIRK_NOGET },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   56) 	{ HID_USB_DEVICE(USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_PRO_THROTTLE), HID_QUIRK_NOGET },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   57) 	{ HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_K65RGB), HID_QUIRK_NO_INIT_REPORTS },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   58) 	{ HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_K65RGB_RAPIDFIRE), HID_QUIRK_NO_INIT_REPORTS | HID_QUIRK_ALWAYS_POLL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   59) 	{ HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_K70RGB), HID_QUIRK_NO_INIT_REPORTS },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   60) 	{ HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_K70RGB_RAPIDFIRE), HID_QUIRK_NO_INIT_REPORTS | HID_QUIRK_ALWAYS_POLL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   61) 	{ HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_K70R), HID_QUIRK_NO_INIT_REPORTS },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   62) 	{ HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_K95RGB), HID_QUIRK_NO_INIT_REPORTS | HID_QUIRK_ALWAYS_POLL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   63) 	{ HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_M65RGB), HID_QUIRK_NO_INIT_REPORTS },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   64) 	{ HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_GLAIVE_RGB), HID_QUIRK_NO_INIT_REPORTS | HID_QUIRK_ALWAYS_POLL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   65) 	{ HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_SCIMITAR_PRO_RGB), HID_QUIRK_NO_INIT_REPORTS | HID_QUIRK_ALWAYS_POLL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   66) 	{ HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_STRAFE), HID_QUIRK_NO_INIT_REPORTS | HID_QUIRK_ALWAYS_POLL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   67) 	{ HID_USB_DEVICE(USB_VENDOR_ID_CREATIVELABS, USB_DEVICE_ID_CREATIVE_SB_OMNI_SURROUND_51), HID_QUIRK_NOGET },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   68) 	{ HID_USB_DEVICE(USB_VENDOR_ID_DELL, USB_DEVICE_ID_DELL_PIXART_USB_OPTICAL_MOUSE), HID_QUIRK_ALWAYS_POLL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   69) 	{ HID_USB_DEVICE(USB_VENDOR_ID_DMI, USB_DEVICE_ID_DMI_ENC), HID_QUIRK_NOGET },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   70) 	{ HID_USB_DEVICE(USB_VENDOR_ID_DRACAL_RAPHNET, USB_DEVICE_ID_RAPHNET_2NES2SNES), HID_QUIRK_MULTI_INPUT },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   71) 	{ HID_USB_DEVICE(USB_VENDOR_ID_DRACAL_RAPHNET, USB_DEVICE_ID_RAPHNET_4NES4SNES), HID_QUIRK_MULTI_INPUT },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   72) 	{ HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_REDRAGON_SEYMUR2), HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   73) 	{ HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_DOLPHINBAR), HID_QUIRK_MULTI_INPUT },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   74) 	{ HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_GAMECUBE1), HID_QUIRK_MULTI_INPUT },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   75) 	{ HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_GAMECUBE3), HID_QUIRK_MULTI_INPUT },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   76) 	{ HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_PS3), HID_QUIRK_MULTI_INPUT },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   77) 	{ HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_WIIU), HID_QUIRK_MULTI_INPUT },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   78) 	{ HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_EGALAX_TOUCHCONTROLLER), HID_QUIRK_MULTI_INPUT | HID_QUIRK_NOGET },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   79) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ELAN, HID_ANY_ID), HID_QUIRK_ALWAYS_POLL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   80) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ELO, USB_DEVICE_ID_ELO_TS2700), HID_QUIRK_NOGET },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   81) 	{ HID_USB_DEVICE(USB_VENDOR_ID_EMS, USB_DEVICE_ID_EMS_TRIO_LINKER_PLUS_II), HID_QUIRK_MULTI_INPUT },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   82) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ETURBOTOUCH, USB_DEVICE_ID_ETURBOTOUCH_2968), HID_QUIRK_MULTI_INPUT },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   83) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ETURBOTOUCH, USB_DEVICE_ID_ETURBOTOUCH), HID_QUIRK_MULTI_INPUT },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   84) 	{ HID_USB_DEVICE(USB_VENDOR_ID_FORMOSA, USB_DEVICE_ID_FORMOSA_IR_RECEIVER), HID_QUIRK_NO_INIT_REPORTS },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   85) 	{ HID_USB_DEVICE(USB_VENDOR_ID_FREESCALE, USB_DEVICE_ID_FREESCALE_MX28), HID_QUIRK_NOGET },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   86) 	{ HID_USB_DEVICE(USB_VENDOR_ID_FUTABA, USB_DEVICE_ID_LED_DISPLAY), HID_QUIRK_NO_INIT_REPORTS },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   87) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GREENASIA, USB_DEVICE_ID_GREENASIA_DUAL_SAT_ADAPTOR), HID_QUIRK_MULTI_INPUT },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   88) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GREENASIA, USB_DEVICE_ID_GREENASIA_DUAL_USB_JOYPAD), HID_QUIRK_MULTI_INPUT },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   89) 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_GAMEVICE, USB_DEVICE_ID_GAMEVICE_GV186),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   90) 		HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   91) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GAMEVICE, USB_DEVICE_ID_GAMEVICE_KISHI),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   92) 		HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   93) 	{ HID_USB_DEVICE(USB_VENDOR_ID_HAPP, USB_DEVICE_ID_UGCI_DRIVING), HID_QUIRK_BADPAD | HID_QUIRK_MULTI_INPUT },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   94) 	{ HID_USB_DEVICE(USB_VENDOR_ID_HAPP, USB_DEVICE_ID_UGCI_FIGHTING), HID_QUIRK_BADPAD | HID_QUIRK_MULTI_INPUT },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   95) 	{ HID_USB_DEVICE(USB_VENDOR_ID_HAPP, USB_DEVICE_ID_UGCI_FLYING), HID_QUIRK_BADPAD | HID_QUIRK_MULTI_INPUT },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   96) 	{ HID_USB_DEVICE(USB_VENDOR_ID_HOLTEK_ALT, USB_DEVICE_ID_HOLTEK_ALT_KEYBOARD_A096), HID_QUIRK_NO_INIT_REPORTS },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   97) 	{ HID_USB_DEVICE(USB_VENDOR_ID_HOLTEK_ALT, USB_DEVICE_ID_HOLTEK_ALT_KEYBOARD_A293), HID_QUIRK_ALWAYS_POLL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   98) 	{ HID_USB_DEVICE(USB_VENDOR_ID_HP, USB_PRODUCT_ID_HP_LOGITECH_OEM_USB_OPTICAL_MOUSE_0A4A), HID_QUIRK_ALWAYS_POLL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   99) 	{ HID_USB_DEVICE(USB_VENDOR_ID_HP, USB_PRODUCT_ID_HP_LOGITECH_OEM_USB_OPTICAL_MOUSE_0B4A), HID_QUIRK_ALWAYS_POLL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  100) 	{ HID_USB_DEVICE(USB_VENDOR_ID_HP, USB_PRODUCT_ID_HP_PIXART_OEM_USB_OPTICAL_MOUSE), HID_QUIRK_ALWAYS_POLL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  101) 	{ HID_USB_DEVICE(USB_VENDOR_ID_HP, USB_PRODUCT_ID_HP_PIXART_OEM_USB_OPTICAL_MOUSE_094A), HID_QUIRK_ALWAYS_POLL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  102) 	{ HID_USB_DEVICE(USB_VENDOR_ID_HP, USB_PRODUCT_ID_HP_PIXART_OEM_USB_OPTICAL_MOUSE_0941), HID_QUIRK_ALWAYS_POLL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  103) 	{ HID_USB_DEVICE(USB_VENDOR_ID_HP, USB_PRODUCT_ID_HP_PIXART_OEM_USB_OPTICAL_MOUSE_0641), HID_QUIRK_ALWAYS_POLL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  104) 	{ HID_USB_DEVICE(USB_VENDOR_ID_HP, USB_PRODUCT_ID_HP_PIXART_OEM_USB_OPTICAL_MOUSE_1f4a), HID_QUIRK_ALWAYS_POLL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  105) 	{ HID_USB_DEVICE(USB_VENDOR_ID_IDEACOM, USB_DEVICE_ID_IDEACOM_IDC6680), HID_QUIRK_MULTI_INPUT },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  106) 	{ HID_USB_DEVICE(USB_VENDOR_ID_INNOMEDIA, USB_DEVICE_ID_INNEX_GENESIS_ATARI), HID_QUIRK_MULTI_INPUT },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  107) 	{ HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_EASYPEN_M610X), HID_QUIRK_MULTI_INPUT },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  108) 	{ HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_MOUSEPEN_I608X), HID_QUIRK_MULTI_INPUT },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  109) 	{ HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_MOUSEPEN_I608X_V2), HID_QUIRK_MULTI_INPUT },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  110) 	{ HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_PENSKETCH_M912), HID_QUIRK_MULTI_INPUT },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  111) 	{ HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_EASYPEN_M406XE), HID_QUIRK_MULTI_INPUT },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  112) 	{ HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_PIXART_USB_OPTICAL_MOUSE_ID2), HID_QUIRK_ALWAYS_POLL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  113) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_OPTICAL_USB_MOUSE_600E), HID_QUIRK_ALWAYS_POLL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  114) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_PIXART_USB_MOUSE_608D), HID_QUIRK_ALWAYS_POLL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  115) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_PIXART_USB_MOUSE_6019), HID_QUIRK_ALWAYS_POLL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  116) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_PIXART_USB_MOUSE_602E), HID_QUIRK_ALWAYS_POLL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  117) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_PIXART_USB_MOUSE_6093), HID_QUIRK_ALWAYS_POLL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  118) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_C007), HID_QUIRK_ALWAYS_POLL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  119) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_C077), HID_QUIRK_ALWAYS_POLL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  120) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_KEYBOARD_G710_PLUS), HID_QUIRK_NOGET },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  121) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_MOUSE_C01A), HID_QUIRK_ALWAYS_POLL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  122) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_MOUSE_C05A), HID_QUIRK_ALWAYS_POLL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  123) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_MOUSE_C06A), HID_QUIRK_ALWAYS_POLL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  124) 	{ HID_USB_DEVICE(USB_VENDOR_ID_MCS, USB_DEVICE_ID_MCS_GAMEPADBLOCK), HID_QUIRK_MULTI_INPUT },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  125) 	{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_PIXART_MOUSE), HID_QUIRK_ALWAYS_POLL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  126) 	{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_POWER_COVER), HID_QUIRK_NO_INIT_REPORTS },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  127) 	{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_SURFACE3_COVER), HID_QUIRK_NO_INIT_REPORTS },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  128) 	{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_SURFACE_PRO_2), HID_QUIRK_NO_INIT_REPORTS },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  129) 	{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TOUCH_COVER_2), HID_QUIRK_NO_INIT_REPORTS },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  130) 	{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_2), HID_QUIRK_NO_INIT_REPORTS },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  131) 	{ HID_USB_DEVICE(USB_VENDOR_ID_MOJO, USB_DEVICE_ID_RETRO_ADAPTER), HID_QUIRK_MULTI_INPUT },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  132) 	{ HID_USB_DEVICE(USB_VENDOR_ID_MSI, USB_DEVICE_ID_MSI_GT683R_LED_PANEL), HID_QUIRK_NO_INIT_REPORTS },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  133) 	{ HID_USB_DEVICE(USB_VENDOR_ID_MULTIPLE_1781, USB_DEVICE_ID_RAPHNET_4NES4SNES_OLD), HID_QUIRK_MULTI_INPUT },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  134) 	{ HID_USB_DEVICE(USB_VENDOR_ID_NATSU, USB_DEVICE_ID_NATSU_GAMEPAD), HID_QUIRK_BADPAD },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  135) 	{ HID_USB_DEVICE(USB_VENDOR_ID_NEC, USB_DEVICE_ID_NEC_USB_GAME_PAD), HID_QUIRK_BADPAD },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  136) 	{ HID_USB_DEVICE(USB_VENDOR_ID_NEXIO, USB_DEVICE_ID_NEXIO_MULTITOUCH_PTI0750), HID_QUIRK_NO_INIT_REPORTS },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  137) 	{ HID_USB_DEVICE(USB_VENDOR_ID_NEXTWINDOW, USB_DEVICE_ID_NEXTWINDOW_TOUCHSCREEN), HID_QUIRK_MULTI_INPUT},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  138) 	{ HID_USB_DEVICE(USB_VENDOR_ID_NOVATEK, USB_DEVICE_ID_NOVATEK_MOUSE), HID_QUIRK_NO_INIT_REPORTS },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  139) 	{ HID_USB_DEVICE(USB_VENDOR_ID_NTRIG, USB_DEVICE_ID_NTRIG_DUOSENSE), HID_QUIRK_NO_INIT_REPORTS },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  140) 	{ HID_USB_DEVICE(USB_VENDOR_ID_PANTHERLORD, USB_DEVICE_ID_PANTHERLORD_TWIN_USB_JOYSTICK), HID_QUIRK_MULTI_INPUT | HID_QUIRK_SKIP_OUTPUT_REPORTS },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  141) 	{ HID_USB_DEVICE(USB_VENDOR_ID_PENMOUNT, USB_DEVICE_ID_PENMOUNT_1610), HID_QUIRK_NOGET },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  142) 	{ HID_USB_DEVICE(USB_VENDOR_ID_PENMOUNT, USB_DEVICE_ID_PENMOUNT_1640), HID_QUIRK_NOGET },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  143) 	{ HID_USB_DEVICE(USB_VENDOR_ID_PI_ENGINEERING, USB_DEVICE_ID_PI_ENGINEERING_VEC_USB_FOOTPEDAL), HID_QUIRK_HIDINPUT_FORCE },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  144) 	{ HID_USB_DEVICE(USB_VENDOR_ID_PIXART, USB_DEVICE_ID_PIXART_OPTICAL_TOUCH_SCREEN1), HID_QUIRK_NO_INIT_REPORTS },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  145) 	{ HID_USB_DEVICE(USB_VENDOR_ID_PIXART, USB_DEVICE_ID_PIXART_OPTICAL_TOUCH_SCREEN2), HID_QUIRK_NO_INIT_REPORTS },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  146) 	{ HID_USB_DEVICE(USB_VENDOR_ID_PIXART, USB_DEVICE_ID_PIXART_OPTICAL_TOUCH_SCREEN), HID_QUIRK_NO_INIT_REPORTS },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  147) 	{ HID_USB_DEVICE(USB_VENDOR_ID_PIXART, USB_DEVICE_ID_PIXART_USB_OPTICAL_MOUSE), HID_QUIRK_ALWAYS_POLL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  148) 	{ HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_MOUSE_4D22), HID_QUIRK_ALWAYS_POLL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  149) 	{ HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_PIXART_MOUSE_4D0F), HID_QUIRK_ALWAYS_POLL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  150) 	{ HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_PIXART_MOUSE_4D65), HID_QUIRK_ALWAYS_POLL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  151) 	{ HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_PIXART_MOUSE_4E22), HID_QUIRK_ALWAYS_POLL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  152) 	{ HID_USB_DEVICE(USB_VENDOR_ID_PRODIGE, USB_DEVICE_ID_PRODIGE_CORDLESS), HID_QUIRK_NOGET },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  153) 	{ HID_USB_DEVICE(USB_VENDOR_ID_QUANTA, USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH_3001), HID_QUIRK_NOGET },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  154) 	{ HID_USB_DEVICE(USB_VENDOR_ID_QUANTA, USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH_3003), HID_QUIRK_NOGET },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  155) 	{ HID_USB_DEVICE(USB_VENDOR_ID_QUANTA, USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH_3008), HID_QUIRK_NOGET },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  156) 	{ HID_USB_DEVICE(USB_VENDOR_ID_REALTEK, USB_DEVICE_ID_REALTEK_READER), HID_QUIRK_NO_INIT_REPORTS },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  157) 	{ HID_USB_DEVICE(USB_VENDOR_ID_RETROUSB, USB_DEVICE_ID_RETROUSB_SNES_RETROPAD), HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  158) 	{ HID_USB_DEVICE(USB_VENDOR_ID_RETROUSB, USB_DEVICE_ID_RETROUSB_SNES_RETROPORT), HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  159) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_RUMBLEPAD), HID_QUIRK_BADPAD },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  160) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_X52), HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  161) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_X52_2), HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  162) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_X52_PRO), HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  163) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_X65), HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  164) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SEMICO, USB_DEVICE_ID_SEMICO_USB_KEYKOARD2), HID_QUIRK_NO_INIT_REPORTS },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  165) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SEMICO, USB_DEVICE_ID_SEMICO_USB_KEYKOARD), HID_QUIRK_NO_INIT_REPORTS },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  166) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SENNHEISER, USB_DEVICE_ID_SENNHEISER_BTD500USB), HID_QUIRK_NOGET },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  167) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SIGMA_MICRO, USB_DEVICE_ID_SIGMA_MICRO_KEYBOARD), HID_QUIRK_NO_INIT_REPORTS },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  168) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SIGMATEL, USB_DEVICE_ID_SIGMATEL_STMP3780), HID_QUIRK_NOGET },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  169) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SIS_TOUCH, USB_DEVICE_ID_SIS1030_TOUCH), HID_QUIRK_NOGET },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  170) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SIS_TOUCH, USB_DEVICE_ID_SIS817_TOUCH), HID_QUIRK_NOGET },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  171) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SIS_TOUCH, USB_DEVICE_ID_SIS9200_TOUCH), HID_QUIRK_NOGET },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  172) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SIS_TOUCH, USB_DEVICE_ID_SIS_TS), HID_QUIRK_NO_INIT_REPORTS },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  173) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SUN, USB_DEVICE_ID_RARITAN_KVM_DONGLE), HID_QUIRK_NOGET },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  174) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SYMBOL, USB_DEVICE_ID_SYMBOL_SCANNER_1), HID_QUIRK_NOGET },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  175) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SYMBOL, USB_DEVICE_ID_SYMBOL_SCANNER_2), HID_QUIRK_NOGET },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  176) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_HD), HID_QUIRK_NO_INIT_REPORTS },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  177) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_LTS1), HID_QUIRK_NO_INIT_REPORTS },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  178) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_LTS2), HID_QUIRK_NO_INIT_REPORTS },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  179) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_QUAD_HD), HID_QUIRK_NO_INIT_REPORTS },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  180) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_TP_V103), HID_QUIRK_NO_INIT_REPORTS },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  181) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_DELL_K12A), HID_QUIRK_NO_INIT_REPORTS },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  182) 	{ HID_USB_DEVICE(USB_VENDOR_ID_TOPMAX, USB_DEVICE_ID_TOPMAX_COBRAPAD), HID_QUIRK_BADPAD },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  183) 	{ HID_USB_DEVICE(USB_VENDOR_ID_TOUCHPACK, USB_DEVICE_ID_TOUCHPACK_RTS), HID_QUIRK_MULTI_INPUT },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  184) 	{ HID_USB_DEVICE(USB_VENDOR_ID_TPV, USB_DEVICE_ID_TPV_OPTICAL_TOUCHSCREEN_8882), HID_QUIRK_NOGET },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  185) 	{ HID_USB_DEVICE(USB_VENDOR_ID_TPV, USB_DEVICE_ID_TPV_OPTICAL_TOUCHSCREEN_8883), HID_QUIRK_NOGET },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  186) 	{ HID_USB_DEVICE(USB_VENDOR_ID_TRUST, USB_DEVICE_ID_TRUST_PANORA_TABLET), HID_QUIRK_MULTI_INPUT | HID_QUIRK_HIDINPUT_FORCE },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  187) 	{ HID_USB_DEVICE(USB_VENDOR_ID_TURBOX, USB_DEVICE_ID_TURBOX_KEYBOARD), HID_QUIRK_NOGET },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  188) 	{ HID_USB_DEVICE(USB_VENDOR_ID_UCLOGIC, USB_DEVICE_ID_UCLOGIC_TABLET_KNA5), HID_QUIRK_MULTI_INPUT },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  189) 	{ HID_USB_DEVICE(USB_VENDOR_ID_UCLOGIC, USB_DEVICE_ID_UCLOGIC_TABLET_TWA60), HID_QUIRK_MULTI_INPUT },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  190) 	{ HID_USB_DEVICE(USB_VENDOR_ID_UGTIZER, USB_DEVICE_ID_UGTIZER_TABLET_WP5540), HID_QUIRK_MULTI_INPUT },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  191) 	{ HID_USB_DEVICE(USB_VENDOR_ID_WALTOP, USB_DEVICE_ID_WALTOP_MEDIA_TABLET_10_6_INCH), HID_QUIRK_MULTI_INPUT },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  192) 	{ HID_USB_DEVICE(USB_VENDOR_ID_WALTOP, USB_DEVICE_ID_WALTOP_MEDIA_TABLET_14_1_INCH), HID_QUIRK_MULTI_INPUT },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  193) 	{ HID_USB_DEVICE(USB_VENDOR_ID_WALTOP, USB_DEVICE_ID_WALTOP_SIRIUS_BATTERY_FREE_TABLET), HID_QUIRK_MULTI_INPUT },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  194) 	{ HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP_LTD2, USB_DEVICE_ID_SMARTJOY_DUAL_PLUS), HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  195) 	{ HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_QUAD_USB_JOYPAD), HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  196) 	{ HID_USB_DEVICE(USB_VENDOR_ID_XIN_MO, USB_DEVICE_ID_XIN_MO_DUAL_ARCADE), HID_QUIRK_MULTI_INPUT },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  197) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_GROUP_AUDIO), HID_QUIRK_NOGET },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  198) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  199) 	{ 0 }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  200) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  201) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  202) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  203)  * A list of devices for which there is a specialized driver on HID bus.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  204)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  205)  * Please note that for multitouch devices (driven by hid-multitouch driver),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  206)  * there is a proper autodetection and autoloading in place (based on presence
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  207)  * of HID_DG_CONTACTID), so those devices don't need to be added to this list,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  208)  * as we are doing the right thing in hid_scan_usage().
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  209)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  210)  * Autodetection for (USB) HID sensor hubs exists too. If a collection of type
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  211)  * physical is found inside a usage page of type sensor, hid-sensor-hub will be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  212)  * used as a driver. See hid_scan_report().
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  213)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  214) static const struct hid_device_id hid_have_special_driver[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  215) #if IS_ENABLED(CONFIG_HID_A4TECH)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  216) 	{ HID_USB_DEVICE(USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_WCP32PU) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  217) 	{ HID_USB_DEVICE(USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_X5_005D) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  218) 	{ HID_USB_DEVICE(USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_RP_649) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  219) 	{ HID_USB_DEVICE(USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_NB_95) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  220) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  221) #if IS_ENABLED(CONFIG_HID_ACCUTOUCH)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  222) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ELO, USB_DEVICE_ID_ELO_ACCUTOUCH_2216) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  223) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  224) #if IS_ENABLED(CONFIG_HID_ACRUX)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  225) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ACRUX, 0x0802) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  226) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ACRUX, 0xf705) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  227) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  228) #if IS_ENABLED(CONFIG_HID_ALPS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  229) 	{ HID_DEVICE(HID_BUS_ANY, HID_GROUP_ANY, USB_VENDOR_ID_ALPS_JP, HID_DEVICE_ID_ALPS_U1_DUAL) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  230) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  231) #if IS_ENABLED(CONFIG_HID_APPLE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  232) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MIGHTYMOUSE) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  233) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_ANSI) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  234) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_ISO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  235) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_ANSI) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  236) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_ISO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  237) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_JIS) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  238) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_ANSI) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  239) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_ISO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  240) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_JIS) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  241) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ANSI) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  242) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ISO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  243) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_JIS) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  244) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_MINI_ANSI) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  245) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_MINI_ISO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  246) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_MINI_JIS) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  247) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_ANSI) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  248) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_ISO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  249) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_JIS) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  250) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_ANSI) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  251) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_ISO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  252) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_JIS) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  253) 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_ANSI) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  254) 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_ISO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  255) 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_JIS) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  256) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING_ANSI) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  257) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING_ISO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  258) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING_JIS) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  259) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING2_ANSI) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  260) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING2_ISO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  261) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING2_JIS) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  262) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_ANSI) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  263) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_ISO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  264) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_JIS) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  265) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4_ANSI) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  266) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4_ISO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  267) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4_JIS) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  268) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4A_ANSI) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  269) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4A_ISO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  270) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4A_JIS) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  271) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING5_ANSI) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  272) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING5_ISO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  273) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING5_JIS) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  274) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING5A_ANSI) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  275) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING5A_ISO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  276) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING5A_JIS) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  277) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_REVB_ANSI) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  278) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_REVB_ISO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  279) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_REVB_JIS) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  280) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6_ANSI) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  281) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6_ISO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  282) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6_JIS) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  283) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6A_ANSI) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  284) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6A_ISO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  285) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6A_JIS) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  286) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7_ANSI) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  287) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7_ISO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  288) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7_JIS) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  289) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7A_ANSI) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  290) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7A_ISO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  291) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7A_JIS) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  292) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING8_ANSI) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  293) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING8_ISO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  294) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING8_JIS) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  295) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING9_ANSI) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  296) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING9_ISO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  297) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING9_JIS) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  298) 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ANSI) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  299) 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ISO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  300) 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_JIS) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  301) 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2011_ANSI) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  302) 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2011_ISO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  303) 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2011_JIS) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  304) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_ANSI) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  305) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  306) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  307) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  308) #if IS_ENABLED(CONFIG_HID_APPLEIR)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  309) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  310) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL2) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  311) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL3) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  312) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL4) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  313) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL5) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  314) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  315) #if IS_ENABLED(CONFIG_HID_ASUS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  316) 	{ HID_I2C_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_I2C_KEYBOARD) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  317) 	{ HID_I2C_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_I2C_TOUCHPAD) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  318) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_ROG_KEYBOARD1) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  319) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_ROG_KEYBOARD2) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  320) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_ROG_KEYBOARD3) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  321) 	{ HID_USB_DEVICE(USB_VENDOR_ID_JESS, USB_DEVICE_ID_ASUS_MD_5112) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  322) 	{ HID_USB_DEVICE(USB_VENDOR_ID_TURBOX, USB_DEVICE_ID_ASUS_MD_5110) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  323) 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_T100CHI_KEYBOARD) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  324) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  325) #if IS_ENABLED(CONFIG_HID_AUREAL)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  326) 	{ HID_USB_DEVICE(USB_VENDOR_ID_AUREAL, USB_DEVICE_ID_AUREAL_W01RN) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  327) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  328) #if IS_ENABLED(CONFIG_HID_BELKIN)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  329) 	{ HID_USB_DEVICE(USB_VENDOR_ID_BELKIN, USB_DEVICE_ID_FLIP_KVM) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  330) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LABTEC, USB_DEVICE_ID_LABTEC_WIRELESS_KEYBOARD) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  331) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  332) #if IS_ENABLED(CONFIG_HID_BETOP_FF)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  333) 	{ HID_USB_DEVICE(USB_VENDOR_ID_BETOP_2185BFM, 0x2208) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  334) 	{ HID_USB_DEVICE(USB_VENDOR_ID_BETOP_2185PC, 0x5506) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  335) 	{ HID_USB_DEVICE(USB_VENDOR_ID_BETOP_2185V2PC, 0x1850) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  336) 	{ HID_USB_DEVICE(USB_VENDOR_ID_BETOP_2185V2BFM, 0x5500) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  337) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  338) #if IS_ENABLED(CONFIG_HID_CHERRY)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  339) 	{ HID_USB_DEVICE(USB_VENDOR_ID_CHERRY, USB_DEVICE_ID_CHERRY_CYMOTION) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  340) 	{ HID_USB_DEVICE(USB_VENDOR_ID_CHERRY, USB_DEVICE_ID_CHERRY_CYMOTION_SOLAR) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  341) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  342) #if IS_ENABLED(CONFIG_HID_CHICONY)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  343) 	{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_TACTICAL_PAD) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  344) 	{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_WIRELESS2) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  345) 	{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_ASUS_AK1D) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  346) 	{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_ACER_SWITCH12) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  347) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  348) #if IS_ENABLED(CONFIG_HID_CMEDIA)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  349) 	{ HID_USB_DEVICE(USB_VENDOR_ID_CMEDIA, USB_DEVICE_ID_CM6533) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  350) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  351) #if IS_ENABLED(CONFIG_HID_CORSAIR)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  352) 	{ HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_K90) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  353) 	{ HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_GLAIVE_RGB) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  354) 	{ HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_SCIMITAR_PRO_RGB) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  355) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  356) #if IS_ENABLED(CONFIG_HID_CP2112)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  357) 	{ HID_USB_DEVICE(USB_VENDOR_ID_CYGNAL, USB_DEVICE_ID_CYGNAL_CP2112) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  358) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  359) #if IS_ENABLED(CONFIG_HID_CYPRESS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  360) 	{ HID_USB_DEVICE(USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_BARCODE_1) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  361) 	{ HID_USB_DEVICE(USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_BARCODE_2) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  362) 	{ HID_USB_DEVICE(USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_BARCODE_3) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  363) 	{ HID_USB_DEVICE(USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_BARCODE_4) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  364) 	{ HID_USB_DEVICE(USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_MOUSE) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  365) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  366) #if IS_ENABLED(CONFIG_HID_DRAGONRISE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  367) 	{ HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, 0x0006) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  368) 	{ HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, 0x0011) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  369) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  370) #if IS_ENABLED(CONFIG_HID_ELAN)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  371) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ELAN, USB_DEVICE_ID_HP_X2_10_COVER) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  372) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  373) #if IS_ENABLED(CONFIG_HID_ELECOM)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  374) 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_BM084) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  375) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_XT3URBK) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  376) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_XT3DRBK) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  377) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_XT4DRBK) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  378) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_DT1URBK) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  379) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_DT1DRBK) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  380) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_HT1URBK) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  381) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_HT1DRBK) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  382) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  383) #if IS_ENABLED(CONFIG_HID_ELO)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  384) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ELO, 0x0009) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  385) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ELO, 0x0030) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  386) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  387) #if IS_ENABLED(CONFIG_HID_EMS_FF)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  388) 	{ HID_USB_DEVICE(USB_VENDOR_ID_EMS, USB_DEVICE_ID_EMS_TRIO_LINKER_PLUS_II) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  389) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  390) #if IS_ENABLED(CONFIG_HID_EZKEY)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  391) 	{ HID_USB_DEVICE(USB_VENDOR_ID_EZKEY, USB_DEVICE_ID_BTC_8193) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  392) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  393) #if IS_ENABLED(CONFIG_HID_GEMBIRD)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  394) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GEMBIRD, USB_DEVICE_ID_GEMBIRD_JPD_DUALFORCE2) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  395) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  396) #if IS_ENABLED(CONFIG_HID_GFRM)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  397) 	{ HID_BLUETOOTH_DEVICE(0x58, 0x2000) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  398) 	{ HID_BLUETOOTH_DEVICE(0x471, 0x2210) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  399) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  400) #if IS_ENABLED(CONFIG_HID_GREENASIA)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  401) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GREENASIA, 0x0012) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  402) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  403) #if IS_ENABLED(CONFIG_HID_GT683R)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  404) 	{ HID_USB_DEVICE(USB_VENDOR_ID_MSI, USB_DEVICE_ID_MSI_GT683R_LED_PANEL) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  405) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  406) #if IS_ENABLED(CONFIG_HID_GYRATION)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  407) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GYRATION, USB_DEVICE_ID_GYRATION_REMOTE) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  408) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GYRATION, USB_DEVICE_ID_GYRATION_REMOTE_2) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  409) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GYRATION, USB_DEVICE_ID_GYRATION_REMOTE_3) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  410) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  411) #if IS_ENABLED(CONFIG_HID_HOLTEK)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  412) 	{ HID_USB_DEVICE(USB_VENDOR_ID_HOLTEK, USB_DEVICE_ID_HOLTEK_ON_LINE_GRIP) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  413) 	{ HID_USB_DEVICE(USB_VENDOR_ID_HOLTEK_ALT, USB_DEVICE_ID_HOLTEK_ALT_KEYBOARD) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  414) 	{ HID_USB_DEVICE(USB_VENDOR_ID_HOLTEK_ALT, USB_DEVICE_ID_HOLTEK_ALT_MOUSE_A04A) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  415) 	{ HID_USB_DEVICE(USB_VENDOR_ID_HOLTEK_ALT, USB_DEVICE_ID_HOLTEK_ALT_MOUSE_A067) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  416) 	{ HID_USB_DEVICE(USB_VENDOR_ID_HOLTEK_ALT, USB_DEVICE_ID_HOLTEK_ALT_MOUSE_A070) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  417) 	{ HID_USB_DEVICE(USB_VENDOR_ID_HOLTEK_ALT, USB_DEVICE_ID_HOLTEK_ALT_MOUSE_A072) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  418) 	{ HID_USB_DEVICE(USB_VENDOR_ID_HOLTEK_ALT, USB_DEVICE_ID_HOLTEK_ALT_MOUSE_A081) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  419) 	{ HID_USB_DEVICE(USB_VENDOR_ID_HOLTEK_ALT, USB_DEVICE_ID_HOLTEK_ALT_MOUSE_A0C2) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  420) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  421) #if IS_ENABLED(CONFIG_HID_ICADE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  422) 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_ION, USB_DEVICE_ID_ICADE) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  423) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  424) #if IS_ENABLED(CONFIG_HID_JABRA)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  425) 	{ HID_USB_DEVICE(USB_VENDOR_ID_JABRA, HID_ANY_ID) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  426) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  427) #if IS_ENABLED(CONFIG_HID_KENSINGTON)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  428) 	{ HID_USB_DEVICE(USB_VENDOR_ID_KENSINGTON, USB_DEVICE_ID_KS_SLIMBLADE) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  429) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  430) #if IS_ENABLED(CONFIG_HID_KEYTOUCH)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  431) 	{ HID_USB_DEVICE(USB_VENDOR_ID_KEYTOUCH, USB_DEVICE_ID_KEYTOUCH_IEC) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  432) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  433) #if IS_ENABLED(CONFIG_HID_KYE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  434) 	{ HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_GENIUS_GILA_GAMING_MOUSE) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  435) 	{ HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_GENIUS_MANTICORE) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  436) 	{ HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_GENIUS_GX_IMPERATOR) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  437) 	{ HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_ERGO_525V) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  438) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  439) #if IS_ENABLED(CONFIG_HID_LCPOWER)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  440) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LCPOWER, USB_DEVICE_ID_LCPOWER_LC1000) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  441) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  442) #if IS_ENABLED(CONFIG_HID_LENOVO)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  443) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_TPKBD) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  444) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_CUSBKBD) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  445) 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_CBTKBD) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  446) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_TPPRODOCK) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  447) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  448) #if IS_ENABLED(CONFIG_HID_LOGITECH)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  449) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_MX3000_RECEIVER) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  450) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_S510_RECEIVER) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  451) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_RECEIVER) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  452) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_DINOVO_DESKTOP) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  453) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_DINOVO_EDGE) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  454) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_DINOVO_MINI) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  455) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_ELITE_KBD) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  456) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_CORDLESS_DESKTOP_LX500) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  457) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_EXTREME_3D) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  458) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_DUAL_ACTION) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  459) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_WHEEL) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  460) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_RUMBLEPAD_CORD) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  461) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_RUMBLEPAD) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  462) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_RUMBLEPAD2_2) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  463) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_G29_WHEEL) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  464) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_WINGMAN_F3D) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  465) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_WINGMAN_FG) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  466) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_WINGMAN_FFG) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  467) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_FORCE3D_PRO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  468) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_FLIGHT_SYSTEM_G940) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  469) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_MOMO_WHEEL) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  470) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_MOMO_WHEEL2) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  471) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_VIBRATION_WHEEL) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  472) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_DFP_WHEEL) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  473) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_DFGT_WHEEL) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  474) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_G25_WHEEL) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  475) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_G27_WHEEL) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  476) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_WII_WHEEL) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  477) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_RUMBLEPAD2) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  478) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_SPACETRAVELLER) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  479) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_SPACENAVIGATOR) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  480) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  481) #if IS_ENABLED(CONFIG_HID_LOGITECH_HIDPP)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  482) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_G920_WHEEL) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  483) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  484) #if IS_ENABLED(CONFIG_HID_MAGICMOUSE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  485) 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGICMOUSE) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  486) 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGICTRACKPAD) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  487) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  488) #if IS_ENABLED(CONFIG_HID_MAYFLASH)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  489) 	{ HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_PS3) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  490) 	{ HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_DOLPHINBAR) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  491) 	{ HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_GAMECUBE1) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  492) 	{ HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_GAMECUBE2) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  493) 	{ HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_GAMECUBE3) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  494) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  495) #if IS_ENABLED(CONFIG_HID_MICROSOFT)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  496) 	{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_COMFORT_MOUSE_4500) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  497) 	{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_COMFORT_KEYBOARD) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  498) 	{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_SIDEWINDER_GV) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  499) 	{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_NE4K) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  500) 	{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_NE4K_JP) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  501) 	{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_NE7K) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  502) 	{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_LK6K) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  503) 	{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_PRESENTER_8K_USB) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  504) 	{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_DIGITAL_MEDIA_3K) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  505) 	{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_WIRELESS_OPTICAL_DESKTOP_3_0) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  506) 	{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_OFFICE_KB) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  507) 	{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_DIGITAL_MEDIA_7K) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  508) 	{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_DIGITAL_MEDIA_600) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  509) 	{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_DIGITAL_MEDIA_3KV1) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  510) 	{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_POWER_COVER) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  511) 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_PRESENTER_8K_BT) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  512) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  513) #if IS_ENABLED(CONFIG_HID_MONTEREY)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  514) 	{ HID_USB_DEVICE(USB_VENDOR_ID_MONTEREY, USB_DEVICE_ID_GENIUS_KB29E) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  515) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  516) #if IS_ENABLED(CONFIG_HID_MULTITOUCH)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  517) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LG, USB_DEVICE_ID_LG_MELFAS_MT) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  518) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  519) #if IS_ENABLED(CONFIG_HID_WIIMOTE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  520) 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_NINTENDO, USB_DEVICE_ID_NINTENDO_WIIMOTE) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  521) 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_NINTENDO, USB_DEVICE_ID_NINTENDO_WIIMOTE2) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  522) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  523) #if IS_ENABLED(CONFIG_HID_NTI)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  524) 	{ HID_USB_DEVICE(USB_VENDOR_ID_NTI, USB_DEVICE_ID_USB_SUN) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  525) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  526) #if IS_ENABLED(CONFIG_HID_NTRIG)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  527) 	{ HID_USB_DEVICE(USB_VENDOR_ID_NTRIG, USB_DEVICE_ID_NTRIG_TOUCH_SCREEN) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  528) 	{ HID_USB_DEVICE(USB_VENDOR_ID_NTRIG, USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_1) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  529) 	{ HID_USB_DEVICE(USB_VENDOR_ID_NTRIG, USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_2) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  530) 	{ HID_USB_DEVICE(USB_VENDOR_ID_NTRIG, USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_3) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  531) 	{ HID_USB_DEVICE(USB_VENDOR_ID_NTRIG, USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_4) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  532) 	{ HID_USB_DEVICE(USB_VENDOR_ID_NTRIG, USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_5) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  533) 	{ HID_USB_DEVICE(USB_VENDOR_ID_NTRIG, USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_6) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  534) 	{ HID_USB_DEVICE(USB_VENDOR_ID_NTRIG, USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_7) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  535) 	{ HID_USB_DEVICE(USB_VENDOR_ID_NTRIG, USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_8) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  536) 	{ HID_USB_DEVICE(USB_VENDOR_ID_NTRIG, USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_9) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  537) 	{ HID_USB_DEVICE(USB_VENDOR_ID_NTRIG, USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_10) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  538) 	{ HID_USB_DEVICE(USB_VENDOR_ID_NTRIG, USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_11) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  539) 	{ HID_USB_DEVICE(USB_VENDOR_ID_NTRIG, USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_12) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  540) 	{ HID_USB_DEVICE(USB_VENDOR_ID_NTRIG, USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_13) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  541) 	{ HID_USB_DEVICE(USB_VENDOR_ID_NTRIG, USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_14) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  542) 	{ HID_USB_DEVICE(USB_VENDOR_ID_NTRIG, USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_15) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  543) 	{ HID_USB_DEVICE(USB_VENDOR_ID_NTRIG, USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_16) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  544) 	{ HID_USB_DEVICE(USB_VENDOR_ID_NTRIG, USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_17) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  545) 	{ HID_USB_DEVICE(USB_VENDOR_ID_NTRIG, USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_18) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  546) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  547) #if IS_ENABLED(CONFIG_HID_ORTEK)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  548) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ORTEK, USB_DEVICE_ID_ORTEK_PKB1700) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  549) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ORTEK, USB_DEVICE_ID_ORTEK_WKB2000) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  550) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ORTEK, USB_DEVICE_ID_ORTEK_IHOME_IMAC_A210S) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  551) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SKYCABLE, USB_DEVICE_ID_SKYCABLE_WIRELESS_PRESENTER) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  552) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  553) #if IS_ENABLED(CONFIG_HID_PANTHERLORD)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  554) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GAMERON, USB_DEVICE_ID_GAMERON_DUAL_PSX_ADAPTOR) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  555) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GAMERON, USB_DEVICE_ID_GAMERON_DUAL_PCS_ADAPTOR) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  556) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GREENASIA, 0x0003) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  557) 	{ HID_USB_DEVICE(USB_VENDOR_ID_JESS2, USB_DEVICE_ID_JESS2_COLOR_RUMBLE_PAD) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  558) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  559) #if IS_ENABLED(CONFIG_HID_PENMOUNT)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  560) 	{ HID_USB_DEVICE(USB_VENDOR_ID_PENMOUNT, USB_DEVICE_ID_PENMOUNT_6000) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  561) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  562) #if IS_ENABLED(CONFIG_HID_PETALYNX)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  563) 	{ HID_USB_DEVICE(USB_VENDOR_ID_PETALYNX, USB_DEVICE_ID_PETALYNX_MAXTER_REMOTE) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  564) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  565) #if IS_ENABLED(CONFIG_HID_PICOLCD)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  566) 	{ HID_USB_DEVICE(USB_VENDOR_ID_MICROCHIP, USB_DEVICE_ID_PICOLCD) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  567) 	{ HID_USB_DEVICE(USB_VENDOR_ID_MICROCHIP, USB_DEVICE_ID_PICOLCD_BOOTLOADER) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  568) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  569) #if IS_ENABLED(CONFIG_HID_PLANTRONICS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  570) 	{ HID_USB_DEVICE(USB_VENDOR_ID_PLANTRONICS, HID_ANY_ID) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  571) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  572) #if IS_ENABLED(CONFIG_HID_PRIMAX)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  573) 	{ HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_KEYBOARD) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  574) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  575) #if IS_ENABLED(CONFIG_HID_PRODIKEYS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  576) 	{ HID_USB_DEVICE(USB_VENDOR_ID_CREATIVELABS, USB_DEVICE_ID_PRODIKEYS_PCMIDI) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  577) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  578) #if IS_ENABLED(CONFIG_HID_RETRODE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  579) 	{ HID_USB_DEVICE(USB_VENDOR_ID_FUTURE_TECHNOLOGY, USB_DEVICE_ID_RETRODE2) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  580) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  581) #if IS_ENABLED(CONFIG_HID_RMI)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  582) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_X1_COVER) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  583) 	{ HID_USB_DEVICE(USB_VENDOR_ID_RAZER, USB_DEVICE_ID_RAZER_BLADE_14) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  584) 	{ HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_REZEL) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  585) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  586) #if IS_ENABLED(CONFIG_HID_ROCCAT)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  587) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_ARVO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  588) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_ISKU) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  589) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_ISKUFX) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  590) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_KONE) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  591) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_KONEPLUS) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  592) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_KONEPURE) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  593) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_KONEPURE_OPTICAL) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  594) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_KONEXTD) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  595) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_KOVAPLUS) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  596) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_LUA) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  597) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_PYRA_WIRED) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  598) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_PYRA_WIRELESS) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  599) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_RYOS_MK) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  600) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_RYOS_MK_GLOW) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  601) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_RYOS_MK_PRO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  602) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_SAVU) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  603) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  604) #if IS_ENABLED(CONFIG_HID_SAITEK)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  605) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_PS1000) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  606) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_RAT7_OLD) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  607) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_RAT7) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  608) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_RAT9) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  609) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_MMO7) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  610) 	{ HID_USB_DEVICE(USB_VENDOR_ID_MADCATZ, USB_DEVICE_ID_MADCATZ_RAT5) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  611) 	{ HID_USB_DEVICE(USB_VENDOR_ID_MADCATZ, USB_DEVICE_ID_MADCATZ_RAT9) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  612) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  613) #if IS_ENABLED(CONFIG_HID_SAMSUNG)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  614) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SAMSUNG, USB_DEVICE_ID_SAMSUNG_IR_REMOTE) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  615) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SAMSUNG, USB_DEVICE_ID_SAMSUNG_WIRELESS_KBD_MOUSE) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  616) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  617) #if IS_ENABLED(CONFIG_HID_SMARTJOYPLUS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  618) 	{ HID_USB_DEVICE(USB_VENDOR_ID_PLAYDOTCOM, USB_DEVICE_ID_PLAYDOTCOM_EMS_USBII) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  619) 	{ HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_SMARTJOY_PLUS) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  620) 	{ HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_SUPER_JOY_BOX_3) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  621) 	{ HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_DUAL_USB_JOYPAD) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  622) 	{ HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP_LTD, USB_DEVICE_ID_SUPER_JOY_BOX_3_PRO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  623) 	{ HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP_LTD, USB_DEVICE_ID_SUPER_DUAL_BOX_PRO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  624) 	{ HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP_LTD, USB_DEVICE_ID_SUPER_JOY_BOX_5_PRO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  625) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  626) #if IS_ENABLED(CONFIG_HID_SONY)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  627) 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_PS3) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  628) 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_SMK, USB_DEVICE_ID_SMK_PS3_BDREMOTE) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  629) 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_SMK, USB_DEVICE_ID_SMK_NSG_MR5U_REMOTE) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  630) 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_SMK, USB_DEVICE_ID_SMK_NSG_MR7U_REMOTE) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  631) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_BUZZ_CONTROLLER) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  632) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_WIRELESS_BUZZ_CONTROLLER) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  633) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_MOTION_CONTROLLER) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  634) 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_MOTION_CONTROLLER) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  635) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_NAVIGATION_CONTROLLER) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  636) 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_NAVIGATION_CONTROLLER) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  637) 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_PS3_BDREMOTE) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  638) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_PS3_CONTROLLER) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  639) 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_PS3_CONTROLLER) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  640) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_PS4_CONTROLLER) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  641) 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_PS4_CONTROLLER) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  642) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_PS4_CONTROLLER_2) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  643) 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_PS4_CONTROLLER_2) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  644) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_PS4_CONTROLLER_DONGLE) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  645) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_VAIO_VGX_MOUSE) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  646) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_VAIO_VGP_MOUSE) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  647) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SINO_LITE, USB_DEVICE_ID_SINO_LITE_CONTROLLER) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  648) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  649) #if IS_ENABLED(CONFIG_HID_SPEEDLINK)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  650) 	{ HID_USB_DEVICE(USB_VENDOR_ID_X_TENSIONS, USB_DEVICE_ID_SPEEDLINK_VAD_CEZANNE) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  651) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  652) #if IS_ENABLED(CONFIG_HID_STEELSERIES)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  653) 	{ HID_USB_DEVICE(USB_VENDOR_ID_STEELSERIES, USB_DEVICE_ID_STEELSERIES_SRWS1) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  654) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  655) #if IS_ENABLED(CONFIG_HID_SUNPLUS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  656) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SUNPLUS, USB_DEVICE_ID_SUNPLUS_WDESKTOP) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  657) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  658) #if IS_ENABLED(CONFIG_HID_THRUSTMASTER)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  659) 	{ HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb300) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  660) 	{ HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb304) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  661) 	{ HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb323) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  662) 	{ HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb324) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  663) 	{ HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb605) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  664) 	{ HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb651) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  665) 	{ HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb653) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  666) 	{ HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb654) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  667) 	{ HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb65a) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  668) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  669) #if IS_ENABLED(CONFIG_HID_TIVO)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  670) 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_TIVO, USB_DEVICE_ID_TIVO_SLIDE_BT) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  671) 	{ HID_USB_DEVICE(USB_VENDOR_ID_TIVO, USB_DEVICE_ID_TIVO_SLIDE) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  672) 	{ HID_USB_DEVICE(USB_VENDOR_ID_TIVO, USB_DEVICE_ID_TIVO_SLIDE_PRO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  673) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  674) #if IS_ENABLED(CONFIG_HID_TOPSEED)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  675) 	{ HID_USB_DEVICE(USB_VENDOR_ID_BTC, USB_DEVICE_ID_BTC_EMPREX_REMOTE) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  676) 	{ HID_USB_DEVICE(USB_VENDOR_ID_BTC, USB_DEVICE_ID_BTC_EMPREX_REMOTE_2) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  677) 	{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_WIRELESS) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  678) 	{ HID_USB_DEVICE(USB_VENDOR_ID_TOPSEED, USB_DEVICE_ID_TOPSEED_CYBERLINK) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  679) 	{ HID_USB_DEVICE(USB_VENDOR_ID_TOPSEED2, USB_DEVICE_ID_TOPSEED2_RF_COMBO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  680) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  681) #if IS_ENABLED(CONFIG_HID_TWINHAN)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  682) 	{ HID_USB_DEVICE(USB_VENDOR_ID_TWINHAN, USB_DEVICE_ID_TWINHAN_IR_REMOTE) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  683) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  684) #if IS_ENABLED(CONFIG_HID_UDRAW_PS3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  685) 	{ HID_USB_DEVICE(USB_VENDOR_ID_THQ, USB_DEVICE_ID_THQ_PS3_UDRAW) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  686) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  687) #if IS_ENABLED(CONFIG_HID_XINMO)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  688) 	{ HID_USB_DEVICE(USB_VENDOR_ID_XIN_MO, USB_DEVICE_ID_XIN_MO_DUAL_ARCADE) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  689) 	{ HID_USB_DEVICE(USB_VENDOR_ID_XIN_MO, USB_DEVICE_ID_THT_2P_ARCADE) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  690) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  691) #if IS_ENABLED(CONFIG_HID_ZEROPLUS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  692) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ZEROPLUS, 0x0005) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  693) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ZEROPLUS, 0x0030) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  694) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  695) #if IS_ENABLED(CONFIG_HID_ZYDACRON)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  696) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ZYDACRON, USB_DEVICE_ID_ZYDACRON_REMOTE_CONTROL) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  697) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  698) 	{ }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  699) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  700) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  701) /* a list of devices that shouldn't be handled by HID core at all */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  702) static const struct hid_device_id hid_ignore_list[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  703) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ACECAD, USB_DEVICE_ID_ACECAD_FLAIR) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  704) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ACECAD, USB_DEVICE_ID_ACECAD_302) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  705) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ADS_TECH, USB_DEVICE_ID_ADS_TECH_RADIO_SI470X) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  706) 	{ HID_USB_DEVICE(USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_01) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  707) 	{ HID_USB_DEVICE(USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_10) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  708) 	{ HID_USB_DEVICE(USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_20) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  709) 	{ HID_USB_DEVICE(USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_21) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  710) 	{ HID_USB_DEVICE(USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_22) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  711) 	{ HID_USB_DEVICE(USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_23) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  712) 	{ HID_USB_DEVICE(USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_24) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  713) 	{ HID_USB_DEVICE(USB_VENDOR_ID_AIRCABLE, USB_DEVICE_ID_AIRCABLE1) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  714) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ALCOR, USB_DEVICE_ID_ALCOR_USBRS232) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  715) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_LCM)},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  716) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_LCM2)},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  717) 	{ HID_USB_DEVICE(USB_VENDOR_ID_AVERMEDIA, USB_DEVICE_ID_AVER_FM_MR800) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  718) 	{ HID_USB_DEVICE(USB_VENDOR_ID_AXENTIA, USB_DEVICE_ID_AXENTIA_FM_RADIO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  719) 	{ HID_USB_DEVICE(USB_VENDOR_ID_BERKSHIRE, USB_DEVICE_ID_BERKSHIRE_PCWD) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  720) 	{ HID_USB_DEVICE(USB_VENDOR_ID_CIDC, 0x0103) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  721) 	{ HID_USB_DEVICE(USB_VENDOR_ID_CYGNAL, USB_DEVICE_ID_CYGNAL_RADIO_SI470X) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  722) 	{ HID_USB_DEVICE(USB_VENDOR_ID_CYGNAL, USB_DEVICE_ID_CYGNAL_RADIO_SI4713) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  723) 	{ HID_USB_DEVICE(USB_VENDOR_ID_CMEDIA, USB_DEVICE_ID_CM109) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  724) 	{ HID_USB_DEVICE(USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_HIDCOM) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  725) 	{ HID_USB_DEVICE(USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_ULTRAMOUSE) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  726) 	{ HID_USB_DEVICE(USB_VENDOR_ID_DEALEXTREAME, USB_DEVICE_ID_DEALEXTREAME_RADIO_SI4701) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  727) 	{ HID_USB_DEVICE(USB_VENDOR_ID_DELORME, USB_DEVICE_ID_DELORME_EARTHMATE) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  728) 	{ HID_USB_DEVICE(USB_VENDOR_ID_DELORME, USB_DEVICE_ID_DELORME_EM_LT20) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  729) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ESSENTIAL_REALITY, USB_DEVICE_ID_ESSENTIAL_REALITY_P5) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  730) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ETT, USB_DEVICE_ID_TC5UH) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  731) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ETT, USB_DEVICE_ID_TC4UM) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  732) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GENERAL_TOUCH, 0x0001) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  733) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GENERAL_TOUCH, 0x0002) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  734) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GENERAL_TOUCH, 0x0004) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  735) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GOTOP, USB_DEVICE_ID_SUPER_Q2) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  736) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GOTOP, USB_DEVICE_ID_GOGOPEN) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  737) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GOTOP, USB_DEVICE_ID_PENPOWER) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  738) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GRETAGMACBETH, USB_DEVICE_ID_GRETAGMACBETH_HUEY) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  739) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GRIFFIN, USB_DEVICE_ID_POWERMATE) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  740) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GRIFFIN, USB_DEVICE_ID_SOUNDKNOB) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  741) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GRIFFIN, USB_DEVICE_ID_RADIOSHARK) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  742) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_90) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  743) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_100) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  744) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_101) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  745) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_103) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  746) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_104) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  747) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_105) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  748) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_106) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  749) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_107) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  750) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_108) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  751) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_200) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  752) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_201) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  753) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_202) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  754) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_203) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  755) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_204) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  756) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_205) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  757) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_206) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  758) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_207) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  759) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_300) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  760) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_301) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  761) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_302) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  762) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_303) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  763) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_304) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  764) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_305) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  765) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_306) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  766) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_307) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  767) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_308) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  768) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_309) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  769) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_400) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  770) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_401) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  771) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_402) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  772) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_403) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  773) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_404) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  774) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_405) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  775) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_500) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  776) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_501) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  777) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_502) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  778) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_503) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  779) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_504) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  780) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1000) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  781) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1001) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  782) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1002) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  783) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1003) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  784) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1004) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  785) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1005) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  786) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1006) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  787) 	{ HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1007) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  788) 	{ HID_USB_DEVICE(USB_VENDOR_ID_IMATION, USB_DEVICE_ID_DISC_STAKKA) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  789) 	{ HID_USB_DEVICE(USB_VENDOR_ID_JABRA, USB_DEVICE_ID_JABRA_GN9350E) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  790) 	{ HID_USB_DEVICE(USB_VENDOR_ID_KBGEAR, USB_DEVICE_ID_KBGEAR_JAMSTUDIO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  791) 	{ HID_USB_DEVICE(USB_VENDOR_ID_KWORLD, USB_DEVICE_ID_KWORLD_RADIO_FM700) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  792) 	{ HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_GPEN_560) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  793) 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_KYE, 0x0058) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  794) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_CASSY) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  795) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_CASSY2) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  796) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_POCKETCASSY) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  797) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_POCKETCASSY2) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  798) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MOBILECASSY) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  799) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MOBILECASSY2) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  800) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MICROCASSYVOLTAGE) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  801) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MICROCASSYCURRENT) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  802) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MICROCASSYTIME) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  803) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MICROCASSYTEMPERATURE) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  804) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MICROCASSYPH) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  805) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_POWERANALYSERCASSY) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  806) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_CONVERTERCONTROLLERCASSY) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  807) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MACHINETESTCASSY) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  808) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_JWM) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  809) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_DMMP) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  810) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_UMIP) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  811) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_UMIC) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  812) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_UMIB) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  813) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_XRAY) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  814) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_XRAY2) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  815) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_VIDEOCOM) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  816) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MOTOR) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  817) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_COM3LAB) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  818) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_TELEPORT) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  819) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_NETWORKANALYSER) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  820) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_POWERCONTROL) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  821) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MACHINETEST) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  822) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MOSTANALYSER) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  823) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MOSTANALYSER2) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  824) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_ABSESP) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  825) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_AUTODATABUS) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  826) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MCT) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  827) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_HYBRID) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  828) 	{ HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_HEATCONTROL) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  829) 	{ HID_USB_DEVICE(USB_VENDOR_ID_MADCATZ, USB_DEVICE_ID_MADCATZ_BEATPAD) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  830) 	{ HID_USB_DEVICE(USB_VENDOR_ID_MCC, USB_DEVICE_ID_MCC_PMD1024LS) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  831) 	{ HID_USB_DEVICE(USB_VENDOR_ID_MCC, USB_DEVICE_ID_MCC_PMD1208LS) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  832) 	{ HID_USB_DEVICE(USB_VENDOR_ID_MICROCHIP, USB_DEVICE_ID_PICKIT1) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  833) 	{ HID_USB_DEVICE(USB_VENDOR_ID_MICROCHIP, USB_DEVICE_ID_PICKIT2) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  834) 	{ HID_USB_DEVICE(USB_VENDOR_ID_MICROCHIP, USB_DEVICE_ID_PICK16F1454) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  835) 	{ HID_USB_DEVICE(USB_VENDOR_ID_MICROCHIP, USB_DEVICE_ID_PICK16F1454_V2) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  836) 	{ HID_USB_DEVICE(USB_VENDOR_ID_NATIONAL_SEMICONDUCTOR, USB_DEVICE_ID_N_S_HARMONY) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  837) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ONTRAK, USB_DEVICE_ID_ONTRAK_ADU100) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  838) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ONTRAK, USB_DEVICE_ID_ONTRAK_ADU100 + 20) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  839) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ONTRAK, USB_DEVICE_ID_ONTRAK_ADU100 + 30) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  840) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ONTRAK, USB_DEVICE_ID_ONTRAK_ADU100 + 100) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  841) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ONTRAK, USB_DEVICE_ID_ONTRAK_ADU100 + 108) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  842) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ONTRAK, USB_DEVICE_ID_ONTRAK_ADU100 + 118) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  843) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ONTRAK, USB_DEVICE_ID_ONTRAK_ADU100 + 200) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  844) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ONTRAK, USB_DEVICE_ID_ONTRAK_ADU100 + 300) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  845) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ONTRAK, USB_DEVICE_ID_ONTRAK_ADU100 + 400) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  846) 	{ HID_USB_DEVICE(USB_VENDOR_ID_ONTRAK, USB_DEVICE_ID_ONTRAK_ADU100 + 500) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  847) 	{ HID_USB_DEVICE(USB_VENDOR_ID_PANJIT, 0x0001) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  848) 	{ HID_USB_DEVICE(USB_VENDOR_ID_PANJIT, 0x0002) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  849) 	{ HID_USB_DEVICE(USB_VENDOR_ID_PANJIT, 0x0003) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  850) 	{ HID_USB_DEVICE(USB_VENDOR_ID_PANJIT, 0x0004) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  851) 	{ HID_USB_DEVICE(USB_VENDOR_ID_PETZL, USB_DEVICE_ID_PETZL_HEADLAMP) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  852) 	{ HID_USB_DEVICE(USB_VENDOR_ID_PHILIPS, USB_DEVICE_ID_PHILIPS_IEEE802154_DONGLE) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  853) 	{ HID_USB_DEVICE(USB_VENDOR_ID_POWERCOM, USB_DEVICE_ID_POWERCOM_UPS) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  854) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SAI, USB_DEVICE_ID_CYPRESS_HIDCOM) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  855) #if IS_ENABLED(CONFIG_MOUSE_SYNAPTICS_USB)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  856) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_TP) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  857) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_INT_TP) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  858) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_CPAD) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  859) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_STICK) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  860) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_WP) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  861) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_COMP_TP) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  862) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_WTP) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  863) 	{ HID_USB_DEVICE(USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_DPAD) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  864) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  865) 	{ HID_USB_DEVICE(USB_VENDOR_ID_YEALINK, USB_DEVICE_ID_YEALINK_P1K_P4K_B2K) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  866) 	{ }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  867) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  868) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  869) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  870)  * hid_mouse_ignore_list - mouse devices which should not be handled by the hid layer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  871)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  872)  * There are composite devices for which we want to ignore only a certain
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  873)  * interface. This is a list of devices for which only the mouse interface will
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  874)  * be ignored. This allows a dedicated driver to take care of the interface.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  875)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  876) static const struct hid_device_id hid_mouse_ignore_list[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  877) 	/* appletouch driver */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  878) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_ANSI) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  879) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_ISO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  880) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_ANSI) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  881) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_ISO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  882) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_JIS) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  883) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_ANSI) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  884) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_ISO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  885) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_JIS) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  886) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ANSI) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  887) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ISO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  888) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_JIS) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  889) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_ANSI) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  890) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_ISO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  891) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_JIS) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  892) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING_ANSI) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  893) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING_ISO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  894) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING_JIS) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  895) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING2_ANSI) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  896) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING2_ISO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  897) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING2_JIS) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  898) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_ANSI) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  899) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_ISO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  900) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_JIS) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  901) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4_ANSI) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  902) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4_ISO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  903) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4_JIS) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  904) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4A_ANSI) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  905) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4A_ISO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  906) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4A_JIS) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  907) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING5_ANSI) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  908) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING5_ISO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  909) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING5_JIS) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  910) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING5A_ANSI) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  911) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING5A_ISO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  912) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING5A_JIS) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  913) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6_ANSI) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  914) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6_ISO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  915) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6_JIS) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  916) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6A_ANSI) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  917) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6A_ISO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  918) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6A_JIS) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  919) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7_ANSI) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  920) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7_ISO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  921) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7_JIS) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  922) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7A_ANSI) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  923) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7A_ISO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  924) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7A_JIS) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  925) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING8_ANSI) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  926) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING8_ISO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  927) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING8_JIS) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  928) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING9_ANSI) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  929) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING9_ISO) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  930) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING9_JIS) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  931) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  932) 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  933) 	{ }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  934) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  935) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  936) bool hid_ignore(struct hid_device *hdev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  937) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  938) 	int i;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  939) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  940) 	if (hdev->quirks & HID_QUIRK_NO_IGNORE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  941) 		return false;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  942) 	if (hdev->quirks & HID_QUIRK_IGNORE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  943) 		return true;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  944) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  945) 	switch (hdev->vendor) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  946) 	case USB_VENDOR_ID_CODEMERCS:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  947) 		/* ignore all Code Mercenaries IOWarrior devices */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  948) 		if (hdev->product >= USB_DEVICE_ID_CODEMERCS_IOW_FIRST &&
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  949) 		    hdev->product <= USB_DEVICE_ID_CODEMERCS_IOW_LAST)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  950) 			return true;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  951) 		break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  952) 	case USB_VENDOR_ID_LOGITECH:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  953) 		if (hdev->product >= USB_DEVICE_ID_LOGITECH_HARMONY_FIRST &&
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  954) 		    hdev->product <= USB_DEVICE_ID_LOGITECH_HARMONY_LAST)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  955) 			return true;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  956) 		/*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  957) 		 * The Keene FM transmitter USB device has the same USB ID as
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  958) 		 * the Logitech AudioHub Speaker, but it should ignore the hid.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  959) 		 * Check if the name is that of the Keene device.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  960) 		 * For reference: the name of the AudioHub is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  961) 		 * "HOLTEK  AudioHub Speaker".
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  962) 		 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  963) 		if (hdev->product == USB_DEVICE_ID_LOGITECH_AUDIOHUB &&
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  964) 		    !strcmp(hdev->name, "HOLTEK  B-LINK USB Audio  "))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  965) 			return true;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  966) 		break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  967) 	case USB_VENDOR_ID_SOUNDGRAPH:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  968) 		if (hdev->product >= USB_DEVICE_ID_SOUNDGRAPH_IMON_FIRST &&
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  969) 		    hdev->product <= USB_DEVICE_ID_SOUNDGRAPH_IMON_LAST)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  970) 			return true;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  971) 		break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  972) 	case USB_VENDOR_ID_HANWANG:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  973) 		if (hdev->product >= USB_DEVICE_ID_HANWANG_TABLET_FIRST &&
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  974) 		    hdev->product <= USB_DEVICE_ID_HANWANG_TABLET_LAST)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  975) 			return true;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  976) 		break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  977) 	case USB_VENDOR_ID_JESS:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  978) 		if (hdev->product == USB_DEVICE_ID_JESS_YUREX &&
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  979) 		    hdev->type == HID_TYPE_USBNONE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  980) 			return true;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  981) 		break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  982) 	case USB_VENDOR_ID_VELLEMAN:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  983) 		/* These are not HID devices.  They are handled by comedi. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  984) 		if ((hdev->product >= USB_DEVICE_ID_VELLEMAN_K8055_FIRST &&
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  985) 		     hdev->product <= USB_DEVICE_ID_VELLEMAN_K8055_LAST) ||
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  986) 		    (hdev->product >= USB_DEVICE_ID_VELLEMAN_K8061_FIRST &&
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  987) 		     hdev->product <= USB_DEVICE_ID_VELLEMAN_K8061_LAST))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  988) 			return true;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  989) 		break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  990) 	case USB_VENDOR_ID_ATMEL_V_USB:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  991) 		/* Masterkit MA901 usb radio based on Atmel tiny85 chip and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  992) 		 * it has the same USB ID as many Atmel V-USB devices. This
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  993) 		 * usb radio is handled by radio-ma901.c driver so we want
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  994) 		 * ignore the hid. Check the name, bus, product and ignore
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  995) 		 * if we have MA901 usb radio.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  996) 		 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  997) 		if (hdev->product == USB_DEVICE_ID_ATMEL_V_USB &&
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  998) 		    hdev->bus == BUS_USB &&
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  999) 		    strncmp(hdev->name, "www.masterkit.ru MA901", 22) == 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1000) 			return true;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1001) 		break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1002) 	case USB_VENDOR_ID_ELAN:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1003) 		/*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1004) 		 * Blacklist of everything that gets handled by the elan_i2c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1005) 		 * input driver.  This avoids disabling valid touchpads and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1006) 		 * other ELAN devices.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1007) 		 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1008) 		if ((hdev->product == 0x0401 || hdev->product == 0x0400))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1009) 			for (i = 0; strlen(elan_acpi_id[i].id); ++i)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1010) 				if (!strncmp(hdev->name, elan_acpi_id[i].id,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1011) 					     strlen(elan_acpi_id[i].id)))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1012) 					return true;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1013) 		break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1014) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1015) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1016) 	if (hdev->type == HID_TYPE_USBMOUSE &&
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1017) 	    hid_match_id(hdev, hid_mouse_ignore_list))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1018) 		return true;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1019) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1020) 	return !!hid_match_id(hdev, hid_ignore_list);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1021) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1022) EXPORT_SYMBOL_GPL(hid_ignore);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1023) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1024) /* Dynamic HID quirks list - specified at runtime */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1025) struct quirks_list_struct {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1026) 	struct hid_device_id hid_bl_item;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1027) 	struct list_head node;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1028) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1029) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1030) static LIST_HEAD(dquirks_list);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1031) static DEFINE_MUTEX(dquirks_lock);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1032) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1033) /* Runtime ("dynamic") quirks manipulation functions */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1034) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1035) /**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1036)  * hid_exists_dquirk: find any dynamic quirks for a HID device
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1037)  * @hdev: the HID device to match
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1038)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1039)  * Description:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1040)  *         Scans dquirks_list for a matching dynamic quirk and returns
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1041)  *         the pointer to the relevant struct hid_device_id if found.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1042)  *         Must be called with a read lock held on dquirks_lock.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1043)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1044)  * Returns: NULL if no quirk found, struct hid_device_id * if found.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1045)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1046) static struct hid_device_id *hid_exists_dquirk(const struct hid_device *hdev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1047) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1048) 	struct quirks_list_struct *q;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1049) 	struct hid_device_id *bl_entry = NULL;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1050) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1051) 	list_for_each_entry(q, &dquirks_list, node) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1052) 		if (hid_match_one_id(hdev, &q->hid_bl_item)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1053) 			bl_entry = &q->hid_bl_item;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1054) 			break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1055) 		}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1056) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1057) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1058) 	if (bl_entry != NULL)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1059) 		dbg_hid("Found dynamic quirk 0x%lx for HID device 0x%04x:0x%04x\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1060) 			bl_entry->driver_data, bl_entry->vendor,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1061) 			bl_entry->product);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1062) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1063) 	return bl_entry;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1064) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1065) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1066) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1067) /**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1068)  * hid_modify_dquirk: add/replace a HID quirk
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1069)  * @id: the HID device to match
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1070)  * @quirks: the unsigned long quirks value to add/replace
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1071)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1072)  * Description:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1073)  *         If an dynamic quirk exists in memory for this device, replace its
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1074)  *         quirks value with what was provided.  Otherwise, add the quirk
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1075)  *         to the dynamic quirks list.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1076)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1077)  * Returns: 0 OK, -error on failure.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1078)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1079) static int hid_modify_dquirk(const struct hid_device_id *id,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1080) 			     const unsigned long quirks)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1081) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1082) 	struct hid_device *hdev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1083) 	struct quirks_list_struct *q_new, *q;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1084) 	int list_edited = 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1085) 	int ret = 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1086) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1087) 	hdev = kzalloc(sizeof(*hdev), GFP_KERNEL);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1088) 	if (!hdev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1089) 		return -ENOMEM;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1090) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1091) 	q_new = kmalloc(sizeof(struct quirks_list_struct), GFP_KERNEL);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1092) 	if (!q_new) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1093) 		ret = -ENOMEM;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1094) 		goto out;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1095) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1096) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1097) 	hdev->bus = q_new->hid_bl_item.bus = id->bus;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1098) 	hdev->group = q_new->hid_bl_item.group = id->group;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1099) 	hdev->vendor = q_new->hid_bl_item.vendor = id->vendor;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1100) 	hdev->product = q_new->hid_bl_item.product = id->product;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1101) 	q_new->hid_bl_item.driver_data = quirks;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1102) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1103) 	mutex_lock(&dquirks_lock);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1104) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1105) 	list_for_each_entry(q, &dquirks_list, node) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1106) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1107) 		if (hid_match_one_id(hdev, &q->hid_bl_item)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1108) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1109) 			list_replace(&q->node, &q_new->node);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1110) 			kfree(q);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1111) 			list_edited = 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1112) 			break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1113) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1114) 		}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1115) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1116) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1117) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1118) 	if (!list_edited)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1119) 		list_add_tail(&q_new->node, &dquirks_list);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1120) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1121) 	mutex_unlock(&dquirks_lock);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1122) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1123)  out:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1124) 	kfree(hdev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1125) 	return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1126) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1127) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1128) /**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1129)  * hid_remove_all_dquirks: remove all runtime HID quirks from memory
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1130)  * @bus: bus to match against. Use HID_BUS_ANY if all need to be removed.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1131)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1132)  * Description:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1133)  *         Free all memory associated with dynamic quirks - called before
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1134)  *         module unload.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1135)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1136)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1137) static void hid_remove_all_dquirks(__u16 bus)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1138) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1139) 	struct quirks_list_struct *q, *temp;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1140) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1141) 	mutex_lock(&dquirks_lock);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1142) 	list_for_each_entry_safe(q, temp, &dquirks_list, node) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1143) 		if (bus == HID_BUS_ANY || bus == q->hid_bl_item.bus) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1144) 			list_del(&q->node);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1145) 			kfree(q);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1146) 		}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1147) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1148) 	mutex_unlock(&dquirks_lock);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1149) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1150) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1151) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1152) /**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1153)  * hid_quirks_init: apply HID quirks specified at module load time
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1154)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1155) int hid_quirks_init(char **quirks_param, __u16 bus, int count)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1156) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1157) 	struct hid_device_id id = { 0 };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1158) 	int n = 0, m;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1159) 	unsigned short int vendor, product;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1160) 	u32 quirks;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1161) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1162) 	id.bus = bus;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1163) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1164) 	for (; n < count && quirks_param[n]; n++) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1165) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1166) 		m = sscanf(quirks_param[n], "0x%hx:0x%hx:0x%x",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1167) 				&vendor, &product, &quirks);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1168) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1169) 		id.vendor = (__u16)vendor;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1170) 		id.product = (__u16)product;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1171) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1172) 		if (m != 3 ||
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1173) 		    hid_modify_dquirk(&id, quirks) != 0) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1174) 			pr_warn("Could not parse HID quirk module param %s\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1175) 				quirks_param[n]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1176) 		}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1177) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1178) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1179) 	return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1180) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1181) EXPORT_SYMBOL_GPL(hid_quirks_init);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1182) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1183) /**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1184)  * hid_quirks_exit: release memory associated with dynamic_quirks
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1185)  * @bus: a bus to match against
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1186)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1187)  * Description:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1188)  *     Release all memory associated with dynamic quirks for a given bus.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1189)  *     Called upon module unload.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1190)  *     Use HID_BUS_ANY to remove all dynamic quirks.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1191)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1192)  * Returns: nothing
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1193)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1194) void hid_quirks_exit(__u16 bus)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1195) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1196) 	hid_remove_all_dquirks(bus);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1197) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1198) EXPORT_SYMBOL_GPL(hid_quirks_exit);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1199) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1200) /**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1201)  * hid_gets_squirk: return any static quirks for a HID device
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1202)  * @hdev: the HID device to match
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1203)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1204)  * Description:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1205)  *     Given a HID device, return a pointer to the quirked hid_device_id entry
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1206)  *     associated with that device.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1207)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1208)  * Returns: the quirks.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1209)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1210) static unsigned long hid_gets_squirk(const struct hid_device *hdev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1211) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1212) 	const struct hid_device_id *bl_entry;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1213) 	unsigned long quirks = 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1214) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1215) 	if (hid_match_id(hdev, hid_ignore_list))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1216) 		quirks |= HID_QUIRK_IGNORE;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1217) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1218) 	if (hid_match_id(hdev, hid_have_special_driver))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1219) 		quirks |= HID_QUIRK_HAVE_SPECIAL_DRIVER;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1220) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1221) 	bl_entry = hid_match_id(hdev, hid_quirks);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1222) 	if (bl_entry != NULL)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1223) 		quirks |= bl_entry->driver_data;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1224) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1225) 	if (quirks)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1226) 		dbg_hid("Found squirk 0x%lx for HID device 0x%04x:0x%04x\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1227) 			quirks, hdev->vendor, hdev->product);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1228) 	return quirks;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1229) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1230) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1231) /**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1232)  * hid_lookup_quirk: return any quirks associated with a HID device
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1233)  * @hdev: the HID device to look for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1234)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1235)  * Description:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1236)  *     Given a HID device, return any quirks associated with that device.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1237)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1238)  * Returns: an unsigned long quirks value.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1239)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1240) unsigned long hid_lookup_quirk(const struct hid_device *hdev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1241) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1242) 	unsigned long quirks = 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1243) 	const struct hid_device_id *quirk_entry = NULL;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1244) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1245) 	/* NCR devices must not be queried for reports */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1246) 	if (hdev->bus == BUS_USB &&
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1247) 	    hdev->vendor == USB_VENDOR_ID_NCR &&
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1248) 	    hdev->product >= USB_DEVICE_ID_NCR_FIRST &&
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1249) 	    hdev->product <= USB_DEVICE_ID_NCR_LAST)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1250) 		return HID_QUIRK_NO_INIT_REPORTS;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1251) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1252) 	/* These devices must be ignored if version (bcdDevice) is too old */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1253) 	if (hdev->bus == BUS_USB && hdev->vendor == USB_VENDOR_ID_JABRA) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1254) 		switch (hdev->product) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1255) 		case USB_DEVICE_ID_JABRA_SPEAK_410:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1256) 			if (hdev->version < 0x0111)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1257) 				return HID_QUIRK_IGNORE;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1258) 			break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1259) 		case USB_DEVICE_ID_JABRA_SPEAK_510:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1260) 			if (hdev->version < 0x0214)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1261) 				return HID_QUIRK_IGNORE;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1262) 			break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1263) 		}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1264) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1265) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1266) 	mutex_lock(&dquirks_lock);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1267) 	quirk_entry = hid_exists_dquirk(hdev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1268) 	if (quirk_entry)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1269) 		quirks = quirk_entry->driver_data;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1270) 	else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1271) 		quirks = hid_gets_squirk(hdev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1272) 	mutex_unlock(&dquirks_lock);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1273) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1274) 	return quirks;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1275) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1276) EXPORT_SYMBOL_GPL(hid_lookup_quirk);