]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blame - drivers/hid/wacom_wac.h
HID: wacom: add defines for new Cintiq and DTU outbound tracking
[mirror_ubuntu-artful-kernel.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
DT
12#include <linux/types.h>
13
ee54500d 14/* maximum packet length for USB devices */
497ab1f2 15#define WACOM_PKGLEN_MAX 68
ee54500d 16
57bcfce3
PC
17#define WACOM_NAME_MAX 64
18
ee54500d
PC
19/* packet length for individual models */
20#define WACOM_PKGLEN_PENPRTN 7
21#define WACOM_PKGLEN_GRAPHIRE 8
e33da8a5
JC
22#define WACOM_PKGLEN_BBFUN 9
23#define WACOM_PKGLEN_INTUOS 10
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
1963518b 31#define WACOM_PKGLEN_MTOUCH 62
6afdc289 32#define WACOM_PKGLEN_MTTPC 40
497ab1f2 33#define WACOM_PKGLEN_DTUS 68
d51ddb2b 34#define WACOM_PKGLEN_PENABLED 8
1963518b
PC
35
36/* wacom data size per MT contact */
37#define WACOM_BYTES_PER_MT_PACKET 11
b1e4279e 38#define WACOM_BYTES_PER_24HDT_PACKET 14
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
PC
59#define WACOM_REPORT_TPCHID 15
60#define WACOM_REPORT_TPCST 16
497ab1f2 61#define WACOM_REPORT_DTUS 17
ac173837 62#define WACOM_REPORT_TPC1FGE 18
b1e4279e 63#define WACOM_REPORT_24HDT 1
b5fd2a3e 64#define WACOM_REPORT_WL 128
961794a0 65#define WACOM_REPORT_USB 192
cad74700 66
bc73dd39
HR
67/* device quirks */
68#define WACOM_QUIRK_MULTI_INPUT 0x0001
f4ccbef2 69#define WACOM_QUIRK_BBTOUCH_LOWRES 0x0002
d3825d51
CB
70#define WACOM_QUIRK_NO_INPUT 0x0004
71#define WACOM_QUIRK_MONITOR 0x0008
ac8d1010 72#define WACOM_QUIRK_BATTERY 0x0010
bc73dd39 73
3bea733a
PC
74enum {
75 PENPARTNER = 0,
76 GRAPHIRE,
387142bb 77 GRAPHIRE_BT,
3bea733a
PC
78 WACOM_G4,
79 PTU,
80 PL,
c8f2edc5 81 DTU,
497ab1f2 82 DTUS,
3bea733a 83 INTUOS,
8d32e3ae 84 INTUOS3S,
3bea733a
PC
85 INTUOS3,
86 INTUOS3L,
6f660f12
PC
87 INTUOS4S,
88 INTUOS4,
81af7e61 89 INTUOS4WL,
6f660f12 90 INTUOS4L,
9fee6195
JG
91 INTUOS5S,
92 INTUOS5,
93 INTUOS5L,
9a35c411
PC
94 INTUOSPS,
95 INTUOSPM,
96 INTUOSPL,
b5fd2a3e 97 INTUOSHT,
3a4b4aaa 98 WACOM_21UX2,
d838c644 99 WACOM_22HD,
a112e9fd 100 DTK,
d838c644 101 WACOM_24HD,
36d3c510 102 CINTIQ_HYBRID,
3bea733a 103 CINTIQ,
0e1763f5 104 WACOM_BEE,
56218563 105 WACOM_13HD,
7ecfbfd3 106 WACOM_MO,
ea2e6024
PC
107 WIRELESS,
108 BAMBOO_PT,
b1e4279e 109 WACOM_24HDT,
ea2e6024 110 TABLETPC, /* add new TPC below */
ac173837 111 TABLETPCE,
ec67bbed 112 TABLETPC2FG,
1963518b 113 MTSCREEN,
6afdc289 114 MTTPC,
d51ddb2b 115 MTTPC_B,
7704ac93 116 HID_GENERIC,
3bea733a
PC
117 MAX_TYPE
118};
119
120struct wacom_features {
e33da8a5 121 const char *name;
3bea733a
PC
122 int x_max;
123 int y_max;
124 int pressure_max;
125 int distance_max;
126 int type;
e35fb8c1
PC
127 int x_resolution;
128 int y_resolution;
ac414da3
PC
129 int x_min;
130 int y_min;
ec67bbed
PC
131 int device_type;
132 int x_phy;
133 int y_phy;
c669fb2b
BT
134 unsigned unit;
135 int unitExpo;
fed87e65
HR
136 int x_fuzz;
137 int y_fuzz;
138 int pressure_fuzz;
139 int distance_fuzz;
bc73dd39 140 unsigned quirks;
f393ee2b 141 unsigned touch_max;
aea2bf6a
JG
142 int oVid;
143 int oPid;
80befa93 144 int pktlen;
29b47391
BT
145 bool check_for_hid_type;
146 int hid_type;
3bea733a
PC
147};
148
4492efff
PC
149struct wacom_shared {
150 bool stylus_in_proximity;
a43c7c53 151 bool touch_down;
961794a0
PC
152 /* for wireless device to access USB interfaces */
153 unsigned touch_max;
154 int type;
155 struct input_dev *touch_input;
4492efff
PC
156};
157
7704ac93 158struct hid_data {
5ae6e89f
BT
159 __s16 inputmode; /* InputMode HID feature, -1 if non-existent */
160 __s16 inputmode_index; /* InputMode HID feature index in the report */
7704ac93
BT
161 bool inrange_state;
162 bool invert_state;
163 bool tipswitch;
5ae6e89f
BT
164 int x;
165 int y;
166 int pressure;
167 int width;
168 int height;
169 int id;
7704ac93
BT
170};
171
3bea733a 172struct wacom_wac {
57bcfce3 173 char name[WACOM_NAME_MAX];
d2d13f18 174 char pad_name[WACOM_NAME_MAX];
d70420b9 175 char bat_name[WACOM_NAME_MAX];
7dbd229e 176 char ac_name[WACOM_NAME_MAX];
29b47391 177 unsigned char data[WACOM_PKGLEN_MAX];
4fc19381
PC
178 int tool[2];
179 int id[2];
49b764ae 180 __u32 serial[2];
e33da8a5 181 struct wacom_features features;
4492efff 182 struct wacom_shared *shared;
8da23fc1 183 struct input_dev *input;
d2d13f18 184 struct input_dev *pad_input;
2546dacd 185 bool input_registered;
954df6ad 186 bool pad_registered;
16bf288c 187 int pid;
a1d552cc 188 int battery_capacity;
1963518b 189 int num_contacts_left;
ac8d1010
BT
190 int bat_charging;
191 int ps_connected;
f81a1295
BT
192 u8 bt_features;
193 u8 bt_high_speed;
7704ac93 194 struct hid_data hid_data;
3bea733a
PC
195};
196
197#endif