Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
[deliverable/linux.git] / drivers / hid / wacom_wac.h
CommitLineData
3bea733a 1/*
4104d13f 2 * drivers/input/tablet/wacom_wac.h
3bea733a
PC
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
51269fe8 12#include <linux/types.h>
d97a5522 13#include <linux/hid.h>
51269fe8 14
ee54500d 15/* maximum packet length for USB devices */
500d4160 16#define WACOM_PKGLEN_MAX 192
ee54500d 17
57bcfce3 18#define WACOM_NAME_MAX 64
72b236d6
AS
19#define WACOM_MAX_REMOTES 5
20#define WACOM_STATUS_UNKNOWN 255
57bcfce3 21
ee54500d 22/* packet length for individual models */
e33da8a5 23#define WACOM_PKGLEN_BBFUN 9
ee54500d 24#define WACOM_PKGLEN_TPC1FG 5
61616ed0 25#define WACOM_PKGLEN_TPC1FG_B 10
e33da8a5 26#define WACOM_PKGLEN_TPC2FG 14
4a88081e 27#define WACOM_PKGLEN_BBTOUCH 20
4134361a 28#define WACOM_PKGLEN_BBTOUCH3 64
73149ab8 29#define WACOM_PKGLEN_BBPEN 10
d3825d51 30#define WACOM_PKGLEN_WIRELESS 32
d51ddb2b 31#define WACOM_PKGLEN_PENABLED 8
8c97a765
BT
32#define WACOM_PKGLEN_BPAD_TOUCH 32
33#define WACOM_PKGLEN_BPAD_TOUCH_USB 64
1963518b
PC
34
35/* wacom data size per MT contact */
36#define WACOM_BYTES_PER_MT_PACKET 11
b1e4279e 37#define WACOM_BYTES_PER_24HDT_PACKET 14
500d4160 38#define WACOM_BYTES_PER_QHDTHID_PACKET 6
ee54500d 39
ec67bbed 40/* device IDs */
3bea733a 41#define STYLUS_DEVICE_ID 0x02
545f4e99 42#define TOUCH_DEVICE_ID 0x03
3bea733a
PC
43#define CURSOR_DEVICE_ID 0x06
44#define ERASER_DEVICE_ID 0x0A
80d4e8e9 45#define PAD_DEVICE_ID 0x0F
3bea733a 46
cad74700
PC
47/* wacom data packet report IDs */
48#define WACOM_REPORT_PENABLED 2
387142bb 49#define WACOM_REPORT_PENABLED_BT 3
cad74700
PC
50#define WACOM_REPORT_INTUOSREAD 5
51#define WACOM_REPORT_INTUOSWRITE 6
52#define WACOM_REPORT_INTUOSPAD 12
f860e581 53#define WACOM_REPORT_INTUOS5PAD 3
497ab1f2 54#define WACOM_REPORT_DTUSPAD 21
cad74700
PC
55#define WACOM_REPORT_TPC1FG 6
56#define WACOM_REPORT_TPC2FG 13
1963518b 57#define WACOM_REPORT_TPCMT 13
d51ddb2b 58#define WACOM_REPORT_TPCMT2 3
31175a83 59#define WACOM_REPORT_TPCHID 15
500d4160
PC
60#define WACOM_REPORT_CINTIQ 16
61#define WACOM_REPORT_CINTIQPAD 17
31175a83 62#define WACOM_REPORT_TPCST 16
497ab1f2 63#define WACOM_REPORT_DTUS 17
ac173837 64#define WACOM_REPORT_TPC1FGE 18
b1e4279e 65#define WACOM_REPORT_24HDT 1
b5fd2a3e 66#define WACOM_REPORT_WL 128
961794a0 67#define WACOM_REPORT_USB 192
8c97a765
BT
68#define WACOM_REPORT_BPAD_PEN 3
69#define WACOM_REPORT_BPAD_TOUCH 16
72b236d6
AS
70#define WACOM_REPORT_DEVICE_LIST 16
71#define WACOM_REPORT_REMOTE 17
cad74700 72
bc73dd39 73/* device quirks */
f3586d2f 74#define WACOM_QUIRK_BBTOUCH_LOWRES 0x0001
f3586d2f 75#define WACOM_QUIRK_BATTERY 0x0008
bc73dd39 76
aa86b18c
JG
77/* device types */
78#define WACOM_DEVICETYPE_NONE 0x0000
79#define WACOM_DEVICETYPE_PEN 0x0001
80#define WACOM_DEVICETYPE_TOUCH 0x0002
862cf553 81#define WACOM_DEVICETYPE_PAD 0x0004
ccad85cc 82#define WACOM_DEVICETYPE_WL_MONITOR 0x0008
aa86b18c 83
042628ab
JG
84#define WACOM_VENDORDEFINED_PEN 0xff0d0001
85
d97a5522
BT
86#define WACOM_PEN_FIELD(f) (((f)->logical == HID_DG_STYLUS) || \
87 ((f)->physical == HID_DG_STYLUS) || \
61e9e7e4 88 ((f)->physical == HID_DG_PEN) || \
042628ab
JG
89 ((f)->application == HID_DG_PEN) || \
90 ((f)->application == HID_DG_DIGITIZER) || \
91 ((f)->application == WACOM_VENDORDEFINED_PEN))
d97a5522
BT
92#define WACOM_FINGER_FIELD(f) (((f)->logical == HID_DG_FINGER) || \
93 ((f)->physical == HID_DG_FINGER) || \
94 ((f)->application == HID_DG_TOUCHSCREEN))
95
3bea733a
PC
96enum {
97 PENPARTNER = 0,
98 GRAPHIRE,
387142bb 99 GRAPHIRE_BT,
3bea733a
PC
100 WACOM_G4,
101 PTU,
102 PL,
c8f2edc5 103 DTU,
497ab1f2 104 DTUS,
fff00bf8 105 DTUSX,
3bea733a 106 INTUOS,
8d32e3ae 107 INTUOS3S,
3bea733a
PC
108 INTUOS3,
109 INTUOS3L,
6f660f12
PC
110 INTUOS4S,
111 INTUOS4,
81af7e61 112 INTUOS4WL,
6f660f12 113 INTUOS4L,
9fee6195
JG
114 INTUOS5S,
115 INTUOS5,
116 INTUOS5L,
9a35c411
PC
117 INTUOSPS,
118 INTUOSPM,
119 INTUOSPL,
b5fd2a3e 120 INTUOSHT,
3a4b4aaa 121 WACOM_21UX2,
d838c644 122 WACOM_22HD,
a112e9fd 123 DTK,
d838c644 124 WACOM_24HD,
500d4160 125 WACOM_27QHD,
36d3c510 126 CINTIQ_HYBRID,
3bea733a 127 CINTIQ,
0e1763f5 128 WACOM_BEE,
56218563 129 WACOM_13HD,
7ecfbfd3 130 WACOM_MO,
ea2e6024
PC
131 WIRELESS,
132 BAMBOO_PT,
b1e4279e 133 WACOM_24HDT,
500d4160 134 WACOM_27QHDT,
8c97a765 135 BAMBOO_PAD,
72b236d6 136 REMOTE,
ea2e6024 137 TABLETPC, /* add new TPC below */
ac173837 138 TABLETPCE,
ec67bbed 139 TABLETPC2FG,
1963518b 140 MTSCREEN,
6afdc289 141 MTTPC,
d51ddb2b 142 MTTPC_B,
7704ac93 143 HID_GENERIC,
3bea733a
PC
144 MAX_TYPE
145};
146
147struct wacom_features {
e33da8a5 148 const char *name;
3bea733a
PC
149 int x_max;
150 int y_max;
151 int pressure_max;
152 int distance_max;
153 int type;
e35fb8c1
PC
154 int x_resolution;
155 int y_resolution;
70ee06c5 156 int numbered_buttons;
ac414da3
PC
157 int x_min;
158 int y_min;
ec67bbed
PC
159 int device_type;
160 int x_phy;
161 int y_phy;
c669fb2b
BT
162 unsigned unit;
163 int unitExpo;
fed87e65
HR
164 int x_fuzz;
165 int y_fuzz;
166 int pressure_fuzz;
167 int distance_fuzz;
bc73dd39 168 unsigned quirks;
f393ee2b 169 unsigned touch_max;
aea2bf6a
JG
170 int oVid;
171 int oPid;
80befa93 172 int pktlen;
29b47391
BT
173 bool check_for_hid_type;
174 int hid_type;
601a22f3 175 int last_slot_field;
3bea733a
PC
176};
177
4492efff
PC
178struct wacom_shared {
179 bool stylus_in_proximity;
a43c7c53 180 bool touch_down;
961794a0
PC
181 /* for wireless device to access USB interfaces */
182 unsigned touch_max;
183 int type;
184 struct input_dev *touch_input;
a97ac104
BT
185 struct hid_device *pen;
186 struct hid_device *touch;
4492efff
PC
187};
188
7704ac93 189struct hid_data {
5ae6e89f
BT
190 __s16 inputmode; /* InputMode HID feature, -1 if non-existent */
191 __s16 inputmode_index; /* InputMode HID feature index in the report */
7704ac93
BT
192 bool inrange_state;
193 bool invert_state;
194 bool tipswitch;
5ae6e89f
BT
195 int x;
196 int y;
197 int pressure;
198 int width;
199 int height;
200 int id;
1b5d514a
JG
201 int cc_index;
202 int cc_value_index;
203 int num_expected;
204 int num_received;
7704ac93
BT
205};
206
3bea733a 207struct wacom_wac {
2a6cdbdd
JG
208 char pen_name[WACOM_NAME_MAX];
209 char touch_name[WACOM_NAME_MAX];
d2d13f18 210 char pad_name[WACOM_NAME_MAX];
d70420b9 211 char bat_name[WACOM_NAME_MAX];
7dbd229e 212 char ac_name[WACOM_NAME_MAX];
29b47391 213 unsigned char data[WACOM_PKGLEN_MAX];
4fc19381
PC
214 int tool[2];
215 int id[2];
72b236d6 216 __u32 serial[5];
b3bd7ef3 217 bool reporting_data;
e33da8a5 218 struct wacom_features features;
4492efff 219 struct wacom_shared *shared;
2a6cdbdd
JG
220 struct input_dev *pen_input;
221 struct input_dev *touch_input;
d2d13f18 222 struct input_dev *pad_input;
2a6cdbdd
JG
223 bool pen_registered;
224 bool touch_registered;
954df6ad 225 bool pad_registered;
16bf288c 226 int pid;
a1d552cc 227 int battery_capacity;
1963518b 228 int num_contacts_left;
ac8d1010 229 int bat_charging;
71fa641e 230 int bat_connected;
ac8d1010 231 int ps_connected;
f81a1295
BT
232 u8 bt_features;
233 u8 bt_high_speed;
7704ac93 234 struct hid_data hid_data;
3bea733a
PC
235};
236
237#endif
This page took 0.561696 seconds and 5 git commands to generate.