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