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-macally.c (1152B)


      1// SPDX-License-Identifier: GPL-2.0+
      2/*
      3 *  HID driver for quirky Macally devices
      4 *
      5 *  Copyright (c) 2019 Alex Henrie <alexhenrie24@gmail.com>
      6 */
      7
      8#include <linux/hid.h>
      9#include <linux/module.h>
     10
     11#include "hid-ids.h"
     12
     13MODULE_AUTHOR("Alex Henrie <alexhenrie24@gmail.com>");
     14MODULE_DESCRIPTION("Macally devices");
     15MODULE_LICENSE("GPL");
     16
     17/*
     18 * The Macally ikey keyboard says that its logical and usage maximums are both
     19 * 101, but the power key is 102 and the equals key is 103
     20 */
     21static __u8 *macally_report_fixup(struct hid_device *hdev, __u8 *rdesc,
     22				 unsigned int *rsize)
     23{
     24	if (*rsize >= 60 && rdesc[53] == 0x65 && rdesc[59] == 0x65) {
     25		hid_info(hdev,
     26			"fixing up Macally ikey keyboard report descriptor\n");
     27		rdesc[53] = rdesc[59] = 0x67;
     28	}
     29	return rdesc;
     30}
     31
     32static const struct hid_device_id macally_id_table[] = {
     33	{ HID_USB_DEVICE(USB_VENDOR_ID_SOLID_YEAR,
     34			 USB_DEVICE_ID_MACALLY_IKEY_KEYBOARD) },
     35	{ }
     36};
     37MODULE_DEVICE_TABLE(hid, macally_id_table);
     38
     39static struct hid_driver macally_driver = {
     40	.name			= "macally",
     41	.id_table		= macally_id_table,
     42	.report_fixup		= macally_report_fixup,
     43};
     44
     45module_hid_driver(macally_driver);