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