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