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
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
|
/*
*
* Zinitix touch driver
*
* Copyright (C) 2009 Zinitix, Inc.
*
* This software is licensed under the terms of the GNU General Public
* License version 2, as published by the Free Software Foundation, and
* may be copied, distributed, and modified under those terms.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
#ifndef ZINITIX_HEADER
#define ZINITIX_HEADER
#define TS_DRVIER_VERSION "3.0.24"
#define MULTI_PROTOCOL_TYPE_B 0
#define USE_THREADED_IRQ 0
#define TOUCH_MODE 0
/* max 10 */
#define MAX_SUPPORTED_FINGER_NUM 10
#define REAL_SUPPORTED_FINGER_NUM 10
/* max 8 */
#define MAX_SUPPORTED_BUTTON_NUM 8
#define SUPPORTED_BUTTON_NUM 0
/* Upgrade Method*/
#define TOUCH_ONESHOT_UPGRADE 1
/* if you use isp mode, you must add i2c device :
name = "zinitix_isp" , addr 0x50*/
/* resolution offset */
#define ABS_PT_OFFSET 1
#define TOUCH_FORCE_UPGRADE 1
#define USE_CHECKSUM 0 // BT4x3 only
#define CHIP_POWER_OFF_DELAY 100 /*ms*/
#define CHIP_POWER_OFF_AF_FZ_DELAY 250 /*ms*/
#define CHIP_ON_DELAY 150 /*ms*/
#define CHIP_ON_AF_FZ_DELAY 250 /*ms*/
#define DELAY_FOR_SIGNAL_DELAY 30 /*us*/
#define DELAY_FOR_TRANSCATION 50
#define DELAY_FOR_POST_TRANSCATION 10
#define FIRMWARE_VERSION_POS 0x6410
enum _zinitix_power_control {
POWER_OFF,
POWER_ON,
RESET_LOW,
RESET_HIGH,
};
/* Button Enum */
enum _zinitix_button_event {
ICON_BUTTON_UNCHANGE,
ICON_BUTTON_DOWN,
ICON_BUTTON_UP,
};
/* ESD Protection */
/*second : if 0, no use. if you have to use, 3 is recommended*/
#define ZINITIX_ESD_TIMER_INTERVAL 0
#define ZINITIX_SCAN_RATE_HZ 60
#define ZINITIX_CHECK_ESD_TIMER 2
/*Test Mode (Monitoring Raw Data) */
#define SEC_TOUCH_INFO_REPORT 0 //for samsung
#define MAX_TEST_RAW_DATA 320 /* 20 x 16*/
#define MAX_TEST_POINT_INFO 3 /* status register + x + y*/
#define MAX_RAW_DATA \
(MAX_TEST_RAW_DATA + MAX_TEST_POINT_INFO*MAX_SUPPORTED_FINGER_NUM + 2)
/* preriod raw data interval*/
#define ZINITIX_RAW_DATA_ESD_TIMER_INTERVAL 1
#define TOUCH_TEST_RAW_MODE 51
#define TOUCH_NORMAL_MODE 48
#define TOUCH_ZINITIX_BASELINED_RAW_MODE 3
#define TOUCH_ZINITIX_PROCESSED_RAW_MODE 4
#define TOUCH_ZINITIX_CAL_N_MODE 8
struct _raw_ioctl {
int sz;
u8 *buf;
};
struct _reg_ioctl{
int addr;
int *val;
} ;
/* Other Things */
#define ZINITIX_INIT_RETRY_CNT 5
#define I2C_SUCCESS 0
#define I2C_FAIL 1
/*---------------------------------------------------------------------*/
/* Register Map*/
#define ZINITIX_SWRESET_CMD 0x0000
#define ZINITIX_WAKEUP_CMD 0x0001
#define ZINITIX_IDLE_CMD 0x0004
#define ZINITIX_SLEEP_CMD 0x0005
#define ZINITIX_CLEAR_INT_STATUS_CMD 0x0003
#define ZINITIX_CALIBRATE_CMD 0x0006
#define ZINITIX_SAVE_STATUS_CMD 0x0007
#define ZINITIX_SAVE_CALIBRATION_CMD 0x0008
#define ZINITIX_RECALL_FACTORY_CMD 0x000f
#define ZINITIX_TOUCH_MODE 0x0010
#define ZINITIX_CHIP_REVISION 0x0011
#define ZINITIX_FIRMWARE_VERSION 0x0012
#define ZINITIX_DATA_VERSION_REG 0x0013
#define ZINITIX_TSP_TYPE 0x0014
#define ZINITIX_SUPPORTED_FINGER_NUM 0x0015
#define ZINITIX_MAX_Y_NUM 0x0016
#define ZINITIX_EEPROM_INFO 0x0018
#define ZINITIX_CAL_N_TOTAL_NUM 0x001B
#define ZINITIX_TOTAL_NUMBER_OF_X 0x0060
#define ZINITIX_TOTAL_NUMBER_OF_Y 0x0061
#define ZINITIX_BUTTON_SUPPORTED_NUM 0x00B0
#define ZINITIX_X_RESOLUTION 0x00C0
#define ZINITIX_Y_RESOLUTION 0x00C1
#define ZINITIX_POINT_STATUS_REG 0x0080
#define ZINITIX_ICON_STATUS_REG 0x00A0
#define ZINITIX_RAWDATA_REG 0x0200
#define ZINITIX_EEPROM_INFO_REG 0x0018
#define ZINITIX_INT_ENABLE_FLAG 0x00f0
#define ZINITIX_PERIODICAL_INTERRUPT_INTERVAL 0x00f1
#define ZINITIX_CHECK_REG0 0x00AC
#define ZINITIX_CHECK_REG1 0x00AD
#define ZINITIX_CHECK_REG2 0x00AE
#define ZINITIX_CHECK_REG3 0x00AF
/* Interrupt & status register flag bit
-------------------------------------------------
*/
#define BIT_PT_CNT_CHANGE 0
#define BIT_DOWN 1
#define BIT_MOVE 2
#define BIT_UP 3
#define BIT_HOLD 4
#define BIT_LONG_HOLD 5
#define RESERVED_0 6
#define RESERVED_1 7
#define BIT_WEIGHT_CHANGE 8
#define BIT_PT_NO_CHANGE 9
#define BIT_REJECT 10
#define BIT_PT_EXIST 11
#define RESERVED_2 12
#define RESERVED_3 13
#define RESERVED_4 14
#define BIT_ICON_EVENT 15
/* button */
#define BIT_O_ICON0_DOWN 0
#define BIT_O_ICON1_DOWN 1
#define BIT_O_ICON2_DOWN 2
#define BIT_O_ICON3_DOWN 3
#define BIT_O_ICON4_DOWN 4
#define BIT_O_ICON5_DOWN 5
#define BIT_O_ICON6_DOWN 6
#define BIT_O_ICON7_DOWN 7
#define BIT_O_ICON0_UP 8
#define BIT_O_ICON1_UP 9
#define BIT_O_ICON2_UP 10
#define BIT_O_ICON3_UP 11
#define BIT_O_ICON4_UP 12
#define BIT_O_ICON5_UP 13
#define BIT_O_ICON6_UP 14
#define BIT_O_ICON7_UP 15
#define SUB_BIT_EXIST 0
#define SUB_BIT_DOWN 1
#define SUB_BIT_MOVE 2
#define SUB_BIT_UP 3
#define SUB_BIT_UPDATE 4
#define SUB_BIT_WAIT 5
#define zinitix_bit_set(val, n) ((val) &= ~(1<<(n)), (val) |= (1<<(n)))
#define zinitix_bit_clr(val, n) ((val) &= ~(1<<(n)))
#define zinitix_bit_test(val, n) ((val) & (1<<(n)))
#define zinitix_swap_v(a, b, t) ((t) = (a), (a) = (b), (b) = (t))
#define zinitix_swap_16(s) (((((s) & 0xff) << 8) | (((s) >> 8) & 0xff)))
#endif /*ZINITIX_HEADER*/
|