wacom_wac.h 2.9 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	64
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_TPC2FG	14
26
#define WACOM_PKGLEN_BBTOUCH	20
27
#define WACOM_PKGLEN_BBTOUCH3	64
28
#define WACOM_PKGLEN_BBPEN	10
29
#define WACOM_PKGLEN_WIRELESS	32
30
#define WACOM_PKGLEN_MTOUCH	62
31
#define WACOM_PKGLEN_MTTPC	40
32 33 34

/* wacom data size per MT contact */
#define WACOM_BYTES_PER_MT_PACKET	11
35
#define WACOM_BYTES_PER_24HDT_PACKET	14
36

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

44 45 46 47 48
/* wacom data packet report IDs */
#define WACOM_REPORT_PENABLED		2
#define WACOM_REPORT_INTUOSREAD		5
#define WACOM_REPORT_INTUOSWRITE	6
#define WACOM_REPORT_INTUOSPAD		12
49
#define WACOM_REPORT_INTUOS5PAD		3
50 51
#define WACOM_REPORT_TPC1FG		6
#define WACOM_REPORT_TPC2FG		13
52
#define WACOM_REPORT_TPCMT		13
53 54
#define WACOM_REPORT_TPCHID		15
#define WACOM_REPORT_TPCST		16
55
#define WACOM_REPORT_TPC1FGE		18
56
#define WACOM_REPORT_24HDT		1
57

58 59
/* device quirks */
#define WACOM_QUIRK_MULTI_INPUT		0x0001
60
#define WACOM_QUIRK_BBTOUCH_LOWRES	0x0002
61 62
#define WACOM_QUIRK_NO_INPUT		0x0004
#define WACOM_QUIRK_MONITOR		0x0008
63

64 65 66 67 68 69
enum {
	PENPARTNER = 0,
	GRAPHIRE,
	WACOM_G4,
	PTU,
	PL,
70
	DTU,
71
	INTUOS,
P
Ping Cheng 已提交
72
	INTUOS3S,
73 74
	INTUOS3,
	INTUOS3L,
75 76 77
	INTUOS4S,
	INTUOS4,
	INTUOS4L,
78 79 80
	INTUOS5S,
	INTUOS5,
	INTUOS5L,
81 82 83
	INTUOSPS,
	INTUOSPM,
	INTUOSPL,
84
	WACOM_21UX2,
85
	WACOM_22HD,
86
	DTK,
87
	WACOM_24HD,
88
	CINTIQ_HYBRID,
89
	CINTIQ,
90
	WACOM_BEE,
91
	WACOM_13HD,
92
	WACOM_MO,
P
Ping Cheng 已提交
93 94
	WIRELESS,
	BAMBOO_PT,
95
	WACOM_24HDT,
P
Ping Cheng 已提交
96
	TABLETPC,   /* add new TPC below */
97
	TABLETPCE,
98
	TABLETPC2FG,
99
	MTSCREEN,
100
	MTTPC,
101 102 103 104
	MAX_TYPE
};

struct wacom_features {
105
	const char *name;
106 107 108 109 110 111
	int pktlen;
	int x_max;
	int y_max;
	int pressure_max;
	int distance_max;
	int type;
112 113
	int x_resolution;
	int y_resolution;
114 115 116 117 118
	int device_type;
	int x_phy;
	int y_phy;
	unsigned char unit;
	unsigned char unitExpo;
119 120 121 122
	int x_fuzz;
	int y_fuzz;
	int pressure_fuzz;
	int distance_fuzz;
123
	unsigned quirks;
124
	unsigned touch_max;
125 126
	int oVid;
	int oPid;
127 128
};

129 130
struct wacom_shared {
	bool stylus_in_proximity;
131
	bool touch_down;
132 133
};

134
struct wacom_wac {
135
	char name[WACOM_NAME_MAX];
136
	unsigned char *data;
137 138
	int tool[2];
	int id[2];
139
	__u32 serial[2];
140
	struct wacom_features features;
141
	struct wacom_shared *shared;
142
	struct input_dev *input;
143
	int pid;
144
	int battery_capacity;
145
	int num_contacts_left;
146 147 148
};

#endif