brintos

brintos / linux-shallow public Read only

0
0
Text · 1.1 KiB · 4fbec5f Raw
42 lines · c
1// SPDX-License-Identifier: GPL-2.0-or-later2/*3 *  HID driver for Semitek keyboards4 *5 *  Copyright (c) 2021 Benjamin Moody6 */7 8#include <linux/device.h>9#include <linux/hid.h>10#include <linux/module.h>11 12#include "hid-ids.h"13 14static const __u8 *semitek_report_fixup(struct hid_device *hdev, __u8 *rdesc,15					unsigned int *rsize)16{17	/* In the report descriptor for interface 2, fix the incorrect18	   description of report ID 0x04 (the report contains a19	   bitmask, not an array of keycodes.) */20	if (*rsize == 0xcb && rdesc[0x83] == 0x81 && rdesc[0x84] == 0x00) {21		hid_info(hdev, "fixing up Semitek report descriptor\n");22		rdesc[0x84] = 0x02;23	}24	return rdesc;25}26 27static const struct hid_device_id semitek_devices[] = {28	{ HID_USB_DEVICE(USB_VENDOR_ID_SEMITEK, USB_DEVICE_ID_SEMITEK_KEYBOARD) },29	{ }30};31MODULE_DEVICE_TABLE(hid, semitek_devices);32 33static struct hid_driver semitek_driver = {34	.name = "semitek",35	.id_table = semitek_devices,36	.report_fixup = semitek_report_fixup,37};38module_hid_driver(semitek_driver);39 40MODULE_DESCRIPTION("HID driver for Semitek keyboards");41MODULE_LICENSE("GPL");42