wacom_wac.h 4.5 KB
Newer Older
1
/*
2
 * drivers/input/tablet/wacom_wac.h
3 4 5 6 7 8 9 10 11
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 */
#ifndef WACOM_WAC_H
#define WACOM_WAC_H

12
#include <linux/types.h>
13
#include <linux/hid.h>
14

15
/* maximum packet length for USB devices */
16
#define WACOM_PKGLEN_MAX	192
17

18 19
#define WACOM_NAME_MAX		64

20 21 22
/* packet length for individual models */
#define WACOM_PKGLEN_PENPRTN	 7
#define WACOM_PKGLEN_GRAPHIRE	 8
23 24
#define WACOM_PKGLEN_BBFUN	 9
#define WACOM_PKGLEN_INTUOS	10
25
#define WACOM_PKGLEN_TPC1FG	 5
26
#define WACOM_PKGLEN_TPC1FG_B	10
27
#define WACOM_PKGLEN_TPC2FG	14
28
#define WACOM_PKGLEN_BBTOUCH	20
29
#define WACOM_PKGLEN_BBTOUCH3	64
30
#define WACOM_PKGLEN_BBPEN	10
31
#define WACOM_PKGLEN_WIRELESS	32
32
#define WACOM_PKGLEN_MTOUCH	62
33
#define WACOM_PKGLEN_MTTPC	40
34
#define WACOM_PKGLEN_DTUS	68
35
#define WACOM_PKGLEN_PENABLED	 8
36 37 38

/* wacom data size per MT contact */
#define WACOM_BYTES_PER_MT_PACKET	11
39
#define WACOM_BYTES_PER_24HDT_PACKET	14
40
#define WACOM_BYTES_PER_QHDTHID_PACKET	 6
41

42
/* device IDs */
43
#define STYLUS_DEVICE_ID	0x02
44
#define TOUCH_DEVICE_ID		0x03
45 46
#define CURSOR_DEVICE_ID	0x06
#define ERASER_DEVICE_ID	0x0A
P
Ping Cheng 已提交
47
#define PAD_DEVICE_ID		0x0F
48

49 50
/* wacom data packet report IDs */
#define WACOM_REPORT_PENABLED		2
51
#define WACOM_REPORT_PENABLED_BT	3
52 53 54
#define WACOM_REPORT_INTUOSREAD		5
#define WACOM_REPORT_INTUOSWRITE	6
#define WACOM_REPORT_INTUOSPAD		12
55
#define WACOM_REPORT_INTUOS5PAD		3
56
#define WACOM_REPORT_DTUSPAD		21
57 58
#define WACOM_REPORT_TPC1FG		6
#define WACOM_REPORT_TPC2FG		13
59
#define WACOM_REPORT_TPCMT		13
60
#define WACOM_REPORT_TPCMT2		3
61
#define WACOM_REPORT_TPCHID		15
62 63
#define WACOM_REPORT_CINTIQ		16
#define WACOM_REPORT_CINTIQPAD		17
64
#define WACOM_REPORT_TPCST		16
65
#define WACOM_REPORT_DTUS		17
66
#define WACOM_REPORT_TPC1FGE		18
67
#define WACOM_REPORT_24HDT		1
68
#define WACOM_REPORT_WL			128
69
#define WACOM_REPORT_USB		192
70

71 72
/* device quirks */
#define WACOM_QUIRK_MULTI_INPUT		0x0001
73
#define WACOM_QUIRK_BBTOUCH_LOWRES	0x0002
74 75
#define WACOM_QUIRK_NO_INPUT		0x0004
#define WACOM_QUIRK_MONITOR		0x0008
76
#define WACOM_QUIRK_BATTERY		0x0010
77

78 79
#define WACOM_PEN_FIELD(f)	(((f)->logical == HID_DG_STYLUS) || \
				 ((f)->physical == HID_DG_STYLUS) || \
80
				 ((f)->physical == HID_DG_PEN) || \
81 82 83 84 85
				 ((f)->application == HID_DG_PEN))
