brintos

brintos / linux-shallow public Read only

0
0
Text · 11.7 KiB · c8803d5 Raw
373 lines · c
1/* SPDX-License-Identifier: GPL-2.0-or-later */2 3#ifndef WACOM_WAC_H4#define WACOM_WAC_H5 6#include <linux/types.h>7#include <linux/hid.h>8#include <linux/kfifo.h>9 10/* maximum packet length for USB/BT devices */11#define WACOM_PKGLEN_MAX	36112 13#define WACOM_NAME_MAX		6414#define WACOM_MAX_REMOTES	515#define WACOM_STATUS_UNKNOWN	25516#define WACOM_REMOTE_BATTERY_TIMEOUT	21000000000ll17#define WACOM_AES_BATTERY_TIMEOUT       180000018 19/* packet length for individual models */20#define WACOM_PKGLEN_BBFUN	 921#define WACOM_PKGLEN_TPC1FG	 522#define WACOM_PKGLEN_TPC1FG_B	1023#define WACOM_PKGLEN_TPC2FG	1424#define WACOM_PKGLEN_BBTOUCH	2025#define WACOM_PKGLEN_BBTOUCH3	6426#define WACOM_PKGLEN_BBPEN	1027#define WACOM_PKGLEN_WIRELESS	3228#define WACOM_PKGLEN_PENABLED	 829#define WACOM_PKGLEN_BPAD_TOUCH	3230#define WACOM_PKGLEN_BPAD_TOUCH_USB	6431 32/* wacom data size per MT contact */33#define WACOM_BYTES_PER_MT_PACKET	1134#define WACOM_BYTES_PER_24HDT_PACKET	1435#define WACOM_BYTES_PER_QHDTHID_PACKET	 636 37/* device IDs */38#define STYLUS_DEVICE_ID	0x0239#define TOUCH_DEVICE_ID		0x0340#define CURSOR_DEVICE_ID	0x0641#define ERASER_DEVICE_ID	0x0A42#define PAD_DEVICE_ID		0x0F43 44/* wacom data packet report IDs */45#define WACOM_REPORT_PENABLED		246#define WACOM_REPORT_PENABLED_BT	347#define WACOM_REPORT_INTUOS_ID1		548#define WACOM_REPORT_INTUOS_ID2		649#define WACOM_REPORT_INTUOSPAD		1250#define WACOM_REPORT_INTUOS5PAD		351#define WACOM_REPORT_DTUSPAD		2152#define WACOM_REPORT_TPC1FG		653#define WACOM_REPORT_TPC2FG		1354#define WACOM_REPORT_TPCMT		1355#define WACOM_REPORT_TPCMT2		356#define WACOM_REPORT_TPCHID		1557#define WACOM_REPORT_CINTIQ		1658#define WACOM_REPORT_CINTIQPAD		1759#define WACOM_REPORT_TPCST		1660#define WACOM_REPORT_DTUS		1761#define WACOM_REPORT_TPC1FGE		1862#define WACOM_REPORT_24HDT		163#define WACOM_REPORT_WL			12864#define WACOM_REPORT_USB		19265#define WACOM_REPORT_BPAD_PEN		366#define WACOM_REPORT_BPAD_TOUCH		1667#define WACOM_REPORT_DEVICE_LIST	1668#define WACOM_REPORT_INTUOS_PEN		1669#define WACOM_REPORT_REMOTE		1770#define WACOM_REPORT_INTUOSHT2_ID	871 72/* wacom command report ids */73#define WAC_CMD_WL_LED_CONTROL          0x0374#define WAC_CMD_LED_CONTROL             0x2075#define WAC_CMD_ICON_START              0x2176#define WAC_CMD_ICON_XFER               0x2377#define WAC_CMD_ICON_BT_XFER            0x2678#define WAC_CMD_DELETE_PAIRING          0x2079#define WAC_CMD_LED_CONTROL_GENERIC     0x3280#define WAC_CMD_UNPAIR_ALL              0xFF81#define WAC_CMD_WL_INTUOSP2             0x8282 83/* device quirks */84#define WACOM_QUIRK_BBTOUCH_LOWRES	0x000185#define WACOM_QUIRK_SENSE		0x000286#define WACOM_QUIRK_AESPEN		0x000487#define WACOM_QUIRK_BATTERY		0x000888#define WACOM_QUIRK_TOOLSERIAL		0x001089#define WACOM_QUIRK_PEN_BUTTON3	0x002090 91/* device types */92#define WACOM_DEVICETYPE_NONE           0x000093#define WACOM_DEVICETYPE_PEN            0x000194#define WACOM_DEVICETYPE_TOUCH          0x000295#define WACOM_DEVICETYPE_PAD            0x000496#define WACOM_DEVICETYPE_WL_MONITOR     0x000897#define WACOM_DEVICETYPE_DIRECT         0x001098 99#define WACOM_POWER_SUPPLY_STATUS_AUTO  -1100 101#define WACOM_HID_UP_WACOMDIGITIZER     0xff0d0000102#define WACOM_HID_SP_PAD                0x00040000103#define WACOM_HID_SP_BUTTON             0x00090000104#define WACOM_HID_SP_DIGITIZER          0x000d0000105#define WACOM_HID_SP_DIGITIZERINFO      0x00100000106#define WACOM_HID_WD_DIGITIZER          (WACOM_HID_UP_WACOMDIGITIZER | 0x01)107#define WACOM_HID_WD_PEN                (WACOM_HID_UP_WACOMDIGITIZER | 0x02)108#define WACOM_HID_WD_SENSE              (WACOM_HID_UP_WACOMDIGITIZER | 0x36)109#define WACOM_HID_WD_DIGITIZERFNKEYS    (WACOM_HID_UP_WACOMDIGITIZER | 0x39)110#define WACOM_HID_WD_SERIALNUMBER       (WACOM_HID_UP_WACOMDIGITIZER | 0x5b)111#define WACOM_HID_WD_SERIALHI           (WACOM_HID_UP_WACOMDIGITIZER | 0x5c)112#define WACOM_HID_WD_BARRELSWITCH3      (WACOM_HID_UP_WACOMDIGITIZER | 0x5d)113#define WACOM_HID_WD_TOOLTYPE           (WACOM_HID_UP_WACOMDIGITIZER | 0x77)114#define WACOM_HID_WD_DISTANCE           (WACOM_HID_UP_WACOMDIGITIZER | 0x0132)115#define WACOM_HID_WD_TOUCHSTRIP         (WACOM_HID_UP_WACOMDIGITIZER | 0x0136)116#define WACOM_HID_WD_TOUCHSTRIP2        (WACOM_HID_UP_WACOMDIGITIZER | 0x0137)117#define WACOM_HID_WD_TOUCHRING          (WACOM_HID_UP_WACOMDIGITIZER | 0x0138)118#define WACOM_HID_WD_TOUCHRINGSTATUS    (WACOM_HID_UP_WACOMDIGITIZER | 0x0139)119#define WACOM_HID_WD_REPORT_VALID       (WACOM_HID_UP_WACOMDIGITIZER | 0x01d0)120#define WACOM_HID_WD_SEQUENCENUMBER     (WACOM_HID_UP_WACOMDIGITIZER | 0x0220)121#define WACOM_HID_WD_ACCELEROMETER_X    (WACOM_HID_UP_WACOMDIGITIZER | 0x0401)122#define WACOM_HID_WD_ACCELEROMETER_Y    (WACOM_HID_UP_WACOMDIGITIZER | 0x0402)123#define WACOM_HID_WD_ACCELEROMETER_Z    (WACOM_HID_UP_WACOMDIGITIZER | 0x0403)124#define WACOM_HID_WD_BATTERY_CHARGING   (WACOM_HID_UP_WACOMDIGITIZER | 0x0404)125#define WACOM_HID_WD_TOUCHONOFF         (WACOM_HID_UP_WACOMDIGITIZER | 0x0454)126#define WACOM_HID_WD_BATTERY_LEVEL      (WACOM_HID_UP_WACOMDIGITIZER | 0x043b)127#define WACOM_HID_WD_EXPRESSKEY00       (WACOM_HID_UP_WACOMDIGITIZER | 0x0910)128#define WACOM_HID_WD_EXPRESSKEYCAP00    (WACOM_HID_UP_WACOMDIGITIZER | 0x0940)129#define WACOM_HID_WD_MODE_CHANGE        (WACOM_HID_UP_WACOMDIGITIZER | 0x0980)130#define WACOM_HID_WD_MUTE_DEVICE        (WACOM_HID_UP_WACOMDIGITIZER | 0x0981)131#define WACOM_HID_WD_CONTROLPANEL       (WACOM_HID_UP_WACOMDIGITIZER | 0x0982)132#define WACOM_HID_WD_ONSCREEN_KEYBOARD  (WACOM_HID_UP_WACOMDIGITIZER | 0x0983)133#define WACOM_HID_WD_BUTTONCONFIG       (WACOM_HID_UP_WACOMDIGITIZER | 0x0986)134#define WACOM_HID_WD_BUTTONHOME         (WACOM_HID_UP_WACOMDIGITIZER | 0x0990)135#define WACOM_HID_WD_BUTTONUP           (WACOM_HID_UP_WACOMDIGITIZER | 0x0991)136#define WACOM_HID_WD_BUTTONDOWN         (WACOM_HID_UP_WACOMDIGITIZER | 0x0992)137#define WACOM_HID_WD_BUTTONLEFT         (WACOM_HID_UP_WACOMDIGITIZER | 0x0993)138#define WACOM_HID_WD_BUTTONRIGHT        (WACOM_HID_UP_WACOMDIGITIZER | 0x0994)139#define WACOM_HID_WD_BUTTONCENTER       (WACOM_HID_UP_WACOMDIGITIZER | 0x0995)140#define WACOM_HID_WD_FINGERWHEEL        (WACOM_HID_UP_WACOMDIGITIZER | 0x0d03)141#define WACOM_HID_WD_OFFSETLEFT         (WACOM_HID_UP_WACOMDIGITIZER | 0x0d30)142#define WACOM_HID_WD_OFFSETTOP          (WACOM_HID_UP_WACOMDIGITIZER | 0x0d31)143#define WACOM_HID_WD_OFFSETRIGHT        (WACOM_HID_UP_WACOMDIGITIZER | 0x0d32)144#define WACOM_HID_WD_OFFSETBOTTOM       (WACOM_HID_UP_WACOMDIGITIZER | 0x0d33)145#define WACOM_HID_WD_DATAMODE           (WACOM_HID_UP_WACOMDIGITIZER | 0x1002)146#define WACOM_HID_WD_DIGITIZERINFO      (WACOM_HID_UP_WACOMDIGITIZER | 0x1013)147#define WACOM_HID_WD_TOUCH_RING_SETTING (WACOM_HID_UP_WACOMDIGITIZER | 0x1032)148#define WACOM_HID_UP_G9                 0xff090000149#define WACOM_HID_G9_PEN                (WACOM_HID_UP_G9 | 0x02)150#define WACOM_HID_G9_TOUCHSCREEN        (WACOM_HID_UP_G9 | 0x11)151#define WACOM_HID_UP_G11                0xff110000152#define WACOM_HID_G11_PEN               (WACOM_HID_UP_G11 | 0x02)153#define WACOM_HID_G11_TOUCHSCREEN       (WACOM_HID_UP_G11 | 0x11)154#define WACOM_HID_UP_WACOMTOUCH         0xff000000155#define WACOM_HID_WT_TOUCHSCREEN        (WACOM_HID_UP_WACOMTOUCH | 0x04)156#define WACOM_HID_WT_TOUCHPAD           (WACOM_HID_UP_WACOMTOUCH | 0x05)157#define WACOM_HID_WT_CONTACTMAX         (WACOM_HID_UP_WACOMTOUCH | 0x55)158#define WACOM_HID_WT_SERIALNUMBER       (WACOM_HID_UP_WACOMTOUCH | 0x5b)159#define WACOM_HID_WT_X                  (WACOM_HID_UP_WACOMTOUCH | 0x130)160#define WACOM_HID_WT_Y                  (WACOM_HID_UP_WACOMTOUCH | 0x131)161#define WACOM_HID_WT_REPORT_VALID       (WACOM_HID_UP_WACOMTOUCH | 0x1d0)162 163#define WACOM_BATTERY_USAGE(f)	(((f)->hid == HID_DG_BATTERYSTRENGTH) || \164				 ((f)->hid == WACOM_HID_WD_BATTERY_CHARGING) || \165				 ((f)->hid == WACOM_HID_WD_BATTERY_LEVEL))166 167#define WACOM_PAD_FIELD(f)	(((f)->physical == HID_DG_TABLETFUNCTIONKEY) || \168				 ((f)->physical == WACOM_HID_WD_DIGITIZERFNKEYS) || \169				 ((f)->physical == WACOM_HID_WD_DIGITIZERINFO))170 171#define WACOM_PEN_FIELD(f)	(((f)->logical == HID_DG_STYLUS) || \172				 ((f)->physical == HID_DG_STYLUS) || \173				 ((f)->physical == HID_DG_PEN) || \174				 ((f)->application == HID_DG_PEN) || \175				 ((f)->application == HID_DG_DIGITIZER) || \176				 ((f)->application == WACOM_HID_WD_PEN) || \177				 ((f)->application == WACOM_HID_WD_DIGITIZER) || \178				 ((f)->application == WACOM_HID_G9_PEN) || \179				 ((f)->application == WACOM_HID_G11_PEN))180#define WACOM_FINGER_FIELD(f)	(((f)->logical == HID_DG_FINGER) || \181				 ((f)->physical == HID_DG_FINGER) || \182				 ((f)->application == HID_DG_TOUCHSCREEN) || \183				 ((f)->application == WACOM_HID_G9_TOUCHSCREEN) || \184				 ((f)->application == WACOM_HID_G11_TOUCHSCREEN) || \185				 ((f)->application == WACOM_HID_WT_TOUCHPAD) || \186				 ((f)->application == HID_DG_TOUCHPAD))187 188#define WACOM_DIRECT_DEVICE(f)	(((f)->application == HID_DG_TOUCHSCREEN) || \189				 ((f)->application == WACOM_HID_WT_TOUCHSCREEN) || \190				 ((f)->application == HID_DG_PEN) || \191				 ((f)->application == WACOM_HID_WD_PEN))192 193enum {194	PENPARTNER = 0,195	GRAPHIRE,196	GRAPHIRE_BT,197	WACOM_G4,198	PTU,199	PL,200	DTU,201	DTUS,202	DTUSX,203	INTUOS,204	INTUOS3S,205	INTUOS3,206	INTUOS3L,207	INTUOS4S,208	INTUOS4,209	INTUOS4WL,210	INTUOS4L,211	INTUOS5S,212	INTUOS5,213	INTUOS5L,214	INTUOSPS,215	INTUOSPM,216	INTUOSPL,217	INTUOSP2_BT,218	INTUOSP2S_BT,219	INTUOSHT3_BT,220	WACOM_21UX2,221	WACOM_22HD,222	DTK,223	WACOM_24HD,224	WACOM_27QHD,225	CINTIQ_HYBRID,226	CINTIQ_COMPANION_2,227	CINTIQ,228	WACOM_BEE,229	WACOM_13HD,230	WACOM_MO,231	BAMBOO_PEN,232	INTUOSHT,233	INTUOSHT2,234	BAMBOO_TOUCH,235	BAMBOO_PT,236	WACOM_24HDT,237	WACOM_27QHDT,238	BAMBOO_PAD,239	WIRELESS,240	REMOTE,241	TABLETPC,   /* add new TPC below */242	TABLETPCE,243	TABLETPC2FG,244	MTSCREEN,245	MTTPC,246	MTTPC_B,247	HID_GENERIC,248	BOOTLOADER,249	MAX_TYPE250};251 252struct wacom_features {253	const char *name;254	int x_max;255	int y_max;256	int pressure_max;257	int distance_max;258	int type;259	int x_resolution;260	int y_resolution;261	int numbered_buttons;262	int offset_left;263	int offset_right;264	int offset_top;265	int offset_bottom;266	int device_type;267	int x_phy;268	int y_phy;269	unsigned unit;270	int unitExpo;271	int x_fuzz;272	int y_fuzz;273	int pressure_fuzz;274	int distance_fuzz;275	int tilt_fuzz;276	unsigned quirks;277	unsigned touch_max;278	int oVid;279	int oPid;280	int pktlen;281	bool check_for_hid_type;282	int hid_type;283};284 285struct wacom_shared {286	bool stylus_in_proximity;287	bool touch_down;288	/* for wireless device to access USB interfaces */289	unsigned touch_max;290	int type;291	struct input_dev *touch_input;292	struct hid_device *pen;293	struct hid_device *touch;294	bool has_mute_touch_switch;295	bool is_touch_on;296};297 298struct hid_data {299	__s16 inputmode;	/* InputMode HID feature, -1 if non-existent */300	__s16 inputmode_index;	/* InputMode HID feature index in the report */301	bool sense_state;302	bool inrange_state;303	bool invert_state;304	bool tipswitch;305	bool barrelswitch;306	bool barrelswitch2;307	bool barrelswitch3;308	bool serialhi;309	bool confidence;310	int x;311	int y;312	int width;313	int height;314	int id;315	int ring_value;316	int ring2_value;317	int cc_report;318	int cc_index;319	int cc_value_index;320	int last_slot_field;321	int num_expected;322	int num_received;323	int bat_status;324	int battery_capacity;325	int bat_charging;326	int bat_connected;327	int ps_connected;328	bool pad_input_event_flag;329	int sequence_number;330	ktime_t time_delayed;331};332 333struct wacom_remote_work_data {334	struct {335		u32 serial;336	} remote[WACOM_MAX_REMOTES];337};338 339struct wacom_wac {340	char name[WACOM_NAME_MAX];341	char pen_name[WACOM_NAME_MAX];342	char touch_name[WACOM_NAME_MAX];343	char pad_name[WACOM_NAME_MAX];344	unsigned char data[WACOM_PKGLEN_MAX];345	int tool[2];346	int id[2];347	__u64 serial[2];348	bool probe_complete;349	bool reporting_data;350	struct wacom_features features;351	struct wacom_shared *shared;352	struct input_dev *pen_input;353	struct input_dev *touch_input;354	struct input_dev *pad_input;355	struct kfifo_rec_ptr_2 *pen_fifo;356	int pid;357	int num_contacts_left;358	u8 bt_features;359	u8 bt_high_speed;360	u8 absring_count;361	u8 relring_count;362	int mode_report;363	int mode_value;364	struct hid_data hid_data;365	bool has_mute_touch_switch;366	bool is_soft_touch_switch;367	bool has_mode_change;368	bool is_direct_mode;369	bool is_invalid_bt_frame;370};371 372#endif373