diff options
| -rw-r--r-- | drivers/hid/Kconfig | 6 | ||||
| -rw-r--r-- | drivers/hid/Makefile | 1 | ||||
| -rw-r--r-- | drivers/hid/hid-core.c | 1 | ||||
| -rw-r--r-- | drivers/hid/hid-ids.h | 3 | ||||
| -rw-r--r-- | drivers/hid/hid-nti.c | 59 |
5 files changed, 70 insertions, 0 deletions
diff --git a/drivers/hid/Kconfig b/drivers/hid/Kconfig index 1aeb80e52424..627452fe250d 100644 --- a/drivers/hid/Kconfig +++ b/drivers/hid/Kconfig | |||
| @@ -580,6 +580,12 @@ config HID_MULTITOUCH | |||
| 580 | To compile this driver as a module, choose M here: the | 580 | To compile this driver as a module, choose M here: the |
| 581 | module will be called hid-multitouch. | 581 | module will be called hid-multitouch. |
| 582 | 582 | ||
| 583 | config HID_NTI | ||
| 584 | tristate "NTI keyboard adapters" | ||
| 585 | ---help--- | ||
| 586 | Support for the "extra" Sun keyboard keys on keyboards attached | ||
| 587 | through Network Technologies USB-SUN keyboard adapters. | ||
| 588 | |||
| 583 | config HID_NTRIG | 589 | config HID_NTRIG |
| 584 | tristate "N-Trig touch screen" | 590 | tristate "N-Trig touch screen" |
| 585 | depends on USB_HID | 591 | depends on USB_HID |
diff --git a/drivers/hid/Makefile b/drivers/hid/Makefile index 4d111f23e801..c0a844b43dcc 100644 --- a/drivers/hid/Makefile +++ b/drivers/hid/Makefile | |||
| @@ -62,6 +62,7 @@ obj-$(CONFIG_HID_MAYFLASH) += hid-mf.o | |||
| 62 | obj-$(CONFIG_HID_MICROSOFT) += hid-microsoft.o | 62 | obj-$(CONFIG_HID_MICROSOFT) += hid-microsoft.o |
| 63 | obj-$(CONFIG_HID_MONTEREY) += hid-monterey.o | 63 | obj-$(CONFIG_HID_MONTEREY) += hid-monterey.o |
| 64 | obj-$(CONFIG_HID_MULTITOUCH) += hid-multitouch.o | 64 | obj-$(CONFIG_HID_MULTITOUCH) += hid-multitouch.o |
| 65 | obj-$(CONFIG_HID_NTI) += hid-nti.o | ||
| 65 | obj-$(CONFIG_HID_NTRIG) += hid-ntrig.o | 66 | obj-$(CONFIG_HID_NTRIG) += hid-ntrig.o |
| 66 | obj-$(CONFIG_HID_ORTEK) += hid-ortek.o | 67 | obj-$(CONFIG_HID_ORTEK) += hid-ortek.o |
| 67 | obj-$(CONFIG_HID_PRODIKEYS) += hid-prodikeys.o | 68 | obj-$(CONFIG_HID_PRODIKEYS) += hid-prodikeys.o |
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c index e9e87d337446..e9a9d8a424d3 100644 --- a/drivers/hid/hid-core.c +++ b/drivers/hid/hid-core.c | |||
| @@ -1990,6 +1990,7 @@ static const struct hid_device_id hid_have_special_driver[] = { | |||
| 1990 | { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_POWER_COVER) }, | 1990 | { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_POWER_COVER) }, |
| 1991 | { HID_USB_DEVICE(USB_VENDOR_ID_MONTEREY, USB_DEVICE_ID_GENIUS_KB29E) }, | 1991 | { HID_USB_DEVICE(USB_VENDOR_ID_MONTEREY, USB_DEVICE_ID_GENIUS_KB29E) }, |
| 1992 | { HID_USB_DEVICE(USB_VENDOR_ID_MSI, USB_DEVICE_ID_MSI_GT683R_LED_PANEL) }, | 1992 | { HID_USB_DEVICE(USB_VENDOR_ID_MSI, USB_DEVICE_ID_MSI_GT683R_LED_PANEL) }, |
| 1993 | { HID_USB_DEVICE(USB_VENDOR_ID_NTI, USB_DEVICE_ID_USB_SUN) }, | ||
| 1993 | { HID_USB_DEVICE(USB_VENDOR_ID_NTRIG, USB_DEVICE_ID_NTRIG_TOUCH_SCREEN) }, | 1994 | { HID_USB_DEVICE(USB_VENDOR_ID_NTRIG, USB_DEVICE_ID_NTRIG_TOUCH_SCREEN) }, |
| 1994 | { HID_USB_DEVICE(USB_VENDOR_ID_NTRIG, USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_1) }, | 1995 | { HID_USB_DEVICE(USB_VENDOR_ID_NTRIG, USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_1) }, |
| 1995 | { HID_USB_DEVICE(USB_VENDOR_ID_NTRIG, USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_2) }, | 1996 | { HID_USB_DEVICE(USB_VENDOR_ID_NTRIG, USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_2) }, |
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h index 86c95d30ac80..026739d5ec42 100644 --- a/drivers/hid/hid-ids.h +++ b/drivers/hid/hid-ids.h | |||
| @@ -767,6 +767,9 @@ | |||
| 767 | #define USB_DEVICE_ID_NOVATEK_PCT 0x0600 | 767 | #define USB_DEVICE_ID_NOVATEK_PCT 0x0600 |
| 768 | #define USB_DEVICE_ID_NOVATEK_MOUSE 0x1602 | 768 | #define USB_DEVICE_ID_NOVATEK_MOUSE 0x1602 |
| 769 | 769 | ||
| 770 | #define USB_VENDOR_ID_NTI 0x0757 | ||
| 771 | #define USB_DEVICE_ID_USB_SUN 0x0a00 | ||
| 772 | |||
| 770 | #define USB_VENDOR_ID_NTRIG 0x1b96 | 773 | #define USB_VENDOR_ID_NTRIG 0x1b96 |
| 771 | #define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN 0x0001 | 774 | #define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN 0x0001 |
| 772 | #define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_1 0x0003 | 775 | #define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_1 0x0003 |
diff --git a/drivers/hid/hid-nti.c b/drivers/hid/hid-nti.c new file mode 100644 index 000000000000..5bb827b223ba --- /dev/null +++ b/drivers/hid/hid-nti.c | |||
| @@ -0,0 +1,59 @@ | |||
| 1 | /* | ||
| 2 | * USB HID quirks support for Network Technologies, Inc. "USB-SUN" USB | ||
| 3 | * adapter for pre-USB Sun keyboards | ||
| 4 | * | ||
| 5 | * Copyright (c) 2011 Google, Inc. | ||
| 6 | * | ||
| 7 | * Based on HID apple driver by | ||
| 8 | * Copyright (c) 1999 Andreas Gal | ||
| 9 | * Copyright (c) 2000-2005 Vojtech Pavlik <vojtech@suse.cz> | ||
| 10 | * Copyright (c) 2005 Michael Haboustak <mike-@cinci.rr.com> for Concept2, Inc | ||
| 11 | * Copyright (c) 2006-2007 Jiri Kosina | ||
| 12 | * Copyright (c) 2008 Jiri Slaby <jirislaby@gmail.com> | ||
| 13 | */ | ||
| 14 | |||
| 15 | /* | ||
| 16 | * This program is free software; you can redistribute it and/or modify it | ||
| 17 | * under the terms of the GNU General Public License as published by the Free | ||
| 18 | * Software Foundation; either version 2 of the License, or (at your option) | ||
| 19 | * any later version. | ||
| 20 | */ | ||
| 21 | |||
| 22 | #include <linux/device.h> | ||
| 23 | #include <linux/input.h> | ||
| 24 | #include <linux/hid.h> | ||
| 25 | #include <linux/module.h> | ||
| 26 | |||
| 27 | #include "hid-ids.h" | ||
| 28 | |||
| 29 | MODULE_AUTHOR("Jonathan Klabunde Tomer <jktomer@google.com>"); | ||
| 30 | MODULE_DESCRIPTION("HID driver for Network Technologies USB-SUN keyboard adapter"); | ||
| 31 | |||
| 32 | /* | ||
| 33 | * NTI Sun keyboard adapter has wrong logical maximum in report descriptor | ||
| 34 | */ | ||
| 35 | static __u8 *nti_usbsun_report_fixup(struct hid_device *hdev, __u8 *rdesc, | ||
| 36 | unsigned int *rsize) | ||
| 37 | { | ||
| 38 | if (*rsize >= 60 && rdesc[53] == 0x65 && rdesc[59] == 0x65) { | ||
| 39 | hid_info(hdev, "fixing up NTI USB-SUN keyboard adapter report descriptor\n"); | ||
| 40 | rdesc[53] = rdesc[59] = 0xe7; | ||
| 41 | } | ||
| 42 | return rdesc; | ||
| 43 | } | ||
| 44 | |||
| 45 | static const struct hid_device_id nti_devices[] = { | ||
| 46 | { HID_USB_DEVICE(USB_VENDOR_ID_NTI, USB_DEVICE_ID_USB_SUN) }, | ||
| 47 | { } | ||
| 48 | }; | ||
| 49 | MODULE_DEVICE_TABLE(hid, nti_devices); | ||
| 50 | |||
| 51 | static struct hid_driver nti_driver = { | ||
| 52 | .name = "nti", | ||
| 53 | .id_table = nti_devices, | ||
| 54 | .report_fixup = nti_usbsun_report_fixup | ||
| 55 | }; | ||
| 56 | |||
| 57 | module_hid_driver(nti_driver); | ||
| 58 | |||
| 59 | MODULE_LICENSE("GPL"); | ||
