1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
|
/* $NetBSD: synapticsreg.h,v 1.13 2022/03/03 21:03:14 blymn Exp $ */
/*
* Copyright (c) 2005, Steve C. Woodford
* Copyright (c) 2004, Ales Krenek
* Copyright (c) 2004, Kentaro A. Kurahone
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of the Kentaro A. Kurahone nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/
#ifndef _DEV_PCKBCPORT_SYNAPTICSREG_H_
#define _DEV_PCKBCPORT_SYNAPTICSREG_H_
/* Synaptics information queries. */
#define SYNAPTICS_IDENTIFY_TOUCHPAD 0x0
#define SYNAPTICS_READ_MODE 0x1
#define SYNAPTICS_READ_CAPABILITIES 0x2
#define SYNAPTICS_READ_MODEL_ID 0x3
#define SYNAPTICS_EXTENDED_QUERY 0x9
#define SYNAPTICS_CONTINUED_CAPABILITIES 0x0c
#define SYNAPTICS_READ_MAX_COORDS 0x0d
#define SYNAPTICS_READ_MIN_COORDS 0x0f
#define SYNAPTICS_WRITE_DELUXE_3 0xc8 /* 6.2.3. Deluxe mode setting sequence */
/* Synaptics special commands */
#define SYNAPTICS_CMD_SET_MODE2 0x14
#define SYNAPTICS_CMD_CLIENT_CMD 0x28
/* Magic numbers. */
#define SYNAPTICS_MIN_VERSION 45 /* 4.5 */
#define SYNAPTICS_MAGIC_BYTE 0x47
/* Capability bits. */
/* (byte[0] << 8) | byte[2] */
#define SYNAPTICS_CAP_VALUE(b) (((b)[0] << 8) | (b)[2])
#define SYNAPTICS_CAP_EXTENDED (1 << 15)
#define SYNAPTICS_CAP_EXTNUM (1 << 14 | 1 << 13 | 1 << 12)
#define SYNAPTICS_CAP_MBUTTON (1 << 10)
#define SYNAPTICS_CAP_PASSTHROUGH (1 << 7)
#define SYNAPTICS_CAP_LOWPOWER (1 << 6)
#define SYNAPTICS_CAP_MULTIFINGERREPORT (1 << 5)
#define SYNAPTICS_CAP_SLEEP (1 << 4)
#define SYNAPTICS_CAP_4BUTTON (1 << 3)
#define SYNAPTICS_CAP_MULTIDETECT (1 << 1)
#define SYNAPTICS_CAP_PALMDETECT (1 << 0)
/* Continued Capability bits */
/* (byte[0] << 8) | byte[1] */
#define SYN_CCAP_VALUE(b) (((b)[0] << 8) | (b)[1])
#define SYN_CCAP_COVERED_PAD __BIT(15)
#define SYN_CCAP_MULTIFINGER_MODE __BITS(13,14)
#define SYN_CCAP_CLICKPAD_BIT_0 __BIT(12) /* one-button clickpad */
#define SYN_CCAP_HAS_ADV_GESTURE_MODE __BIT(11)
#define SYN_CCAP_CLEARPAD __BIT(10)
#define SYN_CCAP_REPORT_MAX __BIT(9)
#define SYN_CCAP_ADJ_THRESHOLD __BIT(8)
#define SYN_CCAP_REPORT_MIN __BIT(5)
#define SYN_CCAP_UNIFORM_CLICKPAD __BIT(4)
#define SYN_CCAP_IMAGE_SENSOR __BIT(3) /* reports V */
#define SYN_CCAP_REDUCED_FILTERING __BIT(2)
#define SYN_CCAP_DELUX_LED_CONTROLS __BIT(1)
#define SYN_CCAP_CLICKPAD_BIT_1 __BIT(0) /* two-button clickpad */
#define SYN_CCAP_CLICKPAD_TYPE(v) \
((__SHIFTOUT((v), SYN_CCAP_CLICKPAD_BIT_1) << 1) | \
__SHIFTOUT((v), SYN_CCAP_CLICKPAD_BIT_0))
/* Mode bits. */
#define SYNAPTICS_MODE_ABSOLUTE (1 << 7)
#define SYNAPTICS_MODE_RATE (1 << 6)
#define SYNAPTICS_MODE_SLEEP (1 << 3)
#define SYNAPTICS_MODE_EXTENDED_W (1 << 2) /* double meaning */
#define SYNAPTICS_MODE_GEST (1 << 2)
#define SYNAPTICS_MODE_4BYTE_CLIENT (1 << 1)
#define SYNAPTICS_MODE_W (1 << 0)
/* Extended mode button masks. */
#define SYN_1BUTMASK 0x1
#define SYN_2BUTMASK 0x1
#define SYN_3BUTMASK 0x2
#define SYN_4BUTMASK 0x2
#define SYN_5BUTMASK 0x4
#define SYN_6BUTMASK 0x4
#define SYN_7BUTMASK 0x8
#define SYN_8BUTMASK 0x8
/* Touchpad edge boundaries (Recommended values from Synaptics documentation) */
#define SYNAPTICS_EDGE_LEFT 1632
#define SYNAPTICS_EDGE_RIGHT 5312
#define SYNAPTICS_EDGE_TOP 4288
#define SYNAPTICS_EDGE_BOTTOM 1568
#define SYNAPTICS_EDGE_MAX 6143
/* Finger pressures */
#define SYNAPTICS_FINGER_NONE 0
#define SYNAPTICS_FINGER_HOVER 10
#define SYNAPTICS_FINGER_LIGHT 30
#define SYNAPTICS_FINGER_NORMAL 80
#define SYNAPTICS_FINGER_HEAVY 110
#define SYNAPTICS_FINGER_FLAT 200
#define SYNAPTICS_FINGER_PALM 255
/* Width values */
#define SYNAPTICS_WIDTH_TWO_FINGERS 0
#define SYNAPTICS_WIDTH_THREE_OR_MORE 1
#define SYNAPTICS_WIDTH_PEN 2
#define SYNAPTICS_WIDTH_EXTENDED_W 2
#define SYNAPTICS_WIDTH_ADVANCEDGESTURE 2
#define SYNAPTICS_WIDTH_PASSTHROUGH 3
#define SYNAPTICS_WIDTH_FINGER_MIN 4
#define SYNAPTICS_WIDTH_FINGER_NORMAL 5
#define SYNAPTICS_WIDTH_FINGER_MAX 7
#define SYNAPTICS_WIDTH_PALM_MIN 8
#define SYNAPTICS_WIDTH_PALM_MAX 14
#define SYNAPTICS_WIDTH_MAX 15
/* Extended W types */
#define SYNAPTICS_EW_WHEEL 0
#define SYNAPTICS_EW_SECONDARY_FINGER 1
#define SYNAPTICS_EW_FINGER_STATUS 2
#endif /* _DEV_PCKBCPORT_SYNAPTICSREG_H_ */
|