Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0-or-later
0002 /*
0003  *  USB HID quirks support for Network Technologies, Inc. "USB-SUN" USB
0004  *  adapter for pre-USB Sun keyboards
0005  *
0006  *  Copyright (c) 2011 Google, Inc.
0007  *
0008  * Based on HID apple driver by
0009  *  Copyright (c) 1999 Andreas Gal
0010  *  Copyright (c) 2000-2005 Vojtech Pavlik <vojtech@suse.cz>
0011  *  Copyright (c) 2005 Michael Haboustak <mike-@cinci.rr.com> for Concept2, Inc
0012  *  Copyright (c) 2006-2007 Jiri Kosina
0013  *  Copyright (c) 2008 Jiri Slaby <jirislaby@gmail.com>
0014  */
0015 
0016 /*
0017  */
0018 
0019 #include <linux/device.h>
0020 #include <linux/input.h>
0021 #include <linux/hid.h>
0022 #include <linux/module.h>
0023 
0024 #include "hid-ids.h"
0025 
0026 MODULE_AUTHOR("Jonathan Klabunde Tomer <jktomer@google.com>");
0027 MODULE_DESCRIPTION("HID driver for Network Technologies USB-SUN keyboard adapter");
0028 
0029 /*
0030  * NTI Sun keyboard adapter has wrong logical maximum in report descriptor
0031  */
0032 static __u8 *nti_usbsun_report_fixup(struct hid_device *hdev, __u8 *rdesc,
0033         unsigned int *rsize)
0034 {
0035     if (*rsize >= 60 && rdesc[53] == 0x65 && rdesc[59] == 0x65) {
0036         hid_info(hdev, "fixing up NTI USB-SUN keyboard adapter report descriptor\n");
0037         rdesc[53] = rdesc[59] = 0xe7;
0038     }
0039     return rdesc;
0040 }
0041 
0042 static const struct hid_device_id nti_devices[] = {
0043     { HID_USB_DEVICE(USB_VENDOR_ID_NTI, USB_DEVICE_ID_USB_SUN) },
0044     { }
0045 };
0046 MODULE_DEVICE_TABLE(hid, nti_devices);
0047 
0048 static struct hid_driver nti_driver = {
0049     .name = "nti",
0050     .id_table = nti_devices,
0051     .report_fixup = nti_usbsun_report_fixup
0052 };
0053 
0054 module_hid_driver(nti_driver);
0055 
0056 MODULE_LICENSE("GPL");