xref: /OK3568_Linux_fs/kernel/drivers/hid/wacom_wac.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-or-later */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * drivers/input/tablet/wacom_wac.h
4*4882a593Smuzhiyun  */
5*4882a593Smuzhiyun #ifndef WACOM_WAC_H
6*4882a593Smuzhiyun #define WACOM_WAC_H
7*4882a593Smuzhiyun 
8*4882a593Smuzhiyun #include <linux/types.h>
9*4882a593Smuzhiyun #include <linux/hid.h>
10*4882a593Smuzhiyun #include <linux/kfifo.h>
11*4882a593Smuzhiyun 
12*4882a593Smuzhiyun /* maximum packet length for USB/BT devices */
13*4882a593Smuzhiyun #define WACOM_PKGLEN_MAX	361
14*4882a593Smuzhiyun 
15*4882a593Smuzhiyun #define WACOM_NAME_MAX		64
16*4882a593Smuzhiyun #define WACOM_MAX_REMOTES	5
17*4882a593Smuzhiyun #define WACOM_STATUS_UNKNOWN	255
18*4882a593Smuzhiyun 
19*4882a593Smuzhiyun /* packet length for individual models */
20*4882a593Smuzhiyun #define WACOM_PKGLEN_BBFUN	 9
21*4882a593Smuzhiyun #define WACOM_PKGLEN_TPC1FG	 5
22*4882a593Smuzhiyun #define WACOM_PKGLEN_TPC1FG_B	10
23*4882a593Smuzhiyun #define WACOM_PKGLEN_TPC2FG	14
24*4882a593Smuzhiyun #define WACOM_PKGLEN_BBTOUCH	20
25*4882a593Smuzhiyun #define WACOM_PKGLEN_BBTOUCH3	64
26*4882a593Smuzhiyun #define WACOM_PKGLEN_BBPEN	10
27*4882a593Smuzhiyun #define WACOM_PKGLEN_WIRELESS	32
28*4882a593Smuzhiyun #define WACOM_PKGLEN_PENABLED	 8
29*4882a593Smuzhiyun #define WACOM_PKGLEN_BPAD_TOUCH	32
30*4882a593Smuzhiyun #define WACOM_PKGLEN_BPAD_TOUCH_USB	64
31*4882a593Smuzhiyun 
32*4882a593Smuzhiyun /* wacom data size per MT contact */
33*4882a593Smuzhiyun #define WACOM_BYTES_PER_MT_PACKET	11
34*4882a593Smuzhiyun #define WACOM_BYTES_PER_24HDT_PACKET	14
35*4882a593Smuzhiyun #define WACOM_BYTES_PER_QHDTHID_PACKET	 6
36*4882a593Smuzhiyun 
37*4882a593Smuzhiyun /* device IDs */
38*4882a593Smuzhiyun #define STYLUS_DEVICE_ID	0x02
39*4882a593Smuzhiyun #define TOUCH_DEVICE_ID		0x03
40*4882a593Smuzhiyun #define CURSOR_DEVICE_ID	0x06
41*4882a593Smuzhiyun #define ERASER_DEVICE_ID	0x0A
42*4882a593Smuzhiyun #define PAD_DEVICE_ID		0x0F
43*4882a593Smuzhiyun 
44*4882a593Smuzhiyun /* wacom data packet report IDs */
45*4882a593Smuzhiyun #define WACOM_REPORT_PENABLED		2
46*4882a593Smuzhiyun #define WACOM_REPORT_PENABLED_BT	3
47*4882a593Smuzhiyun #define WACOM_REPORT_INTUOS_ID1		5
48*4882a593Smuzhiyun #define WACOM_REPORT_INTUOS_ID2		6
49*4882a593Smuzhiyun #define WACOM_REPORT_INTUOSPAD		12
50*4882a593Smuzhiyun #define WACOM_REPORT_INTUOS5PAD		3
51*4882a593Smuzhiyun #define WACOM_REPORT_DTUSPAD		21
52*4882a593Smuzhiyun #define WACOM_REPORT_TPC1FG		6
53*4882a593Smuzhiyun #define WACOM_REPORT_TPC2FG		13
54*4882a593Smuzhiyun #define WACOM_REPORT_TPCMT		13
55*4882a593Smuzhiyun #define WACOM_REPORT_TPCMT2		3
56*4882a593Smuzhiyun #define WACOM_REPORT_TPCHID		15
57*4882a593Smuzhiyun #define WACOM_REPORT_CINTIQ		16
58*4882a593Smuzhiyun #define WACOM_REPORT_CINTIQPAD		17
59*4882a593Smuzhiyun #define WACOM_REPORT_TPCST		16
60*4882a593Smuzhiyun #define WACOM_REPORT_DTUS		17
61*4882a593Smuzhiyun #define WACOM_REPORT_TPC1FGE		18
62*4882a593Smuzhiyun #define WACOM_REPORT_24HDT		1
63*4882a593Smuzhiyun #define WACOM_REPORT_WL			128
64*4882a593Smuzhiyun #define WACOM_REPORT_USB		192
65*4882a593Smuzhiyun #define WACOM_REPORT_BPAD_PEN		3
66*4882a593Smuzhiyun #define WACOM_REPORT_BPAD_TOUCH		16
67*4882a593Smuzhiyun #define WACOM_REPORT_DEVICE_LIST	16
68*4882a593Smuzhiyun #define WACOM_REPORT_INTUOS_PEN		16
69*4882a593Smuzhiyun #define WACOM_REPORT_REMOTE		17
70*4882a593Smuzhiyun #define WACOM_REPORT_INTUOSHT2_ID	8
71*4882a593Smuzhiyun 
72*4882a593Smuzhiyun /* wacom command report ids */
73*4882a593Smuzhiyun #define WAC_CMD_WL_LED_CONTROL          0x03
74*4882a593Smuzhiyun #define WAC_CMD_LED_CONTROL             0x20
75*4882a593Smuzhiyun #define WAC_CMD_ICON_START              0x21
76*4882a593Smuzhiyun #define WAC_CMD_ICON_XFER               0x23
77*4882a593Smuzhiyun #define WAC_CMD_ICON_BT_XFER            0x26
78*4882a593Smuzhiyun #define WAC_CMD_DELETE_PAIRING          0x20
79*4882a593Smuzhiyun #define WAC_CMD_LED_CONTROL_GENERIC     0x32
80*4882a593Smuzhiyun #define WAC_CMD_UNPAIR_ALL              0xFF
81*4882a593Smuzhiyun #define WAC_CMD_WL_INTUOSP2             0x82
82*4882a593Smuzhiyun 
83*4882a593Smuzhiyun /* device quirks */
84*4882a593Smuzhiyun #define WACOM_QUIRK_BBTOUCH_LOWRES	0x0001
85*4882a593Smuzhiyun #define WACOM_QUIRK_SENSE		0x0002
86*4882a593Smuzhiyun #define WACOM_QUIRK_AESPEN		0x0004
87*4882a593Smuzhiyun #define WACOM_QUIRK_BATTERY		0x0008
88*4882a593Smuzhiyun #define WACOM_QUIRK_TOOLSERIAL		0x0010
89*4882a593Smuzhiyun 
90*4882a593Smuzhiyun /* device types */
91*4882a593Smuzhiyun #define WACOM_DEVICETYPE_NONE           0x0000
92*4882a593Smuzhiyun #define WACOM_DEVICETYPE_PEN            0x0001
93*4882a593Smuzhiyun #define WACOM_DEVICETYPE_TOUCH          0x0002
94*4882a593Smuzhiyun #define WACOM_DEVICETYPE_PAD            0x0004
95*4882a593Smuzhiyun #define WACOM_DEVICETYPE_WL_MONITOR     0x0008
96*4882a593Smuzhiyun #define WACOM_DEVICETYPE_DIRECT         0x0010
97*4882a593Smuzhiyun 
98*4882a593Smuzhiyun #define WACOM_POWER_SUPPLY_STATUS_AUTO  -1
99*4882a593Smuzhiyun 
100*4882a593Smuzhiyun #define WACOM_HID_UP_WACOMDIGITIZER     0xff0d0000
101*4882a593Smuzhiyun #define WACOM_HID_SP_PAD                0x00040000
102*4882a593Smuzhiyun #define WACOM_HID_SP_BUTTON             0x00090000
103*4882a593Smuzhiyun #define WACOM_HID_SP_DIGITIZER          0x000d0000
104*4882a593Smuzhiyun #define WACOM_HID_SP_DIGITIZERINFO      0x00100000
105*4882a593Smuzhiyun #define WACOM_HID_WD_DIGITIZER          (WACOM_HID_UP_WACOMDIGITIZER | 0x01)
106*4882a593Smuzhiyun #define WACOM_HID_WD_PEN                (WACOM_HID_UP_WACOMDIGITIZER | 0x02)
107*4882a593Smuzhiyun #define WACOM_HID_WD_SENSE              (WACOM_HID_UP_WACOMDIGITIZER | 0x36)
108*4882a593Smuzhiyun #define WACOM_HID_WD_DIGITIZERFNKEYS    (WACOM_HID_UP_WACOMDIGITIZER | 0x39)
109*4882a593Smuzhiyun #define WACOM_HID_WD_SERIALNUMBER       (WACOM_HID_UP_WACOMDIGITIZER | 0x5b)
110*4882a593Smuzhiyun #define WACOM_HID_WD_SERIALHI           (WACOM_HID_UP_WACOMDIGITIZER | 0x5c)
111*4882a593Smuzhiyun #define WACOM_HID_WD_TOOLTYPE           (WACOM_HID_UP_WACOMDIGITIZER | 0x77)
112*4882a593Smuzhiyun #define WACOM_HID_WD_DISTANCE           (WACOM_HID_UP_WACOMDIGITIZER | 0x0132)
113*4882a593Smuzhiyun #define WACOM_HID_WD_TOUCHSTRIP         (WACOM_HID_UP_WACOMDIGITIZER | 0x0136)
114*4882a593Smuzhiyun #define WACOM_HID_WD_TOUCHSTRIP2        (WACOM_HID_UP_WACOMDIGITIZER | 0x0137)
115*4882a593Smuzhiyun #define WACOM_HID_WD_TOUCHRING          (WACOM_HID_UP_WACOMDIGITIZER | 0x0138)
116*4882a593Smuzhiyun #define WACOM_HID_WD_TOUCHRINGSTATUS    (WACOM_HID_UP_WACOMDIGITIZER | 0x0139)
117*4882a593Smuzhiyun #define WACOM_HID_WD_REPORT_VALID       (WACOM_HID_UP_WACOMDIGITIZER | 0x01d0)
118*4882a593Smuzhiyun #define WACOM_HID_WD_ACCELEROMETER_X    (WACOM_HID_UP_WACOMDIGITIZER | 0x0401)
119*4882a593Smuzhiyun #define WACOM_HID_WD_ACCELEROMETER_Y    (WACOM_HID_UP_WACOMDIGITIZER | 0x0402)
120*4882a593Smuzhiyun #define WACOM_HID_WD_ACCELEROMETER_Z    (WACOM_HID_UP_WACOMDIGITIZER | 0x0403)
121*4882a593Smuzhiyun #define WACOM_HID_WD_BATTERY_CHARGING   (WACOM_HID_UP_WACOMDIGITIZER | 0x0404)
122*4882a593Smuzhiyun #define WACOM_HID_WD_TOUCHONOFF         (WACOM_HID_UP_WACOMDIGITIZER | 0x0454)
123*4882a593Smuzhiyun #define WACOM_HID_WD_BATTERY_LEVEL      (WACOM_HID_UP_WACOMDIGITIZER | 0x043b)
124*4882a593Smuzhiyun #define WACOM_HID_WD_EXPRESSKEY00       (WACOM_HID_UP_WACOMDIGITIZER | 0x0910)
125*4882a593Smuzhiyun #define WACOM_HID_WD_EXPRESSKEYCAP00    (WACOM_HID_UP_WACOMDIGITIZER | 0x0940)
126*4882a593Smuzhiyun #define WACOM_HID_WD_MODE_CHANGE        (WACOM_HID_UP_WACOMDIGITIZER | 0x0980)
127*4882a593Smuzhiyun #define WACOM_HID_WD_MUTE_DEVICE        (WACOM_HID_UP_WACOMDIGITIZER | 0x0981)
128*4882a593Smuzhiyun #define WACOM_HID_WD_CONTROLPANEL       (WACOM_HID_UP_WACOMDIGITIZER | 0x0982)
129*4882a593Smuzhiyun #define WACOM_HID_WD_ONSCREEN_KEYBOARD  (WACOM_HID_UP_WACOMDIGITIZER | 0x0983)
130*4882a593Smuzhiyun #define WACOM_HID_WD_BUTTONCONFIG       (WACOM_HID_UP_WACOMDIGITIZER | 0x0986)
131*4882a593Smuzhiyun #define WACOM_HID_WD_BUTTONHOME         (WACOM_HID_UP_WACOMDIGITIZER | 0x0990)
132*4882a593Smuzhiyun #define WACOM_HID_WD_BUTTONUP           (WACOM_HID_UP_WACOMDIGITIZER | 0x0991)
133*4882a593Smuzhiyun #define WACOM_HID_WD_BUTTONDOWN         (WACOM_HID_UP_WACOMDIGITIZER | 0x0992)
134*4882a593Smuzhiyun #define WACOM_HID_WD_BUTTONLEFT         (WACOM_HID_UP_WACOMDIGITIZER | 0x0993)
135*4882a593Smuzhiyun #define WACOM_HID_WD_BUTTONRIGHT        (WACOM_HID_UP_WACOMDIGITIZER | 0x0994)
136*4882a593Smuzhiyun #define WACOM_HID_WD_BUTTONCENTER       (WACOM_HID_UP_WACOMDIGITIZER | 0x0995)
137*4882a593Smuzhiyun #define WACOM_HID_WD_FINGERWHEEL        (WACOM_HID_UP_WACOMDIGITIZER | 0x0d03)
138*4882a593Smuzhiyun #define WACOM_HID_WD_OFFSETLEFT         (WACOM_HID_UP_WACOMDIGITIZER | 0x0d30)
139*4882a593Smuzhiyun #define WACOM_HID_WD_OFFSETTOP          (WACOM_HID_UP_WACOMDIGITIZER | 0x0d31)
140*4882a593Smuzhiyun #define WACOM_HID_WD_OFFSETRIGHT        (WACOM_HID_UP_WACOMDIGITIZER | 0x0d32)
141*4882a593Smuzhiyun #define WACOM_HID_WD_OFFSETBOTTOM       (WACOM_HID_UP_WACOMDIGITIZER | 0x0d33)
142*4882a593Smuzhiyun #define WACOM_HID_WD_DATAMODE           (WACOM_HID_UP_WACOMDIGITIZER | 0x1002)
143*4882a593Smuzhiyun #define WACOM_HID_WD_DIGITIZERINFO      (WACOM_HID_UP_WACOMDIGITIZER | 0x1013)
144*4882a593Smuzhiyun #define WACOM_HID_WD_TOUCH_RING_SETTING (WACOM_HID_UP_WACOMDIGITIZER | 0x1032)
145*4882a593Smuzhiyun #define WACOM_HID_UP_G9                 0xff090000
146*4882a593Smuzhiyun #define WACOM_HID_G9_PEN                (WACOM_HID_UP_G9 | 0x02)
147*4882a593Smuzhiyun #define WACOM_HID_G9_TOUCHSCREEN        (WACOM_HID_UP_G9 | 0x11)
148*4882a593Smuzhiyun #define WACOM_HID_UP_G11                0xff110000
149*4882a593Smuzhiyun #define WACOM_HID_G11_PEN               (WACOM_HID_UP_G11 | 0x02)
150*4882a593Smuzhiyun #define WACOM_HID_G11_TOUCHSCREEN       (WACOM_HID_UP_G11 | 0x11)
151*4882a593Smuzhiyun #define WACOM_HID_UP_WACOMTOUCH         0xff000000
152*4882a593Smuzhiyun #define WACOM_HID_WT_TOUCHSCREEN        (WACOM_HID_UP_WACOMTOUCH | 0x04)
153*4882a593Smuzhiyun #define WACOM_HID_WT_TOUCHPAD           (WACOM_HID_UP_WACOMTOUCH | 0x05)
154*4882a593Smuzhiyun #define WACOM_HID_WT_CONTACTMAX         (WACOM_HID_UP_WACOMTOUCH | 0x55)
155*4882a593Smuzhiyun #define WACOM_HID_WT_SERIALNUMBER       (WACOM_HID_UP_WACOMTOUCH | 0x5b)
156*4882a593Smuzhiyun #define WACOM_HID_WT_X                  (WACOM_HID_UP_WACOMTOUCH | 0x130)
157*4882a593Smuzhiyun #define WACOM_HID_WT_Y                  (WACOM_HID_UP_WACOMTOUCH | 0x131)
158*4882a593Smuzhiyun #define WACOM_HID_WT_REPORT_VALID       (WACOM_HID_UP_WACOMTOUCH | 0x1d0)
159*4882a593Smuzhiyun 
160*4882a593Smuzhiyun #define WACOM_BATTERY_USAGE(f)	(((f)->hid == HID_DG_BATTERYSTRENGTH) || \
161*4882a593Smuzhiyun 				 ((f)->hid == WACOM_HID_WD_BATTERY_CHARGING) || \
162*4882a593Smuzhiyun 				 ((f)->hid == WACOM_HID_WD_BATTERY_LEVEL))
163*4882a593Smuzhiyun 
164*4882a593Smuzhiyun #define WACOM_PAD_FIELD(f)	(((f)->physical == HID_DG_TABLETFUNCTIONKEY) || \
165*4882a593Smuzhiyun 				 ((f)->physical == WACOM_HID_WD_DIGITIZERFNKEYS) || \
166*4882a593Smuzhiyun 				 ((f)->physical == WACOM_HID_WD_DIGITIZERINFO))
167*4882a593Smuzhiyun 
168*4882a593Smuzhiyun #define WACOM_PEN_FIELD(f)	(((f)->logical == HID_DG_STYLUS) || \
169*4882a593Smuzhiyun 				 ((f)->physical == HID_DG_STYLUS) || \
170*4882a593Smuzhiyun 				 ((f)->physical == HID_DG_PEN) || \
171*4882a593Smuzhiyun 				 ((f)->application == HID_DG_PEN) || \
172*4882a593Smuzhiyun 				 ((f)->application == HID_DG_DIGITIZER) || \
173*4882a593Smuzhiyun 				 ((f)->application == WACOM_HID_WD_PEN) || \
174*4882a593Smuzhiyun 				 ((f)->application == WACOM_HID_WD_DIGITIZER) || \
175*4882a593Smuzhiyun 				 ((f)->application == WACOM_HID_G9_PEN) || \
176*4882a593Smuzhiyun 				 ((f)->application == WACOM_HID_G11_PEN))
177*4882a593Smuzhiyun #define WACOM_FINGER_FIELD(f)	(((f)->logical == HID_DG_FINGER) || \
178*4882a593Smuzhiyun 				 ((f)->physical == HID_DG_FINGER) || \
179*4882a593Smuzhiyun 				 ((f)->application == HID_DG_TOUCHSCREEN) || \
180*4882a593Smuzhiyun 				 ((f)->application == WACOM_HID_G9_TOUCHSCREEN) || \
181*4882a593Smuzhiyun 				 ((f)->application == WACOM_HID_G11_TOUCHSCREEN) || \
182*4882a593Smuzhiyun 				 ((f)->application == WACOM_HID_WT_TOUCHPAD) || \
183*4882a593Smuzhiyun 				 ((f)->application == HID_DG_TOUCHPAD))
184*4882a593Smuzhiyun 
185*4882a593Smuzhiyun #define WACOM_DIRECT_DEVICE(f)	(((f)->application == HID_DG_TOUCHSCREEN) || \
186*4882a593Smuzhiyun 				 ((f)->application == WACOM_HID_WT_TOUCHSCREEN) || \
187*4882a593Smuzhiyun 				 ((f)->application == HID_DG_PEN) || \
188*4882a593Smuzhiyun 				 ((f)->application == WACOM_HID_WD_PEN))
189*4882a593Smuzhiyun 
190*4882a593Smuzhiyun enum {
191*4882a593Smuzhiyun 	PENPARTNER = 0,
192*4882a593Smuzhiyun 	GRAPHIRE,
193*4882a593Smuzhiyun 	GRAPHIRE_BT,
194*4882a593Smuzhiyun 	WACOM_G4,
195*4882a593Smuzhiyun 	PTU,
196*4882a593Smuzhiyun 	PL,
197*4882a593Smuzhiyun 	DTU,
198*4882a593Smuzhiyun 	DTUS,
199*4882a593Smuzhiyun 	DTUSX,
200*4882a593Smuzhiyun 	INTUOS,
201*4882a593Smuzhiyun 	INTUOS3S,
202*4882a593Smuzhiyun 	INTUOS3,
203*4882a593Smuzhiyun 	INTUOS3L,
204*4882a593Smuzhiyun 	INTUOS4S,
205*4882a593Smuzhiyun 	INTUOS4,
206*4882a593Smuzhiyun 	INTUOS4WL,
207*4882a593Smuzhiyun 	INTUOS4L,
208*4882a593Smuzhiyun 	INTUOS5S,
209*4882a593Smuzhiyun 	INTUOS5,
210*4882a593Smuzhiyun 	INTUOS5L,
211*4882a593Smuzhiyun 	INTUOSPS,
212*4882a593Smuzhiyun 	INTUOSPM,
213*4882a593Smuzhiyun 	INTUOSPL,
214*4882a593Smuzhiyun 	INTUOSP2_BT,
215*4882a593Smuzhiyun 	INTUOSP2S_BT,
216*4882a593Smuzhiyun 	INTUOSHT3_BT,
217*4882a593Smuzhiyun 	WACOM_21UX2,
218*4882a593Smuzhiyun 	WACOM_22HD,
219*4882a593Smuzhiyun 	DTK,
220*4882a593Smuzhiyun 	WACOM_24HD,
221*4882a593Smuzhiyun 	WACOM_27QHD,
222*4882a593Smuzhiyun 	CINTIQ_HYBRID,
223*4882a593Smuzhiyun 	CINTIQ_COMPANION_2,
224*4882a593Smuzhiyun 	CINTIQ,
225*4882a593Smuzhiyun 	WACOM_BEE,
226*4882a593Smuzhiyun 	WACOM_13HD,
227*4882a593Smuzhiyun 	WACOM_MO,
228*4882a593Smuzhiyun 	BAMBOO_PEN,
229*4882a593Smuzhiyun 	INTUOSHT,
230*4882a593Smuzhiyun 	INTUOSHT2,
231*4882a593Smuzhiyun 	BAMBOO_TOUCH,
232*4882a593Smuzhiyun 	BAMBOO_PT,
233*4882a593Smuzhiyun 	WACOM_24HDT,
234*4882a593Smuzhiyun 	WACOM_27QHDT,
235*4882a593Smuzhiyun 	BAMBOO_PAD,
236*4882a593Smuzhiyun 	WIRELESS,
237*4882a593Smuzhiyun 	REMOTE,
238*4882a593Smuzhiyun 	TABLETPC,   /* add new TPC below */
239*4882a593Smuzhiyun 	TABLETPCE,
240*4882a593Smuzhiyun 	TABLETPC2FG,
241*4882a593Smuzhiyun 	MTSCREEN,
242*4882a593Smuzhiyun 	MTTPC,
243*4882a593Smuzhiyun 	MTTPC_B,
244*4882a593Smuzhiyun 	HID_GENERIC,
245*4882a593Smuzhiyun 	MAX_TYPE
246*4882a593Smuzhiyun };
247*4882a593Smuzhiyun 
248*4882a593Smuzhiyun struct wacom_features {
249*4882a593Smuzhiyun 	const char *name;
250*4882a593Smuzhiyun 	int x_max;
251*4882a593Smuzhiyun 	int y_max;
252*4882a593Smuzhiyun 	int pressure_max;
253*4882a593Smuzhiyun 	int distance_max;
254*4882a593Smuzhiyun 	int type;
255*4882a593Smuzhiyun 	int x_resolution;
256*4882a593Smuzhiyun 	int y_resolution;
257*4882a593Smuzhiyun 	int numbered_buttons;
258*4882a593Smuzhiyun 	int offset_left;
259*4882a593Smuzhiyun 	int offset_right;
260*4882a593Smuzhiyun 	int offset_top;
261*4882a593Smuzhiyun 	int offset_bottom;
262*4882a593Smuzhiyun 	int device_type;
263*4882a593Smuzhiyun 	int x_phy;
264*4882a593Smuzhiyun 	int y_phy;
265*4882a593Smuzhiyun 	unsigned unit;
266*4882a593Smuzhiyun 	int unitExpo;
267*4882a593Smuzhiyun 	int x_fuzz;
268*4882a593Smuzhiyun 	int y_fuzz;
269*4882a593Smuzhiyun 	int pressure_fuzz;
270*4882a593Smuzhiyun 	int distance_fuzz;
271*4882a593Smuzhiyun 	int tilt_fuzz;
272*4882a593Smuzhiyun 	unsigned quirks;
273*4882a593Smuzhiyun 	unsigned touch_max;
274*4882a593Smuzhiyun 	int oVid;
275*4882a593Smuzhiyun 	int oPid;
276*4882a593Smuzhiyun 	int pktlen;
277*4882a593Smuzhiyun 	bool check_for_hid_type;
278*4882a593Smuzhiyun 	int hid_type;
279*4882a593Smuzhiyun };
280*4882a593Smuzhiyun 
281*4882a593Smuzhiyun struct wacom_shared {
282*4882a593Smuzhiyun 	bool stylus_in_proximity;
283*4882a593Smuzhiyun 	bool touch_down;
284*4882a593Smuzhiyun 	/* for wireless device to access USB interfaces */
285*4882a593Smuzhiyun 	unsigned touch_max;
286*4882a593Smuzhiyun 	int type;
287*4882a593Smuzhiyun 	struct input_dev *touch_input;
288*4882a593Smuzhiyun 	struct hid_device *pen;
289*4882a593Smuzhiyun 	struct hid_device *touch;
290*4882a593Smuzhiyun 	bool has_mute_touch_switch;
291*4882a593Smuzhiyun 	bool is_touch_on;
292*4882a593Smuzhiyun };
293*4882a593Smuzhiyun 
294*4882a593Smuzhiyun struct hid_data {
295*4882a593Smuzhiyun 	__s16 inputmode;	/* InputMode HID feature, -1 if non-existent */
296*4882a593Smuzhiyun 	__s16 inputmode_index;	/* InputMode HID feature index in the report */
297*4882a593Smuzhiyun 	bool sense_state;
298*4882a593Smuzhiyun 	bool inrange_state;
299*4882a593Smuzhiyun 	bool invert_state;
300*4882a593Smuzhiyun 	bool tipswitch;
301*4882a593Smuzhiyun 	bool barrelswitch;
302*4882a593Smuzhiyun 	bool barrelswitch2;
303*4882a593Smuzhiyun 	bool confidence;
304*4882a593Smuzhiyun 	int x;
305*4882a593Smuzhiyun 	int y;
306*4882a593Smuzhiyun 	int pressure;
307*4882a593Smuzhiyun 	int width;
308*4882a593Smuzhiyun 	int height;
309*4882a593Smuzhiyun 	int id;
310*4882a593Smuzhiyun 	int cc_report;
311*4882a593Smuzhiyun 	int cc_index;
312*4882a593Smuzhiyun 	int cc_value_index;
313*4882a593Smuzhiyun 	int last_slot_field;
314*4882a593Smuzhiyun 	int num_expected;
315*4882a593Smuzhiyun 	int num_received;
316*4882a593Smuzhiyun 	int bat_status;
317*4882a593Smuzhiyun 	int battery_capacity;
318*4882a593Smuzhiyun 	int bat_charging;
319*4882a593Smuzhiyun 	int bat_connected;
320*4882a593Smuzhiyun 	int ps_connected;
321*4882a593Smuzhiyun 	bool pad_input_event_flag;
322*4882a593Smuzhiyun };
323*4882a593Smuzhiyun 
324*4882a593Smuzhiyun struct wacom_remote_data {
325*4882a593Smuzhiyun 	struct {
326*4882a593Smuzhiyun 		u32 serial;
327*4882a593Smuzhiyun 		bool connected;
328*4882a593Smuzhiyun 	} remote[WACOM_MAX_REMOTES];
329*4882a593Smuzhiyun };
330*4882a593Smuzhiyun 
331*4882a593Smuzhiyun struct wacom_wac {
332*4882a593Smuzhiyun 	char name[WACOM_NAME_MAX];
333*4882a593Smuzhiyun 	char pen_name[WACOM_NAME_MAX];
334*4882a593Smuzhiyun 	char touch_name[WACOM_NAME_MAX];
335*4882a593Smuzhiyun 	char pad_name[WACOM_NAME_MAX];
336*4882a593Smuzhiyun 	unsigned char data[WACOM_PKGLEN_MAX];
337*4882a593Smuzhiyun 	int tool[2];
338*4882a593Smuzhiyun 	int id[2];
339*4882a593Smuzhiyun 	__u64 serial[2];
340*4882a593Smuzhiyun 	bool reporting_data;
341*4882a593Smuzhiyun 	struct wacom_features features;
342*4882a593Smuzhiyun 	struct wacom_shared *shared;
343*4882a593Smuzhiyun 	struct input_dev *pen_input;
344*4882a593Smuzhiyun 	struct input_dev *touch_input;
345*4882a593Smuzhiyun 	struct input_dev *pad_input;
346*4882a593Smuzhiyun 	struct kfifo_rec_ptr_2 *pen_fifo;
347*4882a593Smuzhiyun 	int pid;
348*4882a593Smuzhiyun 	int num_contacts_left;
349*4882a593Smuzhiyun 	u8 bt_features;
350*4882a593Smuzhiyun 	u8 bt_high_speed;
351*4882a593Smuzhiyun 	int mode_report;
352*4882a593Smuzhiyun 	int mode_value;
353*4882a593Smuzhiyun 	struct hid_data hid_data;
354*4882a593Smuzhiyun 	bool has_mute_touch_switch;
355*4882a593Smuzhiyun 	bool has_mode_change;
356*4882a593Smuzhiyun 	bool is_direct_mode;
357*4882a593Smuzhiyun 	bool is_invalid_bt_frame;
358*4882a593Smuzhiyun };
359*4882a593Smuzhiyun 
360*4882a593Smuzhiyun #endif
361