lib: lz4: cleanup unaligned access efficiency detection
[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
88 #define WACOM_PEN_FIELD(f) (((f)->logical == HID_DG_STYLUS) || \
89 ((f)->physical == HID_DG_STYLUS) || \
90 ((f)->physical == HID_DG_PEN) || \
91 ((f)->application == HID_DG_PEN) || \
92 ((f)->application == HID_DG_DIGITIZER) || \
93 ((f)->application == WACOM_VENDORDEFINED_PEN))
94 #define WACOM_FINGER_FIELD(f) (((f)->logical == HID_DG_FINGER) || \
95 ((f)->physical == HID_DG_FINGER) || \
96 ((f)->application == HID_DG_TOUCHSCREEN))
97
98 enum {
99 PENPARTNER = 0,
100 GRAPHIRE,
101 GRAPHIRE_BT,
102 WACOM_G4,
103 PTU,
104 PL,
105 DTU,
106 DTUS,
107 DTUSX,
108 INTUOS,
109 INTUOS3S,
110 INTUOS3,
111 INTUOS3L,
112 INTUOS4S,
113 INTUOS4,
114 INTUOS4WL,
115 INTUOS4L,
116 INTUOS5S,
117 INTUOS5,
118 INTUOS5L,
119 INTUOSPS,
120 INTUOSPM,
121 INTUOSPL,
122 WACOM_21UX2,
123 WACOM_22HD,
124 DTK,
125 WACOM_24HD,
126 WACOM_27QHD,
127 CINTIQ_HYBRID,
128 CINTIQ_COMPANION_2,
129 CINTIQ,
130 WACOM_BEE,
131 WACOM_13HD,
132 WACOM_MO,
133 BAMBOO_PEN,
134 INTUOSHT,
135 INTUOSHT2,
136 BAMBOO_TOUCH,
137 BAMBOO_PT,
138 WACOM_24HDT,
139 WACOM_27QHDT,
140 BAMBOO_PAD,
141 WIRELESS,
142 REMOTE,
143 TABLETPC, /* add new TPC below */
144 TABLETPCE,
145 TABLETPC2FG,
146 MTSCREEN,
147 MTTPC,
148 MTTPC_B,
149 HID_GENERIC,
150 MAX_TYPE
151 };
152
153 struct wacom_features {
154 const char *name;
155 int x_max;
156 int y_max;
157 int pressure_max;
158 int distance_max;
159 int type;
160 int x_resolution;
161 int y_resolution;
162 int numbered_buttons;
163 int x_min;
164 int y_min;
165 int device_type;
166 int x_phy;
167 int y_phy;
168 unsigned unit;
169 int unitExpo;
170 int x_fuzz;
171 int y_fuzz;
172 int pressure_fuzz;
173 int distance_fuzz;
174 unsigned quirks;
175 unsigned touch_max;
176 int oVid;
177 int oPid;
178 int pktlen;
179 bool check_for_hid_type;
180 int hid_type;
181 int last_slot_field;
182 };
183
184 struct wacom_shared {
185 bool stylus_in_proximity;
186 bool touch_down;
187 /* for wireless device to access USB interfaces */
188 unsigned touch_max;
189 int type;
190 struct input_dev *touch_input;
191 struct hid_device *pen;
192 struct hid_device *touch;
193 };
194
195 struct hid_data {
196 __s16 inputmode; /* InputMode HID feature, -1 if non-existent */
197 __s16 inputmode_index; /* InputMode HID feature index in the report */
198 bool inrange_state;
199 bool invert_state;
200 bool tipswitch;
201 int x;
202 int y;
203 int pressure;
204 int width;
205 int height;
206 int id;
207 int cc_report;
208 int cc_index;
209 int cc_value_index;
210 int num_expected;
211 int num_received;
212 };
213
214 struct wacom_wac {
215 char pen_name[WACOM_NAME_MAX];
216 char touch_name[WACOM_NAME_MAX];
217 char pad_name[WACOM_NAME_MAX];
218 char bat_name[WACOM_NAME_MAX];
219 char ac_name[WACOM_NAME_MAX];
220 unsigned char data[WACOM_PKGLEN_MAX];
221 int tool[2];
222 int id[2];
223 __u32 serial[5];
224 bool reporting_data;
225 struct wacom_features features;
226 struct wacom_shared *shared;
227 struct input_dev *pen_input;
228 struct input_dev *touch_input;
229 struct input_dev *pad_input;
230 bool pen_registered;
231 bool touch_registered;
232 bool pad_registered;
233 int pid;
234 int battery_capacity;
235 int num_contacts_left;
236 int bat_charging;
237 int bat_connected;
238 int ps_connected;
239 u8 bt_features;
240 u8 bt_high_speed;
241 struct hid_data hid_data;
242 };
243
244 #endif
This page took 0.034454 seconds and 5 git commands to generate.