Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1/*
2 * drivers/input/tablet/wacom_wac.h
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
12#include <linux/types.h>
13
14/* maximum packet length for USB devices */
15#define WACOM_PKGLEN_MAX 64
16
17/* packet length for individual models */
18#define WACOM_PKGLEN_PENPRTN 7
19#define WACOM_PKGLEN_GRAPHIRE 8
20#define WACOM_PKGLEN_BBFUN 9
21#define WACOM_PKGLEN_INTUOS 10
22#define WACOM_PKGLEN_TPC1FG 5
23#define WACOM_PKGLEN_TPC2FG 14
24#define WACOM_PKGLEN_BBTOUCH 20
25#define WACOM_PKGLEN_BBTOUCH3 64
26#define WACOM_PKGLEN_BBPEN 10
27#define WACOM_PKGLEN_WIRELESS 32
28#define WACOM_PKGLEN_MTOUCH 62
29
30/* wacom data size per MT contact */
31#define WACOM_BYTES_PER_MT_PACKET 11
32
33/* device IDs */
34#define STYLUS_DEVICE_ID 0x02
35#define TOUCH_DEVICE_ID 0x03
36#define CURSOR_DEVICE_ID 0x06
37#define ERASER_DEVICE_ID 0x0A
38#define PAD_DEVICE_ID 0x0F
39
40/* wacom data packet report IDs */
41#define WACOM_REPORT_PENABLED 2
42#define WACOM_REPORT_INTUOSREAD 5
43#define WACOM_REPORT_INTUOSWRITE 6
44#define WACOM_REPORT_INTUOSPAD 12
45#define WACOM_REPORT_INTUOS5PAD 3
46#define WACOM_REPORT_TPC1FG 6
47#define WACOM_REPORT_TPC2FG 13
48#define WACOM_REPORT_TPCMT 13
49#define WACOM_REPORT_TPCHID 15
50#define WACOM_REPORT_TPCST 16
51
52/* device quirks */
53#define WACOM_QUIRK_MULTI_INPUT 0x0001
54#define WACOM_QUIRK_BBTOUCH_LOWRES 0x0002
55#define WACOM_QUIRK_NO_INPUT 0x0004
56#define WACOM_QUIRK_MONITOR 0x0008
57
58enum {
59 PENPARTNER = 0,
60 GRAPHIRE,
61 WACOM_G4,
62 PTU,
63 PL,
64 DTU,
65 BAMBOO_PT,
66 WIRELESS,
67 INTUOS,
68 INTUOS3S,
69 INTUOS3,
70 INTUOS3L,
71 INTUOS4S,
72 INTUOS4,
73 INTUOS4L,
74 INTUOS5S,
75 INTUOS5,
76 INTUOS5L,
77 WACOM_24HD,
78 WACOM_21UX2,
79 CINTIQ,
80 WACOM_BEE,
81 WACOM_MO,
82 TABLETPC,
83 TABLETPC2FG,
84 MTSCREEN,
85 MAX_TYPE
86};
87
88struct wacom_features {
89 const char *name;
90 int pktlen;
91 int x_max;
92 int y_max;
93 int pressure_max;
94 int distance_max;
95 int type;
96 int x_resolution;
97 int y_resolution;
98 int device_type;
99 int x_phy;
100 int y_phy;
101 unsigned char unit;
102 unsigned char unitExpo;
103 int x_fuzz;
104 int y_fuzz;
105 int pressure_fuzz;
106 int distance_fuzz;
107 unsigned quirks;
108 unsigned touch_max;
109};
110
111struct wacom_shared {
112 bool stylus_in_proximity;
113 bool touch_down;
114};
115
116struct wacom_wac {
117 char name[64];
118 unsigned char *data;
119 int tool[2];
120 int id[2];
121 __u32 serial[2];
122 struct wacom_features features;
123 struct wacom_shared *shared;
124 struct input_dev *input;
125 int pid;
126 int battery_capacity;
127 int num_contacts_left;
128 int *slots;
129};
130
131#endif