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