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-roccat-isku.h (2012B)


      1/* SPDX-License-Identifier: GPL-2.0-or-later */
      2#ifndef __HID_ROCCAT_ISKU_H
      3#define __HID_ROCCAT_ISKU_H
      4
      5/*
      6 * Copyright (c) 2011 Stefan Achatz <erazor_de@users.sourceforge.net>
      7 */
      8
      9/*
     10 */
     11
     12#include <linux/types.h>
     13
     14enum {
     15	ISKU_SIZE_CONTROL = 0x03,
     16	ISKU_SIZE_INFO = 0x06,
     17	ISKU_SIZE_KEY_MASK = 0x06,
     18	ISKU_SIZE_KEYS_FUNCTION = 0x29,
     19	ISKU_SIZE_KEYS_EASYZONE = 0x41,
     20	ISKU_SIZE_KEYS_MEDIA = 0x1d,
     21	ISKU_SIZE_KEYS_THUMBSTER = 0x17,
     22	ISKU_SIZE_KEYS_MACRO = 0x23,
     23	ISKU_SIZE_KEYS_CAPSLOCK = 0x06,
     24	ISKU_SIZE_LAST_SET = 0x14,
     25	ISKU_SIZE_LIGHT = 0x10,
     26	ISKU_SIZE_MACRO = 0x823,
     27	ISKU_SIZE_RESET = 0x03,
     28	ISKU_SIZE_TALK = 0x10,
     29	ISKU_SIZE_TALKFX = 0x10,
     30};
     31
     32enum {
     33	ISKU_PROFILE_NUM = 5,
     34	ISKU_USB_INTERFACE_PROTOCOL = 0,
     35};
     36
     37struct isku_actual_profile {
     38	uint8_t command; /* ISKU_COMMAND_ACTUAL_PROFILE */
     39	uint8_t size; /* always 3 */
     40	uint8_t actual_profile;
     41} __packed;
     42
     43enum isku_commands {
     44	ISKU_COMMAND_CONTROL = 0x4,
     45	ISKU_COMMAND_ACTUAL_PROFILE = 0x5,
     46	ISKU_COMMAND_KEY_MASK = 0x7,
     47	ISKU_COMMAND_KEYS_FUNCTION = 0x8,
     48	ISKU_COMMAND_KEYS_EASYZONE = 0x9,
     49	ISKU_COMMAND_KEYS_MEDIA = 0xa,
     50	ISKU_COMMAND_KEYS_THUMBSTER = 0xb,
     51	ISKU_COMMAND_KEYS_MACRO = 0xd,
     52	ISKU_COMMAND_MACRO = 0xe,
     53	ISKU_COMMAND_INFO = 0xf,
     54	ISKU_COMMAND_LIGHT = 0x10,
     55	ISKU_COMMAND_RESET = 0x11,
     56	ISKU_COMMAND_KEYS_CAPSLOCK = 0x13,
     57	ISKU_COMMAND_LAST_SET = 0x14,
     58	ISKU_COMMAND_15 = 0x15,
     59	ISKU_COMMAND_TALK = 0x16,
     60	ISKU_COMMAND_TALKFX = 0x17,
     61	ISKU_COMMAND_FIRMWARE_WRITE = 0x1b,
     62	ISKU_COMMAND_FIRMWARE_WRITE_CONTROL = 0x1c,
     63};
     64
     65struct isku_report_button {
     66	uint8_t number; /* ISKU_REPORT_NUMBER_BUTTON */
     67	uint8_t zero;
     68	uint8_t event;
     69	uint8_t data1;
     70	uint8_t data2;
     71};
     72
     73enum isku_report_numbers {
     74	ISKU_REPORT_NUMBER_BUTTON = 3,
     75};
     76
     77enum isku_report_button_events {
     78	ISKU_REPORT_BUTTON_EVENT_PROFILE = 0x2,
     79};
     80
     81struct isku_roccat_report {
     82	uint8_t event;
     83	uint8_t data1;
     84	uint8_t data2;
     85	uint8_t profile;
     86} __packed;
     87
     88struct isku_device {
     89	int roccat_claimed;
     90	int chrdev_minor;
     91
     92	struct mutex isku_lock;
     93
     94	int actual_profile;
     95};
     96
     97#endif