]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blob - drivers/hid/wacom_wac.h
HID: wacom: drop WACOM_PKGLEN_STATUS
[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
20 /* packet length for individual models */
21 #define WACOM_PKGLEN_PENPRTN 7
22 #define WACOM_PKGLEN_GRAPHIRE 8
23 #define WACOM_PKGLEN_BBFUN 9
24 #define WACOM_PKGLEN_INTUOS 10
25 #define WACOM_PKGLEN_TPC1FG 5
26 #define WACOM_PKGLEN_TPC1FG_B 10
27 #define WACOM_PKGLEN_TPC2FG 14
28 #define WACOM_PKGLEN_BBTOUCH 20
29 #define WACOM_PKGLEN_BBTOUCH3 64
30 #define WACOM_PKGLEN_BBPEN 10
31 #define WACOM_PKGLEN_WIRELESS 32
32 #define WACOM_PKGLEN_MTOUCH 62
33 #define WACOM_PKGLEN_MTTPC 40
34 #define WACOM_PKGLEN_DTUS 68
35 #define WACOM_PKGLEN_PENABLED 8
36 #define WACOM_PKGLEN_BPAD_TOUCH 32
37 #define WACOM_PKGLEN_BPAD_TOUCH_USB 64
38
39 /* wacom data size per MT contact */
40 #define WACOM_BYTES_PER_MT_PACKET 11
41 #define WACOM_BYTES_PER_24HDT_PACKET 14
42 #define WACOM_BYTES_PER_QHDTHID_PACKET 6
43
44 /* device IDs */
45 #define STYLUS_DEVICE_ID 0x02
46 #define TOUCH_DEVICE_ID 0x03
47 #define CURSOR_DEVICE_ID 0x06
48 #define ERASER_DEVICE_ID 0x0A
49 #define PAD_DEVICE_ID 0x0F
50
51 /* wacom data packet report IDs */
52 #define WACOM_REPORT_PENABLED 2
53 #define WACOM_REPORT_PENABLED_BT 3
54 #define WACOM_REPORT_INTUOSREAD 5
55 #define WACOM_REPORT_INTUOSWRITE 6
56 #define WACOM_REPORT_INTUOSPAD 12
57 #define WACOM_REPORT_INTUOS5PAD 3
58 #define WACOM_REPORT_DTUSPAD 21
59 #define WACOM_REPORT_TPC1FG 6
60 #define WACOM_REPORT_TPC2FG 13
61 #define WACOM_REPORT_TPCMT 13
62 #define WACOM_REPORT_TPCMT2 3
63 #define WACOM_REPORT_TPCHID 15
64 #define WACOM_REPORT_CINTIQ 16
65 #define WACOM_REPORT_CINTIQPAD 17
66 #define WACOM_REPORT_TPCST 16
67 #define WACOM_REPORT_DTUS 17
68 #define WACOM_REPORT_TPC1FGE 18
69 #define WACOM_REPORT_24HDT 1
70 #define WACOM_REPORT_WL 128
71 #define WACOM_REPORT_USB 192
72 #define WACOM_REPORT_BPAD_PEN 3
73 #define WACOM_REPORT_BPAD_TOUCH 16
74
75 /* device quirks */
76 #define WACOM_QUIRK_MULTI_INPUT 0x0001
77 #define WACOM_QUIRK_BBTOUCH_LOWRES 0x0002
78 #define WACOM_QUIRK_NO_INPUT 0x0004
79 #define WACOM_QUIRK_MONITOR 0x0008
80 #define WACOM_QUIRK_BATTERY 0x0010
81
82 #define WACOM_PEN_FIELD(f) (((f)->logical == HID_DG_STYLUS) || \
83 ((f)->physical == HID_DG_STYLUS) || \
84 ((f)->physical == HID_DG_PEN) || \
85 ((f)->application == HID_DG_PEN))
86 #define WACOM_FINGER_FIELD(f) (((f)->logical == HID_DG_FINGER) || \
87 ((f)->physical == HID_DG_FINGER) || \
88 ((f)->application == HID_DG_TOUCHSCREEN))
89
90 enum {
91 PENPARTNER = 0,
92 GRAPHIRE,
93 GRAPHIRE_BT,
94 WACOM_G4,
95 PTU,
96 PL,
97 DTU,
98 DTUS,
99 DTUSX,
100 INTUOS,
101 INTUOS3S,
102 INTUOS3,
103 INTUOS3L,
104 INTUOS4S,
105 INTUOS4,
106 INTUOS4WL,
107 INTUOS4L,
108 INTUOS5S,
109 INTUOS5,
110 INTUOS5L,
111 INTUOSPS,
112 INTUOSPM,
113 INTUOSPL,
114 INTUOSHT,
115 WACOM_21UX2,
116 WACOM_22HD,
117 DTK,
118 WACOM_24HD,
119 WACOM_27QHD,
120 CINTIQ_HYBRID,
121 CINTIQ,
122 WACOM_BEE,
123 WACOM_13HD,
124 WACOM_MO,
125 WIRELESS,
126 BAMBOO_PT,
127 WACOM_24HDT,
128 WACOM_27QHDT,
129 BAMBOO_PAD,
130 TABLETPC, /* add new TPC below */
131 TABLETPCE,
132 TABLETPC2FG,
133 MTSCREEN,
134 MTTPC,
135 MTTPC_B,
136 HID_GENERIC,
137 MAX_TYPE
138 };
139
140 struct wacom_features {
141 const char *name;
142 int x_max;
143 int y_max;
144 int pressure_max;
145 int distance_max;
146 int type;
147 int x_resolution;
148 int y_resolution;
149 int x_min;
150 int y_min;
151 int device_type;
152 int x_phy;
153 int y_phy;
154 unsigned unit;
155 int unitExpo;
156 int x_fuzz;
157 int y_fuzz;
158 int pressure_fuzz;
159 int distance_fuzz;
160 unsigned quirks;
161 unsigned touch_max;
162 int oVid;
163 int oPid;
164 int pktlen;
165 bool check_for_hid_type;
166 int hid_type;
167 int last_slot_field;
168 };
169
170 struct wacom_shared {
171 bool stylus_in_proximity;
172 bool touch_down;
173 /* for wireless device to access USB interfaces */
174 unsigned touch_max;
175 int type;
176 struct input_dev *touch_input;
177 struct hid_device *pen;
178 struct hid_device *touch;
179 };
180
181 struct hid_data {
182 __s16 inputmode; /* InputMode HID feature, -1 if non-existent */
183 __s16 inputmode_index; /* InputMode HID feature index in the report */
184 bool inrange_state;
185 bool invert_state;
186 bool tipswitch;
187 int x;
188 int y;
189 int pressure;
190 int width;
191 int height;
192 int id;
193 };
194
195 struct wacom_wac {
196 char name[WACOM_NAME_MAX];
197 char pad_name[WACOM_NAME_MAX];
198 char bat_name[WACOM_NAME_MAX];
199 char ac_name[WACOM_NAME_MAX];
200 unsigned char data[WACOM_PKGLEN_MAX];
201 int tool[2];
202 int id[2];
203 __u32 serial[2];
204 bool reporting_data;
205 struct wacom_features features;
206 struct wacom_shared *shared;
207 struct input_dev *input;
208 struct input_dev *pad_input;
209 bool input_registered;
210 bool pad_registered;
211 int pid;
212 int battery_capacity;
213 int num_contacts_left;
214 int bat_charging;
215 int ps_connected;
216 u8 bt_features;
217 u8 bt_high_speed;
218 struct hid_data hid_data;
219 };
220
221 #endif