drm/amdgpu: fix warning in scheduler
[deliverable/linux.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_NO_INPUT 0x0002
72 #define WACOM_QUIRK_MONITOR 0x0004
73 #define WACOM_QUIRK_BATTERY 0x0008
74
75 /* device types */
76 #define WACOM_DEVICETYPE_NONE 0x0000
77 #define WACOM_DEVICETYPE_PEN 0x0001
78 #define WACOM_DEVICETYPE_TOUCH 0x0002
79 #define WACOM_DEVICETYPE_PAD 0x0004
80
81 #define WACOM_VENDORDEFINED_PEN 0xff0d0001
82
83 #define WACOM_PEN_FIELD(f) (((f)->logical == HID_DG_STYLUS) || \
84 ((f)->physical == HID_DG_STYLUS) || \
85 ((f)->physical == HID_DG_PEN) || \
86 ((f)->application == HID_DG_PEN) || \
87 ((f)->application == HID_DG_DIGITIZER) || \
88 ((f)->application == WACOM_VENDORDEFINED_PEN))
89 #define WACOM_FINGER_FIELD(f) (((f)->logical == HID_DG_FINGER) || \
90 ((f)->physical == HID_DG_FINGER) || \
91 ((f)->application == HID_DG_TOUCHSCREEN))
92
93 enum {
94 PENPARTNER = 0,
95 GRAPHIRE,
96 GRAPHIRE_BT,
97 WACOM_G4,
98 PTU,
99 PL,
100 DTU,
101 DTUS,
102 DTUSX,
103 INTUOS,
104 INTUOS3S,
105 INTUOS3,
106 INTUOS3L,
107 INTUOS4S,
108 INTUOS4,
109 INTUOS4WL,
110 INTUOS4L,
111 INTUOS5S,
112 INTUOS5,
113 INTUOS5L,
114 INTUOSPS,
115 INTUOSPM,
116 INTUOSPL,
117 INTUOSHT,
118 WACOM_21UX2,
119 WACOM_22HD,
120 DTK,
121 WACOM_24HD,
122 WACOM_27QHD,
123 CINTIQ_HYBRID,
124 CINTIQ,
125 WACOM_BEE,
126 WACOM_13HD,
127 WACOM_MO,
128 WIRELESS,
129 BAMBOO_PT,
130 WACOM_24HDT,
131 WACOM_27QHDT,
132 BAMBOO_PAD,
133 TABLETPC, /* add new TPC below */
134 TABLETPCE,
135 TABLETPC2FG,
136 MTSCREEN,
137 MTTPC,
138 MTTPC_B,
139 HID_GENERIC,
140 MAX_TYPE
141 };
142
143 struct wacom_features {
144 const char *name;
145 int x_max;
146 int y_max;
147 int pressure_max;
148 int distance_max;
149 int type;
150 int x_resolution;
151 int y_resolution;
152 int x_min;
153 int y_min;
154 int device_type;
155 int x_phy;
156 int y_phy;
157 unsigned unit;
158 int unitExpo;
159 int x_fuzz;
160 int y_fuzz;
161 int pressure_fuzz;
162 int distance_fuzz;
163 unsigned quirks;
164 unsigned touch_max;
165 int oVid;
166 int oPid;
167 int pktlen;
168 bool check_for_hid_type;
169 int hid_type;
170 int last_slot_field;
171 };
172
173 struct wacom_shared {
174 bool stylus_in_proximity;
175 bool touch_down;
176 /* for wireless device to access USB interfaces */
177 unsigned touch_max;
178 int type;
179 struct input_dev *touch_input;
180 struct hid_device *pen;
181 struct hid_device *touch;
182 };
183
184 struct hid_data {
185 __s16 inputmode; /* InputMode HID feature, -1 if non-existent */
186 __s16 inputmode_index; /* InputMode HID feature index in the report */
187 bool inrange_state;
188 bool invert_state;
189 bool tipswitch;
190 int x;
191 int y;
192 int pressure;
193 int width;
194 int height;
195 int id;
196 };
197
198 struct wacom_wac {
199 char pen_name[WACOM_NAME_MAX];
200 char touch_name[WACOM_NAME_MAX];
201 char pad_name[WACOM_NAME_MAX];
202 char bat_name[WACOM_NAME_MAX];
203 char ac_name[WACOM_NAME_MAX];
204 unsigned char data[WACOM_PKGLEN_MAX];
205 int tool[2];
206 int id[2];
207 __u32 serial[2];
208 bool reporting_data;
209 struct wacom_features features;
210 struct wacom_shared *shared;
211 struct input_dev *pen_input;
212 struct input_dev *touch_input;
213 struct input_dev *pad_input;
214 bool pen_registered;
215 bool touch_registered;
216 bool pad_registered;
217 int pid;
218 int battery_capacity;
219 int num_contacts_left;
220 int bat_charging;
221 int bat_connected;
222 int ps_connected;
223 u8 bt_features;
224 u8 bt_high_speed;
225 struct hid_data hid_data;
226 };
227
228 #endif
This page took 0.046959 seconds and 5 git commands to generate.