cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

hid-keytouch.c (1455B)


      1// SPDX-License-Identifier: GPL-2.0-or-later
      2/*
      3 *  HID driver for Keytouch devices not fully compliant with HID standard
      4 *
      5 *  Copyright (c) 2011 Jiri Kosina
      6 */
      7
      8/*
      9 */
     10
     11#include <linux/device.h>
     12#include <linux/hid.h>
     13#include <linux/module.h>
     14
     15#include "hid-ids.h"
     16
     17/* Replace the broken report descriptor of this device with rather
     18 * a default one */
     19static __u8 keytouch_fixed_rdesc[] = {
     200x05, 0x01, 0x09, 0x06, 0xa1, 0x01, 0x05, 0x07, 0x19, 0xe0, 0x29, 0xe7, 0x15,
     210x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x08, 0x81, 0x02, 0x95, 0x01, 0x75, 0x08,
     220x81, 0x01, 0x95, 0x03, 0x75, 0x01, 0x05, 0x08, 0x19, 0x01, 0x29, 0x03, 0x91,
     230x02, 0x95, 0x05, 0x75, 0x01, 0x91, 0x01, 0x95, 0x06, 0x75, 0x08, 0x15, 0x00,
     240x26, 0xff, 0x00, 0x05, 0x07, 0x19, 0x00, 0x2a, 0xff, 0x00, 0x81, 0x00, 0xc0
     25};
     26
     27static __u8 *keytouch_report_fixup(struct hid_device *hdev, __u8 *rdesc,
     28		unsigned int *rsize)
     29{
     30	hid_info(hdev, "fixing up Keytouch IEC report descriptor\n");
     31
     32	rdesc = keytouch_fixed_rdesc;
     33	*rsize = sizeof(keytouch_fixed_rdesc);
     34
     35	return rdesc;
     36}
     37
     38static const struct hid_device_id keytouch_devices[] = {
     39	{ HID_USB_DEVICE(USB_VENDOR_ID_KEYTOUCH, USB_DEVICE_ID_KEYTOUCH_IEC) },
     40	{ }
     41};
     42MODULE_DEVICE_TABLE(hid, keytouch_devices);
     43
     44static struct hid_driver keytouch_driver = {
     45	.name = "keytouch",
     46	.id_table = keytouch_devices,
     47	.report_fixup = keytouch_report_fixup,
     48};
     49module_hid_driver(keytouch_driver);
     50
     51MODULE_LICENSE("GPL");
     52MODULE_AUTHOR("Jiri Kosina");