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