HID: wacom: drop WACOM_PKGLEN_STATUS
[firefly-linux-kernel-4.4.55.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