wacom_wac.h 4.0 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 13
#include <linux/types.h>

14
/* maximum packet length for USB devices */
15
#define WACOM_PKGLEN_MAX	68
16

17 18
#define WACOM_NAME_MAX		64

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

/* wacom data size per MT contact */
#define WACOM_BYTES_PER_MT_PACKET	11
38
#define WACOM_BYTES_PER_24HDT_PACKET	14
39

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

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

67 68
/* device quirks */
#define WACOM_QUIRK_MULTI_INPUT		0x0001
69
#define WACOM_QUIRK_BBTOUCH_LOWRES	0x0002
70 71
#define WACOM_QUIRK_NO_INPUT		0x0004
#define WACOM_QUIRK_MONITOR		0x0008
72
#define WACOM_QUIRK_BATTERY		0x0010
73

74 75 76
enum {
	PENPARTNER = 0,
	GRAPHIRE,
77
	GRAPHIRE_BT,
78 79 80
	WACOM_G4,
	PTU,
	PL,
81
	DTU,
82
	DTUS,
P
Ping Cheng 已提交
83
	DTUSX,
84
	INTUOS,
P
Ping Cheng 已提交
85
	INTUOS3S,
86 87
	INTUOS3,
	INTUOS3L,
88 89
	INTUOS4S,
	INTUOS4,
90
	INTUOS4WL,
91
	INTUOS4L,
92 93 94
	INTUOS5S,
	INTUOS5,
	INTUOS5L,
95 96 97
	INTUOSPS,
	INTUOSPM,
	INTUOSPL,
98
	INTUOSHT,
99
	WACOM_21UX2,
100
	WACOM_22HD,
101
	DTK,
102
	WACOM_24HD,
103
	CINTIQ_HYBRID,
104
	CINTIQ,
105
	WACOM_BEE,
106
	WACOM_13HD,
107
	WACOM_MO,
P
Ping Cheng 已提交
108 109
	WIRELESS,
	BAMBOO_PT,
110
	WACOM_24HDT,
P
Ping Cheng 已提交
111
	TABLETPC,   /* add new TPC below */
112
	TABLETPCE,
113
	TABLETPC2FG,
114
	MTSCREEN,
115
	MTTPC,
116
	MTTPC_B,
117
	HID_GENERIC,
118 119 120 121
	MAX_TYPE
};

struct wacom_features {
122
	const char *name;
123 124 125 126 127
	int x_max;
	int y_max;
	int pressure_max;
	int distance_max;
	int type;
128 129
	int x_resolution;
	int y_resolution;
130 131
	int x_min;
	int y_min;
132 133 134
	int device_type;
	int x_phy;
	int y_phy;
135 136
	unsigned unit;
	int unitExpo;
137 138 139 140
	int x_fuzz;
	int y_fuzz;
	int pressure_fuzz;
	int distance_fuzz;
141
	unsigned quirks;
142
	unsigned touch_max;
143 144
	int oVid;
	int oPid;
145
	int pktlen;
146 147
	bool check_for_hid_type;
	int hid_type;
148 149
};

150 151
struct wacom_shared {
	bool stylus_in_proximity;
152
	bool touch_down;
153 154 155 156
	/* for wireless device to access USB interfaces */
	unsigned touch_max;
	int type;
	struct input_dev *touch_input;
157 158
};

159
struct hid_data {
160 161
	__s16 inputmode;	/* InputMode HID feature, -1 if non-existent */
	__s16 inputmode_index;	/* InputMode HID feature index in the report */
162 163 164
	bool inrange_state;
	bool invert_state;
	bool tipswitch;
165 166 167 168 169 170
	int x;
	int y;
	int pressure;
	int width;
	int height;
	int id;
171 172
};

173
struct wacom_wac {
174
	char name[WACOM_NAME_MAX];
175
	char pad_name[WACOM_NAME_MAX];
176
	char bat_name[WACOM_NAME_MAX];
177
	char ac_name[WACOM_NAME_MAX];
178
	unsigned char data[WACOM_PKGLEN_MAX];
179 180
	int tool[2];
	int id[2];
181
	__u32 serial[2];
182
	struct wacom_features features;
183
	struct wacom_shared *shared;
184
	struct input_dev *input;
185
	struct input_dev *pad_input;
186
	bool input_registered;
187
	bool pad_registered;
188
	int pid;
189
	int battery_capacity;
190
	int num_contacts_left;
191 192
	int bat_charging;
	int ps_connected;
193 194
	u8 bt_features;
	u8 bt_high_speed;
195
	struct hid_data hid_data;
196 197 198
};

#endif