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