Merge remote-tracking branches 'regulator/topic/tps65218' and 'regulator/topic/tps800...
[deliverable/linux.git] / drivers / hid / wacom_wac.h
1 /*
2 * drivers/input/tablet/wacom_wac.h
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 */
9 #ifndef WACOM_WAC_H
10 #define WACOM_WAC_H
11
12 #include <linux/types.h>
13 #include <linux/hid.h>
14
15 /* maximum packet length for USB devices */
16 #define WACOM_PKGLEN_MAX 192
17
18 #define WACOM_NAME_MAX 64
19 #define WACOM_MAX_REMOTES 5
20 #define WACOM_STATUS_UNKNOWN 255
21
22 /* packet length for individual models */
23 #define WACOM_PKGLEN_BBFUN 9
24 #define WACOM_PKGLEN_TPC1FG 5
25 #define WACOM_PKGLEN_TPC1FG_B 10
26 #define WACOM_PKGLEN_TPC2FG 14
27 #define WACOM_PKGLEN_BBTOUCH 20
28 #define WACOM_PKGLEN_BBTOUCH3 64
29 #define WACOM_PKGLEN_BBPEN 10
30 #define WACOM_PKGLEN_WIRELESS 32
31 #define WACOM_PKGLEN_PENABLED 8
32 #define WACOM_PKGLEN_BPAD_TOUCH 32
33 #define WACOM_PKGLEN_BPAD_TOUCH_USB 64
34
35 /* wacom data size per MT contact */
36 #define WACOM_BYTES_PER_MT_PACKET 11
37 #define WACOM_BYTES_PER_24HDT_PACKET 14
38 #define WACOM_BYTES_PER_QHDTHID_PACKET 6
39
40 /* device IDs */
41 #define STYLUS_DEVICE_ID 0x02
42 #define TOUCH_DEVICE_ID 0x03
43 #define CURSOR_DEVICE_ID 0x06
44 #define ERASER_DEVICE_ID 0x0A
45 #define PAD_DEVICE_ID 0x0F
46
47 /* wacom data packet report IDs */
48 #define WACOM_REPORT_PENABLED 2
49 #define WACOM_REPORT_PENABLED_BT 3
50 #define WACOM_REPORT_INTUOS_ID1 5
51 #define WACOM_REPORT_INTUOS_ID2 6
52 #define WACOM_REPORT_INTUOSPAD 12
53 #define WACOM_REPORT_INTUOS5PAD 3
54 #define WACOM_REPORT_DTUSPAD 21
55 #define WACOM_REPORT_TPC1FG 6
56 #define WACOM_REPORT_TPC2FG 13
57 #define WACOM_REPORT_TPCMT 13
58 #define WACOM_REPORT_TPCMT2 3
59 #define WACOM_REPORT_TPCHID 15
60 #define WACOM_REPORT_CINTIQ 16
61 #define WACOM_REPORT_CINTIQPAD 17
62 #define WACOM_REPORT_TPCST 16
63 #define WACOM_REPORT_DTUS 17
64 #define WACOM_REPORT_TPC1FGE 18
65 #define WACOM_REPORT_24HDT 1
66 #define WACOM_REPORT_WL 128
67 #define WACOM_REPORT_USB 192
68 #define WACOM_REPORT_BPAD_PEN 3
69 #define WACOM_REPORT_BPAD_TOUCH 16
70 #define WACOM_REPORT_DEVICE_LIST 16
71 #define WACOM_REPORT_INTUOS_PEN 16
72 #define WACOM_REPORT_REMOTE 17
73 #define WACOM_REPORT_INTUOSHT2_ID 8
74
75 /* device quirks */
76 #define WACOM_QUIRK_BBTOUCH_LOWRES 0x0001
77 #define WACOM_QUIRK_BATTERY 0x0008
78
79 /* device types */
80 #define WACOM_DEVICETYPE_NONE 0x0000
81 #define WACOM_DEVICETYPE_PEN 0x0001
82 #define WACOM_DEVICETYPE_TOUCH 0x0002
83 #define WACOM_DEVICETYPE_PAD 0x0004
84 #define WACOM_DEVICETYPE_WL_MONITOR 0x0008
85
86 #define WACOM_VENDORDEFINED_PEN 0xff0d0001
87 #define WACOM_G9_PAGE 0xff090000
88 #define WACOM_G9_DIGITIZER (WACOM_G9_PAGE | 0x02)
89 #define WACOM_G9_TOUCHSCREEN (WACOM_G9_PAGE | 0x11)
90 #define WACOM_G11_PAGE 0xff110000
91 #define WACOM_G11_DIGITIZER (WACOM_G11_PAGE | 0x02)
92 #define WACOM_G11_TOUCHSCREEN (WACOM_G11_PAGE | 0x11)
93
94 #define WACOM_PEN_FIELD(f) (((f)->logical == HID_DG_STYLUS) || \
95 ((f)->physical == HID_DG_STYLUS) || \
96 ((f)->physical == HID_DG_PEN) || \
97 ((f)->application == HID_DG_PEN) || \
98 ((f)->application == HID_DG_DIGITIZER) || \
99 ((f)->application == WACOM_VENDORDEFINED_PEN))
100 #define WACOM_FINGER_FIELD(f) (((f)->logical == HID_DG_FINGER) || \
101 ((f)->physical == HID_DG_FINGER) || \
102 ((f)->application == HID_DG_TOUCHSCREEN))
103
104 enum {
105 PENPARTNER = 0,
106 GRAPHIRE,
107 GRAPHIRE_BT,
108 WACOM_G4,
109 PTU,
110 PL,
111 DTU,
112 DTUS,
113 DTUSX,
114 INTUOS,
115 INTUOS3S,
116 INTUOS3,
117 INTUOS3L,
118 INTUOS4S,
119 INTUOS4,
120 INTUOS4WL,
121 INTUOS4L,
122 INTUOS5S,
123 INTUOS5,
124 INTUOS5L,
125 INTUOSPS,
126 INTUOSPM,
127 INTUOSPL,
128 WACOM_21UX2,
129 WACOM_22HD,
130 DTK,
131 WACOM_24HD,
132 WACOM_27QHD,
133 CINTIQ_HYBRID,
134 CINTIQ_COMPANION_2,
135 CINTIQ,
136 WACOM_BEE,
137 WACOM_13HD,
138 WACOM_MO,
139 BAMBOO_PEN,
140 INTUOSHT,
141 INTUOSHT2,
142 BAMBOO_TOUCH,
143 BAMBOO_PT,
144 WACOM_24HDT,
145 WACOM_27QHDT,
146 BAMBOO_PAD,
147 WIRELESS,
148 REMOTE,
149 TABLETPC, /* add new TPC below */
150 TABLETPCE,
151 TABLETPC2FG,
152 MTSCREEN,
153 MTTPC,
154 MTTPC_B,
155 HID_GENERIC,
156 MAX_TYPE
157 };
158
159 struct wacom_features {
160 const char *name;
161 int x_max;
162 int y_max;
163 int pressure_max;
164 int distance_max;
165 int type;
166 int x_resolution;
167 int y_resolution;
168 int numbered_buttons;
169 int x_min;
170 int y_min;
171 int device_type;
172 int x_phy;
173 int y_phy;
174 unsigned unit;
175 int unitExpo;
176 int x_fuzz;
177 int y_fuzz;
178 int pressure_fuzz;
179 int distance_fuzz;
180 int tilt_fuzz;
181 unsigned quirks;
182 unsigned touch_max;
183 int oVid;
184 int oPid;
185 int pktlen;
186 bool check_for_hid_type;
187 int hid_type;
188 int last_slot_field;
189 };
190
191 struct wacom_shared {
192 bool stylus_in_proximity;
193 bool touch_down;
194 /* for wireless device to access USB interfaces */
195 unsigned touch_max;
196 int type;
197 struct input_dev *touch_input;
198 struct hid_device *pen;
199 struct hid_device *touch;
200 };
201
202 struct hid_data {
203 __s16 inputmode; /* InputMode HID feature, -1 if non-existent */
204 __s16 inputmode_index; /* InputMode HID feature index in the report */
205 bool inrange_state;
206 bool invert_state;
207 bool tipswitch;
208 int x;
209 int y;
210 int pressure;
211 int width;
212 int height;
213 int id;
214 int cc_report;
215 int cc_index;
216 int cc_value_index;
217 int num_expected;
218 int num_received;
219 };
220
221 struct wacom_wac {
222 char pen_name[WACOM_NAME_MAX];
223 char touch_name[WACOM_NAME_MAX];
224 char pad_name[WACOM_NAME_MAX];
225 char bat_name[WACOM_NAME_MAX];
226 char ac_name[WACOM_NAME_MAX];
227 unsigned char data[WACOM_PKGLEN_MAX];
228 int tool[2];
229 int id[2];
230 __u32 serial[5];
231 bool reporting_data;
232 struct wacom_features features;
233 struct wacom_shared *shared;
234 struct input_dev *pen_input;
235 struct input_dev *touch_input;
236 struct input_dev *pad_input;
237 bool pen_registered;
238 bool touch_registered;
239 bool pad_registered;
240 int pid;
241 int battery_capacity;
242 int num_contacts_left;
243 int bat_charging;
244 int bat_connected;
245 int ps_connected;
246 u8 bt_features;
247 u8 bt_high_speed;
248 int mode_report;
249 int mode_value;
250 struct hid_data hid_data;
251 };
252
253 #endif
This page took 0.035174 seconds and 5 git commands to generate.