#define WACOM_FINGER_FIELD(f)	(((f)->logical == HID_DG_FINGER) || \
				 ((f)->physical == HID_DG_FINGER) || \
				 ((f)->application == HID_DG_TOUCHSCREEN))

86 87 88
enum {
	PENPARTNER = 0,
	GRAPHIRE,
89
	GRAPHIRE_BT,
90 91 92
	WACOM_G4,
	PTU,
	PL,
93
	DTU,
94
	DTUS,
P
Ping Cheng 已提交
95
	DTUSX,
96
	INTUOS,
P
Ping Cheng 已提交
97
	INTUOS3S,
98 99
	INTUOS3,
	INTUOS3L,
100 101
	INTUOS4S,
	INTUOS4,
102
	INTUOS4WL,
103
	INTUOS4L,
104 105 106
	INTUOS5S,
	INTUOS5,
	INTUOS5L,
107 108 109
	INTUOSPS,
	INTUOSPM,
	INTUOSPL,
110
	INTUOSHT,
111
	WACOM_21UX2,
112
	WACOM_22HD,
113
	DTK,
114
	WACOM_24HD,
115
	WACOM_27QHD,
116
	CINTIQ_HYBRID,
117
	CINTIQ,
118
	WACOM_BEE,
119
	WACOM_13HD,
120
	WACOM_MO,
P
Ping Cheng 已提交
121 122
	WIRELESS,
	BAMBOO_PT,
123
	WACOM_24HDT,
124
	WACOM_27QHDT,
P
Ping Cheng 已提交
125
	TABLETPC,   /* add new TPC below */
126
	TABLETPCE,
127
	TABLETPC2FG,
128
	MTSCREEN,
129
	MTTPC,
130
	MTTPC_B,
131
	HID_GENERIC,
132 133 134 135
	MAX_TYPE
};

struct wacom_features {
136
	const char *name;
137 138 139 140 141
	int x_max;
	int y_max;
	int pressure_max;
	int distance_max;
	int type;
142 143
	int x_resolution;
	int y_resolution;
144 145
	int x_min;
	int y_min;
146 147 148
	int device_type;
	int x_phy;
	int y_phy;
149 150
	unsigned unit;
	int unitExpo;
151 152 153 154
	int x_fuzz;
	int y_fuzz;
	int pressure_fuzz;
	int distance_fuzz;
155
	unsigned quirks;
156
	unsigned touch_max;
157 158
	int oVid;
	int oPid;
159
	int pktlen;
160 161
	bool check_for_hid_type;
	int hid_type;
162
	int last_slot_field;
163 164
};

165 166
struct wacom_shared {
	bool stylus_in_proximity;
167
	bool touch_down;
168 169 170 171
	/* for wireless device to access USB interfaces */
	unsigned touch_max;
	int type;
	struct input_dev *touch_input;
172 173
};

174
struct hid_data {
175 176
	__s16 inputmode;	/* InputMode HID feature, -1 if non-existent */
	__s16 inputmode_index;	/* InputMode HID feature index in the report */
177 178 179
	bool inrange_state;
	bool invert_state;
	bool tipswitch;
180 181 182 183 184 185
	int x;
	int y;
	int pressure;
	int width;
	int height;
	int id;
186 187
};

188
struct wacom_wac {
189
	char name[WACOM_NAME_MAX];
190
	char pad_name[WACOM_NAME_MAX];
191
	char bat_name[WACOM_NAME_MAX];
192
	char ac_name[WACOM_NAME_MAX];
193
	unsigned char data[WACOM_PKGLEN_MAX];
194 195
	int tool[2];
	int id[2];
196
	__u32 serial[2];
197
	bool reporting_data;
198
	struct wacom_features features;
199
	struct wacom_shared *shared;
200
	struct input_dev *input;
201
	struct input_dev *pad_input;
202
	bool input_registered;
203
	bool pad_registered;
204
	int pid;
205
	int battery_capacity;
206
	int num_contacts_left;
207 208
	int bat_charging;
	int ps_connected;
209 210
	u8 bt_features;
	u8 bt_high_speed;
211
	struct hid_data hid_data;
212 213 214
};

#endif