83 lines · c
1/* SPDX-License-Identifier: GPL-2.0-or-later */2#ifndef __HID_ROCCAT_ARVO_H3#define __HID_ROCCAT_ARVO_H4 5/*6 * Copyright (c) 2011 Stefan Achatz <erazor_de@users.sourceforge.net>7 */8 9/*10 */11 12#include <linux/types.h>13 14struct arvo_mode_key { /* 2 bytes */15 uint8_t command; /* ARVO_COMMAND_MODE_KEY */16 uint8_t state;17} __packed;18 19struct arvo_button {20 uint8_t unknown[24];21} __packed;22 23struct arvo_info {24 uint8_t unknown[8];25} __packed;26 27struct arvo_key_mask { /* 2 bytes */28 uint8_t command; /* ARVO_COMMAND_KEY_MASK */29 uint8_t key_mask;30} __packed;31 32/* selected profile is persistent */33struct arvo_actual_profile { /* 2 bytes */34 uint8_t command; /* ARVO_COMMAND_ACTUAL_PROFILE */35 uint8_t actual_profile;36} __packed;37 38enum arvo_commands {39 ARVO_COMMAND_MODE_KEY = 0x3,40 ARVO_COMMAND_BUTTON = 0x4,41 ARVO_COMMAND_INFO = 0x5,42 ARVO_COMMAND_KEY_MASK = 0x6,43 ARVO_COMMAND_ACTUAL_PROFILE = 0x7,44};45 46struct arvo_special_report {47 uint8_t unknown1; /* always 0x01 */48 uint8_t event;49 uint8_t unknown2; /* always 0x70 */50} __packed;51 52enum arvo_special_report_events {53 ARVO_SPECIAL_REPORT_EVENT_ACTION_PRESS = 0x10,54 ARVO_SPECIAL_REPORT_EVENT_ACTION_RELEASE = 0x0,55};56 57enum arvo_special_report_event_masks {58 ARVO_SPECIAL_REPORT_EVENT_MASK_ACTION = 0xf0,59 ARVO_SPECIAL_REPORT_EVENT_MASK_BUTTON = 0x0f,60};61 62struct arvo_roccat_report {63 uint8_t profile;64 uint8_t button;65 uint8_t action;66} __packed;67 68enum arvo_roccat_report_action {69 ARVO_ROCCAT_REPORT_ACTION_RELEASE = 0,70 ARVO_ROCCAT_REPORT_ACTION_PRESS = 1,71};72 73struct arvo_device {74 int roccat_claimed;75 int chrdev_minor;76 77 struct mutex arvo_lock;78 79 int actual_profile;80};81 82#endif83