Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

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