input: touchscreen: add touch screen of gslx680 for rk3399-firefly-edp
[firefly-linux-kernel-4.4.55.git] / drivers / input / touchscreen / synaptics_i2c_rmi4.h
1 /**
2  *
3  * Synaptics Register Mapped Interface (RMI4) I2C Physical Layer Driver.
4  * Copyright (c) 2007-2010, Synaptics Incorporated
5  *
6  * Author: Js HA <js.ha@stericsson.com> for ST-Ericsson
7  * Author: Naveen Kumar G <naveen.gaddipati@stericsson.com> for ST-Ericsson
8  * Copyright 2010 (c) ST-Ericsson AB
9  */
10 /*
11  * This file is licensed under the GPL2 license.
12  *
13  *#############################################################################
14  * GPL
15  *
16  * This program is free software; you can redistribute it and/or modify it
17  * under the terms of the GNU General Public License version 2 as published
18  * by the Free Software Foundation.
19  *
20  * This program is distributed in the hope that it will be useful, but
21  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
22  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
23  * for more details.
24  *
25  *#############################################################################
26  */
27
28 #ifndef _SYNAPTICS_RMI4_H_INCLUDED_
29 #define _SYNAPTICS_RMI4_H_INCLUDED_
30
31
32 /*      Register Name                                      Address     Register Description */
33 /*      -------------                                      -------     -------------------- */
34 #define SYNA_F34_FLASH_DATA00                              0x0000   /* Block Number Low */
35 #define SYNA_F34_FLASH_DATA01                              0x0001   /* Block Number High */
36 #define SYNA_F34_FLASH_DATA02_00                           0x0002   /* Block Data 0 */
37 #define SYNA_F34_FLASH_DATA02_01                           0x0003   /* Block Data 1 */
38 #define SYNA_F34_FLASH_DATA02_02                           0x0004   /* Block Data 2 */
39 #define SYNA_F34_FLASH_DATA02_03                           0x0005   /* Block Data 3 */
40 #define SYNA_F34_FLASH_DATA02_04                           0x0006   /* Block Data 4 */
41 #define SYNA_F34_FLASH_DATA02_05                           0x0007   /* Block Data 5 */
42 #define SYNA_F34_FLASH_DATA02_06                           0x0008   /* Block Data 6 */
43 #define SYNA_F34_FLASH_DATA02_07                           0x0009   /* Block Data 7 */
44 #define SYNA_F34_FLASH_DATA02_08                           0x000A   /* Block Data 8 */
45 #define SYNA_F34_FLASH_DATA02_09                           0x000B   /* Block Data 9 */
46 #define SYNA_F34_FLASH_DATA02_10                           0x000C   /* Block Data 10 */
47 #define SYNA_F34_FLASH_DATA02_11                           0x000D   /* Block Data 11 */
48 #define SYNA_F34_FLASH_DATA02_12                           0x000E   /* Block Data 12 */
49 #define SYNA_F34_FLASH_DATA02_13                           0x000F   /* Block Data 13 */
50 #define SYNA_F34_FLASH_DATA02_14                           0x0010   /* Block Data 14 */
51 #define SYNA_F34_FLASH_DATA02_15                           0x0011   /* Block Data 15 */
52 #define SYNA_F34_FLASH_DATA03                              0x0012   /* Flash Control */
53 #define SYNA_F01_RMI_DATA00                                0x0013   /* Device Status */
54 #define SYNA_F01_RMI_DATA01_00                             0x0014   /* Interrupt Status */
55 #define SYNA_F11_2D_DATA00_00                              0x0015   /* 2D Finger State */
56 #define SYNA_F11_2D_DATA00_01                              0x0016   /* 2D Finger State */
57 #define SYNA_F11_2D_DATA01_00                              0x0017   /* 2D X Position (11:4) Finger 0 */
58 #define SYNA_F11_2D_DATA02_00                              0x0018   /* 2D Y Position (11:4) Finger 0 */
59 #define SYNA_F11_2D_DATA03_00                              0x0019   /* 2D Y/X Position (3:0) Finger 0 */
60 #define SYNA_F11_2D_DATA04_00                              0x001A   /* 2D Wy/Wx Finger 0 */
61 #define SYNA_F11_2D_DATA05_00                              0x001B   /* 2D Z Finger 0 */
62 #define SYNA_F11_2D_DATA01_01                              0x001C   /* 2D X Position (11:4) Finger 1 */
63 #define SYNA_F11_2D_DATA02_01                              0x001D   /* 2D Y Position (11:4) Finger 1 */
64 #define SYNA_F11_2D_DATA03_01                              0x001E   /* 2D Y/X Position (3:0) Finger 1 */
65 #define SYNA_F11_2D_DATA04_01                              0x001F   /* 2D Wy/Wx Finger 1 */
66 #define SYNA_F11_2D_DATA05_01                              0x0020   /* 2D Z Finger 1 */
67 #define SYNA_F11_2D_DATA01_02                              0x0021   /* 2D X Position (11:4) Finger 2 */
68 #define SYNA_F11_2D_DATA02_02                              0x0022   /* 2D Y Position (11:4) Finger 2 */
69 #define SYNA_F11_2D_DATA03_02                              0x0023   /* 2D Y/X Position (3:0) Finger 2 */
70 #define SYNA_F11_2D_DATA04_02                              0x0024   /* 2D Wy/Wx Finger 2 */
71 #define SYNA_F11_2D_DATA05_02                              0x0025   /* 2D Z Finger 2 */
72 #define SYNA_F11_2D_DATA01_03                              0x0026   /* 2D X Position (11:4) Finger 3 */
73 #define SYNA_F11_2D_DATA02_03                              0x0027   /* 2D Y Position (11:4) Finger 3 */
74 #define SYNA_F11_2D_DATA03_03                              0x0028   /* 2D Y/X Position (3:0) Finger 3 */
75 #define SYNA_F11_2D_DATA04_03                              0x0029   /* 2D Wy/Wx Finger 3 */
76 #define SYNA_F11_2D_DATA05_03                              0x002A   /* 2D Z Finger 3 */
77 #define SYNA_F11_2D_DATA01_04                              0x002B   /* 2D X Position (11:4) Finger 4 */
78 #define SYNA_F11_2D_DATA02_04                              0x002C   /* 2D Y Position (11:4) Finger 4 */
79 #define SYNA_F11_2D_DATA03_04                              0x002D   /* 2D Y/X Position (3:0) Finger 4 */
80 #define SYNA_F11_2D_DATA04_04                              0x002E   /* 2D Wy/Wx Finger 4 */
81 #define SYNA_F11_2D_DATA05_04                              0x002F   /* 2D Z Finger 4 */
82 #define SYNA_F01_RMI_CTRL00                                0x0030   /* Device Control */
83 #define SYNA_F01_RMI_CTRL01_00                             0x0031   /* Interrupt Enable 0 */
84 #define SYNA_F11_2D_CTRL00                                 0x0032   /* 2D Report Mode */
85 #define SYNA_F11_2D_CTRL01                                 0x0033   /* 2D Palm Detect */
86 #define SYNA_F11_2D_CTRL02                                 0x0034   /* 2D Delta-X Thresh */
87 #define SYNA_F11_2D_CTRL03                                 0x0035   /* 2D Delta-Y Thresh */
88 #define SYNA_F11_2D_CTRL04                                 0x0036   /* 2D Velocity */
89 #define SYNA_F11_2D_CTRL05                                 0x0037   /* 2D Acceleration */
90 #define SYNA_F11_2D_CTRL06                                 0x0038   /* 2D Max X Position (7:0) */
91 #define SYNA_F11_2D_CTRL07                                 0x0039   /* 2D Max X Position (11:8) */
92 #define SYNA_F11_2D_CTRL08                                 0x003A   /* 2D Max Y Position (7:0) */
93 #define SYNA_F11_2D_CTRL09                                 0x003B   /* 2D Max Y Position (11:8) */
94 #define SYNA_F11_2D_CTRL12_00                              0x003C   /* 2D Sensor Map 0 */
95 #define SYNA_F11_2D_CTRL12_01                              0x003D   /* 2D Sensor Map 1 */
96 #define SYNA_F11_2D_CTRL12_02                              0x003E   /* 2D Sensor Map 2 */
97 #define SYNA_F11_2D_CTRL12_03                              0x003F   /* 2D Sensor Map 3 */
98 #define SYNA_F11_2D_CTRL12_04                              0x0040   /* 2D Sensor Map 4 */
99 #define SYNA_F11_2D_CTRL12_05                              0x0041   /* 2D Sensor Map 5 */
100 #define SYNA_F11_2D_CTRL12_06                              0x0042   /* 2D Sensor Map 6 */
101 #define SYNA_F11_2D_CTRL12_07                              0x0043   /* 2D Sensor Map 7 */
102 #define SYNA_F11_2D_CTRL12_08                              0x0044   /* 2D Sensor Map 8 */
103 #define SYNA_F11_2D_CTRL12_09                              0x0045   /* 2D Sensor Map 9 */
104 #define SYNA_F11_2D_CTRL12_10                              0x0046   /* 2D Sensor Map 10 */
105 #define SYNA_F11_2D_CTRL12_11                              0x0047   /* 2D Sensor Map 11 */
106 #define SYNA_F11_2D_CTRL12_12                              0x0048   /* 2D Sensor Map 12 */
107 #define SYNA_F11_2D_CTRL12_13                              0x0049   /* 2D Sensor Map 13 */
108 #define SYNA_F11_2D_CTRL12_14                              0x004A   /* 2D Sensor Map 14 */
109 #define SYNA_F11_2D_CTRL12_15                              0x004B   /* 2D Sensor Map 15 */
110 #define SYNA_F11_2D_CTRL12_16                              0x004C   /* 2D Sensor Map 16 */
111 #define SYNA_F11_2D_CTRL12_17                              0x004D   /* 2D Sensor Map 17 */
112 #define SYNA_F11_2D_CTRL12_18                              0x004E   /* 2D Sensor Map 18 */
113 #define SYNA_F11_2D_CTRL12_19                              0x004F   /* 2D Sensor Map 19 */
114 #define SYNA_F11_2D_CTRL12_20                              0x0050   /* 2D Sensor Map 20 */
115 #define SYNA_F11_2D_CTRL12_21                              0x0051   /* 2D Sensor Map 21 */
116 #define SYNA_F11_2D_CTRL12_22                              0x0052   /* 2D Sensor Map 22 */
117 #define SYNA_F11_2D_CTRL12_23                              0x0053   /* 2D Sensor Map 23 */
118 #define SYNA_F11_2D_CTRL12_24                              0x0054   /* 2D Sensor Map 24 */
119 #define SYNA_F11_2D_CTRL12_25                              0x0055   /* 2D Sensor Map 25 */
120 #define SYNA_F11_2D_CTRL12_26                              0x0056   /* 2D Sensor Map 26 */
121 #define SYNA_F11_2D_CTRL12_27                              0x0057   /* 2D Sensor Map 27 */
122 #define SYNA_F11_2D_CTRL12_28                              0x0058   /* 2D Sensor Map 28 */
123 #define SYNA_F11_2D_CTRL12_29                              0x0059   /* 2D Sensor Map 29 */
124 #define SYNA_F11_2D_CTRL12_30                              0x005A   /* 2D Sensor Map 30 */
125 #define SYNA_F11_2D_CTRL12_31                              0x005B   /* 2D Sensor Map 31 */
126 #define SYNA_F11_2D_CTRL12_32                              0x005C   /* 2D Sensor Map 32 */
127 #define SYNA_F11_2D_CTRL12_33                              0x005D   /* 2D Sensor Map 33 */
128 #define SYNA_F11_2D_CTRL12_34                              0x005E   /* 2D Sensor Map 34 */
129 #define SYNA_F11_2D_CTRL12_35                              0x005F   /* 2D Sensor Map 35 */
130 #define SYNA_F11_2D_CTRL12_36                              0x0060   /* 2D Sensor Map 36 */
131 #define SYNA_F11_2D_CTRL12_37                              0x0061   /* 2D Sensor Map 37 */
132 #define SYNA_F11_2D_CTRL12_38                              0x0062   /* 2D Sensor Map 38 */
133 #define SYNA_F11_2D_CTRL12_39                              0x0063   /* 2D Sensor Map 39 */
134 #define SYNA_F11_2D_CTRL12_40                              0x0064   /* 2D Sensor Map 40 */
135 #define SYNA_F11_2D_CTRL12_41                              0x0065   /* 2D Sensor Map 41 */
136 #define SYNA_F11_2D_CTRL12_42                              0x0066   /* 2D Sensor Map 42 */
137 #define SYNA_F11_2D_CTRL12_43                              0x0067   /* 2D Sensor Map 43 */
138 #define SYNA_F11_2D_CTRL12_44                              0x0068   /* 2D Sensor Map 44 */
139 #define SYNA_F11_2D_CTRL14                                 0x0096   /* 2D Sensitivity Adjustment */
140 #define SYNA_F01_RMI_CMD00                                 0x0097   /* Device Command */
141 #define SYNA_F11_2D_CMD00                                  0x0098   /* 2D Command */
142 #define SYNA_F34_FLASH_QUERY00                             0x0099   /* Bootloader ID 0 */
143 #define SYNA_F34_FLASH_QUERY01                             0x009A   /* Bootloader ID 1 */
144 #define SYNA_F34_FLASH_QUERY02                             0x009B   /* Flash Properties */
145 #define SYNA_F34_FLASH_QUERY03                             0x009C   /* Block Size 0 */
146 #define SYNA_F34_FLASH_QUERY04                             0x009D   /* Block Size 1 */
147 #define SYNA_F34_FLASH_QUERY05                             0x009E   /* Firmware Block Count 0 */
148 #define SYNA_F34_FLASH_QUERY06                             0x009F   /* Firmware Block Count 1 */
149 #define SYNA_F34_FLASH_QUERY07                             0x00A0   /* Configuration Block Count 0 */
150 #define SYNA_F34_FLASH_QUERY08                             0x00A1   /* Configuration Block Count 1 */
151 #define SYNA_F01_RMI_QUERY00                               0x00A2   /* Manufacturer ID Query */
152 #define SYNA_F01_RMI_QUERY01                               0x00A3   /* Product Properties Query */
153 #define SYNA_F01_RMI_QUERY02                               0x00A4   /* Customer Family Query */
154 #define SYNA_F01_RMI_QUERY03                               0x00A5   /* Firmware Revision Query */
155 #define SYNA_F01_RMI_QUERY04                               0x00A6   /* Device Serialization Query 0 */
156 #define SYNA_F01_RMI_QUERY05                               0x00A7   /* Device Serialization Query 1 */
157 #define SYNA_F01_RMI_QUERY06                               0x00A8   /* Device Serialization Query 2 */
158 #define SYNA_F01_RMI_QUERY07                               0x00A9   /* Device Serialization Query 3 */
159 #define SYNA_F01_RMI_QUERY08                               0x00AA   /* Device Serialization Query 4 */
160 #define SYNA_F01_RMI_QUERY09                               0x00AB   /* Device Serialization Query 5 */
161 #define SYNA_F01_RMI_QUERY10                               0x00AC   /* Device Serialization Query 6 */
162 #define SYNA_F01_RMI_QUERY11                               0x00AD   /* Product ID Query 0 */
163 #define SYNA_F01_RMI_QUERY12                               0x00AE   /* Product ID Query 1 */
164 #define SYNA_F01_RMI_QUERY13                               0x00AF   /* Product ID Query 2 */
165 #define SYNA_F01_RMI_QUERY14                               0x00B0   /* Product ID Query 3 */
166 #define SYNA_F01_RMI_QUERY15                               0x00B1   /* Product ID Query 4 */
167 #define SYNA_F01_RMI_QUERY16                               0x00B2   /* Product ID Query 5 */
168 #define SYNA_F01_RMI_QUERY17                               0x00B3   /* Product ID Query 6 */
169 #define SYNA_F01_RMI_QUERY18                               0x00B4   /* Product ID Query 7 */
170 #define SYNA_F01_RMI_QUERY19                               0x00B5   /* Product ID Query 8 */
171 #define SYNA_F01_RMI_QUERY20                               0x00B6   /* Product ID Query 9 */
172 #define SYNA_F11_2D_QUERY00                                0x00B7   /* Per-device Query */
173 #define SYNA_F11_2D_QUERY01                                0x00B8   /* 2D Reporting Mode */
174 #define SYNA_F11_2D_QUERY02                                0x00B9   /* 2D Number of X Electrodes */
175 #define SYNA_F11_2D_QUERY03                                0x00BA   /* 2D Number of Y Electrodes */
176 #define SYNA_F11_2D_QUERY04                                0x00BB   /* 2D Maximum Electrodes */
177 #define SYNA_F11_2D_QUERY05                                0x00BC   /* 2D Absolute Query */
178
179 /* Start of Page Description Table (PDT) */
180
181 #define SYNA_PDT_P00_F11_2D_QUERY_BASE                     0x00DD   /* Query Base */
182 #define SYNA_PDT_P00_F11_2D_COMMAND_BASE                   0x00DE   /* Command Base */
183 #define SYNA_PDT_P00_F11_2D_CONTROL_BASE                   0x00DF   /* Control Base */
184 #define SYNA_PDT_P00_F11_2D_DATA_BASE                      0x00E0   /* Data Base */
185 #define SYNA_PDT_P00_F11_2D_INTERRUPTS                     0x00E1   /* Interrupt Source Count */
186 #define SYNA_PDT_P00_F11_2D_EXISTS                         0x00E2   /* Function Exists */
187 #define SYNA_PDT_P00_F01_RMI_QUERY_BASE                    0x00E3   /* Query Base */
188 #define SYNA_PDT_P00_F01_RMI_COMMAND_BASE                  0x00E4   /* Command Base */
189 #define SYNA_PDT_P00_F01_RMI_CONTROL_BASE                  0x00E5   /* Control Base */
190 #define SYNA_PDT_P00_F01_RMI_DATA_BASE                     0x00E6   /* Data Base */
191 #define SYNA_PDT_P00_F01_RMI_INTERRUPTS                    0x00E7   /* Interrupt Source Count */
192 #define SYNA_PDT_P00_F01_RMI_EXISTS                        0x00E8   /* Function Exists */
193 #define SYNA_PDT_P00_F34_FLASH_QUERY_BASE                  0x00E9   /* Query Base */
194 #define SYNA_PDT_P00_F34_FLASH_COMMAND_BASE                0x00EA   /* Command Base */
195 #define SYNA_PDT_P00_F34_FLASH_CONTROL_BASE                0x00EB   /* Control Base */
196 #define SYNA_PDT_P00_F34_FLASH_DATA_BASE                   0x00EC   /* Data Base */
197 #define SYNA_PDT_P00_F34_FLASH_INTERRUPTS                  0x00ED   /* Interrupt Source Count */
198 #define SYNA_PDT_P00_F34_FLASH_EXISTS                      0x00EE   /* Function Exists */
199 #define SYNA_P00_PDT_PROPERTIES                            0x00EF   /* P00_PDT Properties */
200 #define SYNA_P00_PAGESELECT                                0x00FF   /* Page Select register */
201
202 /* Registers on Page 0x01 */
203
204 /*      Register Name                                      Address     Register Description */
205 /*      -------------                                      -------     -------------------- */
206 #define SYNA_F05_ANALOG_DATA00                             0x0100   /* Reserved */
207 #define SYNA_F05_ANALOG_DATA01                             0x0101   /* Report Mode and Index */
208 #define SYNA_F05_ANALOG_DATA02_00                          0x0102   /* Report Data Window 0 */
209 #define SYNA_F05_ANALOG_DATA02_01                          0x0103   /* Report Data Window 1 */
210 #define SYNA_F05_ANALOG_DATA02_02                          0x0104   /* Report Data Window 2 */
211 #define SYNA_F05_ANALOG_DATA02_03                          0x0105   /* Report Data Window 3 */
212 #define SYNA_F05_ANALOG_DATA02_04                          0x0106   /* Report Data Window 4 */
213 #define SYNA_F05_ANALOG_DATA02_05                          0x0107   /* Report Data Window 5 */
214 #define SYNA_F05_ANALOG_DATA02_06                          0x0108   /* Report Data Window 6 */
215 #define SYNA_F05_ANALOG_DATA02_07                          0x0109   /* Report Data Window 7 */
216 #define SYNA_F05_ANALOG_DATA02_08                          0x010A   /* Report Data Window 8 */
217 #define SYNA_F05_ANALOG_DATA02_09                          0x010B   /* Report Data Window 9 */
218 #define SYNA_F05_ANALOG_DATA02_10                          0x010C   /* Report Data Window 10 */
219 #define SYNA_F05_ANALOG_DATA02_11                          0x010D   /* Report Data Window 11 */
220 #define SYNA_F05_ANALOG_DATA02_12                          0x010E   /* Report Data Window 12 */
221 #define SYNA_F05_ANALOG_DATA02_13                          0x010F   /* Report Data Window 13 */
222 #define SYNA_F05_ANALOG_DATA02_14                          0x0110   /* Report Data Window 14 */
223 #define SYNA_F05_ANALOG_DATA02_15                          0x0111   /* Report Data Window 15 */
224 #define SYNA_F05_ANALOG_DATA02_16                          0x0112   /* Report Data Window 16 */
225 #define SYNA_F05_ANALOG_DATA02_17                          0x0113   /* Report Data Window 17 */
226 #define SYNA_F05_ANALOG_DATA02_18                          0x0114   /* Report Data Window 18 */
227 #define SYNA_F05_ANALOG_DATA02_19                          0x0115   /* Report Data Window 19 */
228 #define SYNA_F05_ANALOG_DATA02_20                          0x0116   /* Report Data Window 20 */
229 #define SYNA_F05_ANALOG_DATA02_21                          0x0117   /* Report Data Window 21 */
230 #define SYNA_F05_ANALOG_DATA02_22                          0x0118   /* Report Data Window 22 */
231 #define SYNA_F05_ANALOG_DATA02_23                          0x0119   /* Report Data Window 23 */
232 #define SYNA_F05_ANALOG_DATA02_24                          0x011A   /* Report Data Window 24 */
233 #define SYNA_F05_ANALOG_DATA02_25                          0x011B   /* Report Data Window 25 */
234 #define SYNA_F05_ANALOG_DATA02_26                          0x011C   /* Report Data Window 26 */
235 #define SYNA_F05_ANALOG_DATA02_27                          0x011D   /* Report Data Window 27 */
236 #define SYNA_F05_ANALOG_DATA02_28                          0x011E   /* Report Data Window 28 */
237 #define SYNA_F05_ANALOG_DATA02_29                          0x011F   /* Report Data Window 29 */
238 #define SYNA_F05_ANALOG_DATA02_30                          0x0120   /* Report Data Window 30 */
239 #define SYNA_F05_ANALOG_DATA02_31                          0x0121   /* Report Data Window 31 */
240 #define SYNA_F05_ANALOG_DATA02_32                          0x0122   /* Report Data Window 32 */
241 #define SYNA_F05_ANALOG_DATA02_33                          0x0123   /* Report Data Window 33 */
242 #define SYNA_F05_ANALOG_CTRL00                             0x0124   /* Algo Control */
243 #define SYNA_F05_ANALOG_CTRL01                             0x0125   /* Reserved */
244 #define SYNA_F05_ANALOG_CTRL02                             0x0126   /* Reserved */
245 #define SYNA_F05_ANALOG_CTRL03                             0x0127   /* Reserved */
246 #define SYNA_F05_ANALOG_CTRL04                             0x0128   /* Reserved */
247 #define SYNA_F05_ANALOG_CTRL05                             0x0129   /* Reserved */
248 #define SYNA_F05_ANALOG_CMD00                              0x012A   /* Analog Command */
249 #define SYNA_F05_ANALOG_QUERY00                            0x012B   /* Receiver Electrodes */
250 #define SYNA_F05_ANALOG_QUERY01                            0x012C   /* Transmitter Electrodes */
251 #define SYNA_F05_ANALOG_QUERY02                            0x012D   /* Reserved */
252 #define SYNA_F05_ANALOG_QUERY03                            0x012E   /* Features */
253 #define SYNA_F05_ANALOG_QUERY04                            0x012F   /* Image Window Count */
254 #define SYNA_F05_ANALOG_QUERY05                            0x0130   /* Reserved */
255
256 /* Start of Page Description Table (PDT) for Page 0x01 */
257
258 #define SYNA_PDT_P01_F05_ANALOG_QUERY_BASE                 0x01E9   /* Query Base */
259 #define SYNA_PDT_P01_F05_ANALOG_COMMAND_BASE               0x01EA   /* Command Base */
260 #define SYNA_PDT_P01_F05_ANALOG_CONTROL_BASE               0x01EB   /* Control Base */
261 #define SYNA_PDT_P01_F05_ANALOG_DATA_BASE                  0x01EC   /* Data Base */
262 #define SYNA_PDT_P01_F05_ANALOG_INTERRUPTS                 0x01ED   /* Interrupt Source Count */
263 #define SYNA_PDT_P01_F05_ANALOG_EXISTS                     0x01EE   /* Function Exists */
264 #define SYNA_P01_PDT_PROPERTIES                            0x01EF   /* P01_PDT Properties */
265 #define SYNA_P01_PAGESELECT                                0x01FF   /* Page Select register */
266
267 /* Offsets within the configuration block */
268
269 /*      Register Name                                      Offset      Register Description */
270 /*      -------------                                      ------      -------------------- */
271 #define SYNA_F01_RMI_CTRL00_CFGBLK_OFS                     0x0000   /* Device Control */
272 #define SYNA_F01_RMI_CTRL01_00_CFGBLK_OFS                  0x0001   /* Interrupt Enable 0 */
273 #define SYNA_F11_2D_CTRL00_CFGBLK_OFS                      0x0002   /* 2D Report Mode */
274 #define SYNA_F11_2D_CTRL01_CFGBLK_OFS                      0x0003   /* 2D Palm Detect */
275 #define SYNA_F11_2D_CTRL02_CFGBLK_OFS                      0x0004   /* 2D Delta-X Thresh */
276 #define SYNA_F11_2D_CTRL03_CFGBLK_OFS                      0x0005   /* 2D Delta-Y Thresh */
277 #define SYNA_F11_2D_CTRL04_CFGBLK_OFS                      0x0006   /* 2D Velocity */
278 #define SYNA_F11_2D_CTRL05_CFGBLK_OFS                      0x0007   /* 2D Acceleration */
279 #define SYNA_F11_2D_CTRL06_CFGBLK_OFS                      0x0008   /* 2D Max X Position (7:0) */
280 #define SYNA_F11_2D_CTRL07_CFGBLK_OFS                      0x0009   /* 2D Max X Position (11:8) */
281 #define SYNA_F11_2D_CTRL08_CFGBLK_OFS                      0x000A   /* 2D Max Y Position (7:0) */
282 #define SYNA_F11_2D_CTRL09_CFGBLK_OFS                      0x000B   /* 2D Max Y Position (11:8) */
283 #define SYNA_F11_2D_CTRL12_00_CFGBLK_OFS                   0x000C   /* 2D Sensor Map 0 */
284 #define SYNA_F11_2D_CTRL12_01_CFGBLK_OFS                   0x000D   /* 2D Sensor Map 1 */
285 #define SYNA_F11_2D_CTRL12_02_CFGBLK_OFS                   0x000E   /* 2D Sensor Map 2 */
286 #define SYNA_F11_2D_CTRL12_03_CFGBLK_OFS                   0x000F   /* 2D Sensor Map 3 */
287 #define SYNA_F11_2D_CTRL12_04_CFGBLK_OFS                   0x0010   /* 2D Sensor Map 4 */
288 #define SYNA_F11_2D_CTRL12_05_CFGBLK_OFS                   0x0011   /* 2D Sensor Map 5 */
289 #define SYNA_F11_2D_CTRL12_06_CFGBLK_OFS                   0x0012   /* 2D Sensor Map 6 */
290 #define SYNA_F11_2D_CTRL12_07_CFGBLK_OFS                   0x0013   /* 2D Sensor Map 7 */
291 #define SYNA_F11_2D_CTRL12_08_CFGBLK_OFS                   0x0014   /* 2D Sensor Map 8 */
292 #define SYNA_F11_2D_CTRL12_09_CFGBLK_OFS                   0x0015   /* 2D Sensor Map 9 */
293 #define SYNA_F11_2D_CTRL12_10_CFGBLK_OFS                   0x0016   /* 2D Sensor Map 10 */
294 #define SYNA_F11_2D_CTRL12_11_CFGBLK_OFS                   0x0017   /* 2D Sensor Map 11 */
295 #define SYNA_F11_2D_CTRL12_12_CFGBLK_OFS                   0x0018   /* 2D Sensor Map 12 */
296 #define SYNA_F11_2D_CTRL12_13_CFGBLK_OFS                   0x0019   /* 2D Sensor Map 13 */
297 #define SYNA_F11_2D_CTRL12_14_CFGBLK_OFS                   0x001A   /* 2D Sensor Map 14 */
298 #define SYNA_F11_2D_CTRL12_15_CFGBLK_OFS                   0x001B   /* 2D Sensor Map 15 */
299 #define SYNA_F11_2D_CTRL12_16_CFGBLK_OFS                   0x001C   /* 2D Sensor Map 16 */
300 #define SYNA_F11_2D_CTRL12_17_CFGBLK_OFS                   0x001D   /* 2D Sensor Map 17 */
301 #define SYNA_F11_2D_CTRL12_18_CFGBLK_OFS                   0x001E   /* 2D Sensor Map 18 */
302 #define SYNA_F11_2D_CTRL12_19_CFGBLK_OFS                   0x001F   /* 2D Sensor Map 19 */
303 #define SYNA_F11_2D_CTRL12_20_CFGBLK_OFS                   0x0020   /* 2D Sensor Map 20 */
304 #define SYNA_F11_2D_CTRL12_21_CFGBLK_OFS                   0x0021   /* 2D Sensor Map 21 */
305 #define SYNA_F11_2D_CTRL12_22_CFGBLK_OFS                   0x0022   /* 2D Sensor Map 22 */
306 #define SYNA_F11_2D_CTRL12_23_CFGBLK_OFS                   0x0023   /* 2D Sensor Map 23 */
307 #define SYNA_F11_2D_CTRL12_24_CFGBLK_OFS                   0x0024   /* 2D Sensor Map 24 */
308 #define SYNA_F11_2D_CTRL12_25_CFGBLK_OFS                   0x0025   /* 2D Sensor Map 25 */
309 #define SYNA_F11_2D_CTRL12_26_CFGBLK_OFS                   0x0026   /* 2D Sensor Map 26 */
310 #define SYNA_F11_2D_CTRL12_27_CFGBLK_OFS                   0x0027   /* 2D Sensor Map 27 */
311 #define SYNA_F11_2D_CTRL12_28_CFGBLK_OFS                   0x0028   /* 2D Sensor Map 28 */
312 #define SYNA_F11_2D_CTRL12_29_CFGBLK_OFS                   0x0029   /* 2D Sensor Map 29 */
313 #define SYNA_F11_2D_CTRL12_30_CFGBLK_OFS                   0x002A   /* 2D Sensor Map 30 */
314 #define SYNA_F11_2D_CTRL12_31_CFGBLK_OFS                   0x002B   /* 2D Sensor Map 31 */
315 #define SYNA_F11_2D_CTRL12_32_CFGBLK_OFS                   0x002C   /* 2D Sensor Map 32 */
316 #define SYNA_F11_2D_CTRL12_33_CFGBLK_OFS                   0x002D   /* 2D Sensor Map 33 */
317 #define SYNA_F11_2D_CTRL12_34_CFGBLK_OFS                   0x002E   /* 2D Sensor Map 34 */
318 #define SYNA_F11_2D_CTRL12_35_CFGBLK_OFS                   0x002F   /* 2D Sensor Map 35 */
319 #define SYNA_F11_2D_CTRL12_36_CFGBLK_OFS                   0x0030   /* 2D Sensor Map 36 */
320 #define SYNA_F11_2D_CTRL12_37_CFGBLK_OFS                   0x0031   /* 2D Sensor Map 37 */
321 #define SYNA_F11_2D_CTRL12_38_CFGBLK_OFS                   0x0032   /* 2D Sensor Map 38 */
322 #define SYNA_F11_2D_CTRL12_39_CFGBLK_OFS                   0x0033   /* 2D Sensor Map 39 */
323 #define SYNA_F11_2D_CTRL12_40_CFGBLK_OFS                   0x0034   /* 2D Sensor Map 40 */
324 #define SYNA_F11_2D_CTRL12_41_CFGBLK_OFS                   0x0035   /* 2D Sensor Map 41 */
325 #define SYNA_F11_2D_CTRL12_42_CFGBLK_OFS                   0x0036   /* 2D Sensor Map 42 */
326 #define SYNA_F11_2D_CTRL12_43_CFGBLK_OFS                   0x0037   /* 2D Sensor Map 43 */
327 #define SYNA_F11_2D_CTRL12_44_CFGBLK_OFS                   0x0038   /* 2D Sensor Map 44 */
328 #define SYNA_F11_2D_CTRL14_CFGBLK_OFS                      0x0066   /* 2D Sensitivity Adjustment */
329 #define SYNA_F05_ANALOG_CTRL00_CFGBLK_OFS                  0x0067   /* Algo Control */
330 #define SYNA_F05_ANALOG_CTRL01_CFGBLK_OFS                  0x0068   /* Reserved */
331 #define SYNA_F05_ANALOG_CTRL02_CFGBLK_OFS                  0x0069   /* Reserved */
332 #define SYNA_F05_ANALOG_CTRL03_CFGBLK_OFS                  0x006A   /* Reserved */
333 #define SYNA_F05_ANALOG_CTRL04_CFGBLK_OFS                  0x006B   /* Reserved */
334 #define SYNA_F05_ANALOG_CTRL05_CFGBLK_OFS                  0x006C   /* Reserved */
335 #define SYNA_CFGBLK_CRC1_CFGBLK_OFS                        0x01FC   /* Configuration CRC [7:0] */
336 #define SYNA_CFGBLK_CRC2_CFGBLK_OFS                        0x01FD   /* Configuration CRC [15:8] */
337 #define SYNA_CFGBLK_CRC3_CFGBLK_OFS                        0x01FE   /* Configuration CRC [23:16] */
338 #define SYNA_CFGBLK_CRC4_CFGBLK_OFS                        0x01FF   /* Configuration CRC [31:24] */
339
340 /* Masks for interrupt sources */
341
342 /*      Symbol Name                                        Mask        Description */
343 /*      -----------                                        ----        ----------- */
344 #define SYNA_F01_RMI_INT_SOURCE_MASK_ALL                   0x0002   /* Mask of all Func $01 (RMI) interrupts */
345 #define SYNA_F01_RMI_INT_SOURCE_MASK_STATUS                0x0002   /* Mask of Func $01 (RMI) 'STATUS' interrupt */
346 #define SYNA_F05_ANALOG_INT_SOURCE_MASK_ALL                0x0008   /* Mask of all Func $05 (ANALOG) interrupts */
347 #define SYNA_F05_ANALOG_INT_SOURCE_MASK_ANALOG             0x0008   /* Mask of Func $05 (ANALOG) 'ANALOG' interrupt */
348 #define SYNA_F11_2D_INT_SOURCE_MASK_ABS0                   0x0004   /* Mask of Func $11 (2D) 'ABS0' interrupt */
349 #define SYNA_F11_2D_INT_SOURCE_MASK_ALL                    0x0004   /* Mask of all Func $11 (2D) interrupts */
350 #define SYNA_F34_FLASH_INT_SOURCE_MASK_ALL                 0x0001   /* Mask of all Func $34 (FLASH) interrupts */
351 #define SYNA_F34_FLASH_INT_SOURCE_MASK_FLASH               0x0001   /* Mask of Func $34 (FLASH) 'FLASH' interrupt */
352
353 /* cwz: change to arch/board.h */
354 #if 1
355 /**
356  * struct synaptics_rmi4_platform_data - contains the rmi4 platform data
357  * @irq_number: irq number
358  * @irq_type: irq type
359  * @x flip: x flip flag
360  * @y flip: y flip flag
361  * @regulator_en: regulator enable flag
362  *
363  * This structure gives platform data for rmi4.
364  */
365 struct synaptics_rmi4_platform_data {
366         int irq_number;
367         int irq_type;
368         bool virtual_keys;   //virtual_keys for touch screen without real keys
369         int lcd_width;
370         int lcd_height;
371         int w_delta;
372         int h_delta;
373         bool x_flip;
374         bool y_flip;
375         bool regulator_en;
376 };
377 #endif
378
379 #endif /* _SYNAPTICS_RMI4_H_INCLUDED_ */