]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blob - drivers/hid/wacom_wac.h
HID: wacom: Cleanup unsupported device_type for BAMBOO_PT
[mirror_ubuntu-artful-kernel.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 WACOM_21UX2,
121 WACOM_22HD,
122 DTK,
123 WACOM_24HD,
124 WACOM_27QHD,
125 CINTIQ_HYBRID,
126 CINTIQ,
127 WACOM_BEE,
128 WACOM_13HD,
129 WACOM_MO,
130 WIRELESS,
131 BAMBOO_PEN,
132 INTUOSHT,
133 BAMBOO_TOUCH,
134 BAMBOO_PT,
135 WACOM_24HDT,
136 WACOM_27QHDT,
137 BAMBOO_PAD,
138 REMOTE,
139 TABLETPC, /* add new TPC below */
140 TABLETPCE,
141 TABLETPC2FG,
142 MTSCREEN,
143 MTTPC,
144 MTTPC_B,
145 HID_GENERIC,
146 MAX_TYPE
147 };
148
149 struct wacom_features {
150 const char *name;
151 int x_max;
152 int y_max;
153 int pressure_max;
154 int distance_max;
155 int type;
156 int x_resolution;
157 int y_resolution;
158 int numbered_buttons;
159 int x_min;
160 int y_min;
161 int device_type;
162 int x_phy;
163 int y_phy;
164 unsigned unit;
165 int unitExpo;
166 int x_fuzz;
167 int y_fuzz;
168 int pressure_fuzz;
169 int distance_fuzz;
170 unsigned quirks;
171 unsigned touch_max;
172 int oVid;
173 int oPid;
174 int pktlen;
175 bool check_for_hid_type;
176 int hid_type;
177 int last_slot_field;
178 };
179
180 struct wacom_shared {
181 bool stylus_in_proximity;
182 bool touch_down;
183 /* for wireless device to access USB interfaces */
184 unsigned touch_max;
185 int type;
186 struct input_dev *touch_input;
187 struct hid_device *pen;
188 struct hid_device *touch;
189 };
190
191 struct hid_data {
192 __s16 inputmode; /* InputMode HID feature, -1 if non-existent */
193 __s16 inputmode_index; /* InputMode HID feature index in the report */
194 bool inrange_state;
195 bool invert_state;
196 bool tipswitch;
197 int x;
198 int y;
199 int pressure;
200 int width;
201 int height;
202 int id;
203 int cc_index;
204 int cc_value_index;
205 int num_expected;
206 int num_received;
207 };
208
209 struct wacom_wac {
210 char pen_name[WACOM_NAME_MAX];
211 char touch_name[WACOM_NAME_MAX];
212 char pad_name[WACOM_NAME_MAX];
213 char bat_name[WACOM_NAME_MAX];
214 char ac_name[WACOM_NAME_MAX];
215 unsigned char data[WACOM_PKGLEN_MAX];
216 int tool[2];
217 int id[2];
218 __u32 serial[5];
219 bool reporting_data;
220 struct wacom_features features;
221 struct wacom_shared *shared;
222 struct input_dev *pen_input;
223 struct input_dev *touch_input;
224 struct input_dev *pad_input;
225 bool pen_registered;
226 bool touch_registered;
227 bool pad_registered;
228 int pid;
229 int battery_capacity;
230 int num_contacts_left;
231 int bat_charging;
232 int bat_connected;
233 int ps_connected;
234 u8 bt_features;
235 u8 bt_high_speed;
236 struct hid_data hid_data;
237 };
238
239 #endif