brintos

brintos / linux-shallow public Read only

0
0
Text · 7.9 KiB · 3878a0e Raw
214 lines · c
1/* SPDX-License-Identifier: GPL-2.0+ */2/*3 *  HID driver for UC-Logic devices not fully compliant with HID standard4 *  - original and fixed report descriptors5 *6 *  Copyright (c) 2010-2018 Nikolai Kondrashov7 *  Copyright (c) 2013 Martin Rusko8 */9 10/*11 * This program is free software; you can redistribute it and/or modify it12 * under the terms of the GNU General Public License as published by the Free13 * Software Foundation; either version 2 of the License, or (at your option)14 * any later version.15 */16 17#ifndef _HID_UCLOGIC_RDESC_H18#define _HID_UCLOGIC_RDESC_H19 20#include <linux/usb.h>21 22/* Size of the original descriptor of WPXXXXU tablets */23#define UCLOGIC_RDESC_WPXXXXU_ORIG_SIZE		21224 25/* Fixed WP4030U report descriptor */26extern const __u8 uclogic_rdesc_wp4030u_fixed_arr[];27extern const size_t uclogic_rdesc_wp4030u_fixed_size;28 29/* Fixed WP5540U report descriptor */30extern const __u8 uclogic_rdesc_wp5540u_fixed_arr[];31extern const size_t uclogic_rdesc_wp5540u_fixed_size;32 33/* Fixed WP8060U report descriptor */34extern const __u8 uclogic_rdesc_wp8060u_fixed_arr[];35extern const size_t uclogic_rdesc_wp8060u_fixed_size;36 37/* Size of the original descriptor of the new WP5540U tablet */38#define UCLOGIC_RDESC_WP5540U_V2_ORIG_SIZE	23239 40/* Size of the original descriptor of WP1062 tablet */41#define UCLOGIC_RDESC_WP1062_ORIG_SIZE		25442 43/* Fixed WP1062 report descriptor */44extern const __u8 uclogic_rdesc_wp1062_fixed_arr[];45extern const size_t uclogic_rdesc_wp1062_fixed_size;46 47/* Size of the original descriptor of PF1209 tablet */48#define UCLOGIC_RDESC_PF1209_ORIG_SIZE		23449 50/* Fixed PF1209 report descriptor */51extern const __u8 uclogic_rdesc_pf1209_fixed_arr[];52extern const size_t uclogic_rdesc_pf1209_fixed_size;53 54/* Size of the original descriptors of TWHL850 tablet */55#define UCLOGIC_RDESC_TWHL850_ORIG0_SIZE	18256#define UCLOGIC_RDESC_TWHL850_ORIG1_SIZE	16157#define UCLOGIC_RDESC_TWHL850_ORIG2_SIZE	9258 59/* Fixed PID 0522 tablet report descriptor, interface 0 (stylus) */60extern const __u8 uclogic_rdesc_twhl850_fixed0_arr[];61extern const size_t uclogic_rdesc_twhl850_fixed0_size;62 63/* Fixed PID 0522 tablet report descriptor, interface 1 (mouse) */64extern const __u8 uclogic_rdesc_twhl850_fixed1_arr[];65extern const size_t uclogic_rdesc_twhl850_fixed1_size;66 67/* Fixed PID 0522 tablet report descriptor, interface 2 (frame buttons) */68extern const __u8 uclogic_rdesc_twhl850_fixed2_arr[];69extern const size_t uclogic_rdesc_twhl850_fixed2_size;70 71/* Size of the original descriptors of TWHA60 tablet */72#define UCLOGIC_RDESC_TWHA60_ORIG0_SIZE		25473#define UCLOGIC_RDESC_TWHA60_ORIG1_SIZE		13974 75/* Fixed TWHA60 report descriptor, interface 0 (stylus) */76extern const __u8 uclogic_rdesc_twha60_fixed0_arr[];77extern const size_t uclogic_rdesc_twha60_fixed0_size;78 79/* Fixed TWHA60 report descriptor, interface 1 (frame buttons) */80extern const __u8 uclogic_rdesc_twha60_fixed1_arr[];81extern const size_t uclogic_rdesc_twha60_fixed1_size;82 83/* Report descriptor template placeholder head */84#define UCLOGIC_RDESC_PEN_PH_HEAD	0xFE, 0xED, 0x1D85#define UCLOGIC_RDESC_FRAME_PH_BTN_HEAD	0xFE, 0xED86 87/* Apply report descriptor parameters to a report descriptor template */88extern __u8 *uclogic_rdesc_template_apply(const __u8 *template_ptr,89					  size_t template_size,90					  const s32 *param_list,91					  size_t param_num);92 93/* Report descriptor template placeholder IDs */94enum uclogic_rdesc_ph_id {95	UCLOGIC_RDESC_PEN_PH_ID_X_LM,96	UCLOGIC_RDESC_PEN_PH_ID_X_PM,97	UCLOGIC_RDESC_PEN_PH_ID_Y_LM,98	UCLOGIC_RDESC_PEN_PH_ID_Y_PM,99	UCLOGIC_RDESC_PEN_PH_ID_PRESSURE_LM,100	UCLOGIC_RDESC_FRAME_PH_ID_UM,101	UCLOGIC_RDESC_PH_ID_NUM102};103 104/* Report descriptor pen template placeholder */105#define UCLOGIC_RDESC_PEN_PH(_ID) \106	UCLOGIC_RDESC_PEN_PH_HEAD, UCLOGIC_RDESC_PEN_PH_ID_##_ID107 108/* Report descriptor frame buttons template placeholder */109#define UCLOGIC_RDESC_FRAME_PH_BTN \110	UCLOGIC_RDESC_FRAME_PH_BTN_HEAD, UCLOGIC_RDESC_FRAME_PH_ID_UM111 112/* Report ID for v1 pen reports */113#define UCLOGIC_RDESC_V1_PEN_ID	0x07114 115/* Fixed report descriptor template for (tweaked) v1 pen reports */116extern const __u8 uclogic_rdesc_v1_pen_template_arr[];117extern const size_t uclogic_rdesc_v1_pen_template_size;118 119/* Report ID for v2 pen reports */120#define UCLOGIC_RDESC_V2_PEN_ID	0x08121 122/* Fixed report descriptor template for (tweaked) v2 pen reports */123extern const __u8 uclogic_rdesc_v2_pen_template_arr[];124extern const size_t uclogic_rdesc_v2_pen_template_size;125 126/* Report ID for tweaked v1 frame reports */127#define UCLOGIC_RDESC_V1_FRAME_ID 0xf7128 129/* Fixed report descriptor for (tweaked) v1 frame reports */130extern const __u8 uclogic_rdesc_v1_frame_arr[];131extern const size_t uclogic_rdesc_v1_frame_size;132 133/* Report ID for tweaked v2 frame button reports */134#define UCLOGIC_RDESC_V2_FRAME_BUTTONS_ID 0xf7135 136/* Fixed report descriptor for (tweaked) v2 frame button reports */137extern const __u8 uclogic_rdesc_v2_frame_buttons_arr[];138extern const size_t uclogic_rdesc_v2_frame_buttons_size;139 140/* Report ID for tweaked v2 frame touch ring/strip reports */141#define UCLOGIC_RDESC_V2_FRAME_TOUCH_ID 0xf8142 143/* Fixed report descriptor for (tweaked) v2 frame touch ring reports */144extern const __u8 uclogic_rdesc_v2_frame_touch_ring_arr[];145extern const size_t uclogic_rdesc_v2_frame_touch_ring_size;146 147/* Fixed report descriptor for (tweaked) v2 frame touch strip reports */148extern const __u8 uclogic_rdesc_v2_frame_touch_strip_arr[];149extern const size_t uclogic_rdesc_v2_frame_touch_strip_size;150 151/* Device ID byte offset in v2 frame touch ring/strip reports */152#define UCLOGIC_RDESC_V2_FRAME_TOUCH_DEV_ID_BYTE	0x4153 154/* Report ID for tweaked v2 frame dial reports */155#define UCLOGIC_RDESC_V2_FRAME_DIAL_ID 0xf9156 157/* Fixed report descriptor for (tweaked) v2 frame dial reports */158extern const __u8 uclogic_rdesc_v2_frame_dial_arr[];159extern const size_t uclogic_rdesc_v2_frame_dial_size;160 161/* Device ID byte offset in v2 frame dial reports */162#define UCLOGIC_RDESC_V2_FRAME_DIAL_DEV_ID_BYTE	0x4163 164/* Report ID for tweaked UGEE v2 battery reports */165#define UCLOGIC_RDESC_UGEE_V2_BATTERY_ID 0xba166 167/* Magic data expected by UGEEv2 devices on probe */168extern const __u8 uclogic_ugee_v2_probe_arr[];169extern const size_t uclogic_ugee_v2_probe_size;170extern const int uclogic_ugee_v2_probe_endpoint;171 172/* Fixed report descriptor template for UGEE v2 pen reports */173extern const __u8 uclogic_rdesc_ugee_v2_pen_template_arr[];174extern const size_t uclogic_rdesc_ugee_v2_pen_template_size;175 176/* Fixed report descriptor template for UGEE v2 frame reports (buttons only) */177extern const __u8 uclogic_rdesc_ugee_v2_frame_btn_template_arr[];178extern const size_t uclogic_rdesc_ugee_v2_frame_btn_template_size;179 180/* Fixed report descriptor template for UGEE v2 frame reports (dial) */181extern const __u8 uclogic_rdesc_ugee_v2_frame_dial_template_arr[];182extern const size_t uclogic_rdesc_ugee_v2_frame_dial_template_size;183 184/* Fixed report descriptor template for UGEE v2 frame reports (mouse) */185extern const __u8 uclogic_rdesc_ugee_v2_frame_mouse_template_arr[];186extern const size_t uclogic_rdesc_ugee_v2_frame_mouse_template_size;187 188/* Fixed report descriptor template for UGEE v2 battery reports */189extern const __u8 uclogic_rdesc_ugee_v2_battery_template_arr[];190extern const size_t uclogic_rdesc_ugee_v2_battery_template_size;191 192/* Fixed report descriptor for Ugee EX07 frame */193extern const __u8 uclogic_rdesc_ugee_ex07_frame_arr[];194extern const size_t uclogic_rdesc_ugee_ex07_frame_size;195 196/* Fixed report descriptor for XP-Pen Deco 01 frame controls */197extern const __u8 uclogic_rdesc_xppen_deco01_frame_arr[];198extern const size_t uclogic_rdesc_xppen_deco01_frame_size;199 200/* Fixed report descriptor for Ugee G5 frame controls */201extern const __u8 uclogic_rdesc_ugee_g5_frame_arr[];202extern const size_t uclogic_rdesc_ugee_g5_frame_size;203 204/* Report ID of Ugee G5 frame control reports */205#define UCLOGIC_RDESC_UGEE_G5_FRAME_ID 0x06206 207/* Device ID byte offset in Ugee G5 frame report */208#define UCLOGIC_RDESC_UGEE_G5_FRAME_DEV_ID_BYTE	0x2209 210/* Least-significant bit of Ugee G5 frame rotary encoder state */211#define UCLOGIC_RDESC_UGEE_G5_FRAME_RE_LSB 38212 213#endif /* _HID_UCLOGIC_RDESC_H */214