blob: 8f7abffa71b8b6892fc4052b63ee4cd02da56814 [file] [log] [blame]
Flemmarde596a9a2013-04-25 20:52:12 -07001#ifndef _LINUX_ATMEL_H
2#define _LINUX_ATMEL_H
3
4#include <linux/bitops.h>
5
6#define ATMEL_QT602240_NAME "atmel_qt602240"
7#define ATMEL_MXT224E_NAME "atmel_mxt224e"
8
9#define INFO_BLK_FID 0
10#define INFO_BLK_VID 1
11#define INFO_BLK_VER 2
12#define INFO_BLK_BUILD 3
13#define INFO_BLK_XSIZE 4
14#define INFO_BLK_YSIZE 5
15#define INFO_BLK_OBJS 6
16
17#define OBJ_TABLE_TYPE 0
18#define OBJ_TABLE_LSB 1
19#define OBJ_TABLE_MSB 2
20#define OBJ_TABLE_SIZE 3
21#define OBJ_TABLE_INSTANCES 4
22#define OBJ_TABLE_RIDS 5
23
24#define RESERVED_T0 0u
25#define RESERVED_T1 1u
26#define DEBUG_DELTAS_T2 2u
27#define DEBUG_REFERENCES_T3 3u
28#define DEBUG_SIGNALS_T4 4u
29#define GEN_MESSAGEPROCESSOR_T5 5u
30#define GEN_COMMANDPROCESSOR_T6 6u
31#define GEN_POWERCONFIG_T7 7u
32#define GEN_ACQUISITIONCONFIG_T8 8u
33#define TOUCH_MULTITOUCHSCREEN_T9 9u
34#define TOUCH_SINGLETOUCHSCREEN_T10 10u
35#define TOUCH_XSLIDER_T11 11u
36#define TOUCH_YSLIDER_T12 12u
37#define TOUCH_XWHEEL_T13 13u
38#define TOUCH_YWHEEL_T14 14u
39#define TOUCH_KEYARRAY_T15 15u
40#define PROCG_SIGNALFILTER_T16 16u
41#define PROCI_LINEARIZATIONTABLE_T17 17u
42#define SPT_COMCONFIG_T18 18u
43#define SPT_GPIOPWM_T19 19u
44#define PROCI_GRIPFACESUPPRESSION_T20 20u
45#define RESERVED_T21 21u
46#define PROCG_NOISESUPPRESSION_T22 22u
47#define TOUCH_PROXIMITY_T23 23u
48#define PROCI_ONETOUCHGESTUREPROCESSOR_T24 24u
49#define SPT_SELFTEST_T25 25u
50#define DEBUG_CTERANGE_T26 26u
51#define PROCI_TWOTOUCHGESTUREPROCESSOR_T27 27u
52#define SPT_CTECONFIG_T28 28u
53#define SPT_GPI_T29 29u
54#define SPT_GATE_T30 30u
55#define TOUCH_KEYSET_T31 31u
56#define TOUCH_XSLIDERSET_T32 32u
57#define SPT_PROTOTYPE_T35 35u
58#define DIAGNOSTIC_T37 37u
59#define PROCI_GRIPSUPPRESSION_T40 40u
60#define PROCI_TOUCHSUPPRESSION_T42 42u
61#define SPT_MESSAGECOUNT_T44 44u
62#define SPT_CTECONFIG_T46 46u
63#define PROCI_STYLUS_T47 47u
64#define PROCG_NOISESUPPRESSION_T48 48u
65#define PROCI_ADAPTIVETHRESHOLD_T55 55u
66#define EXTRA_NOISE_SUPPRESSION_T58 58u
67
68#define T37_PAGE_SIZE 128
69
70#define T37_TCH_FLAG_SIZE 80
71#define T37_TCH_FLAG_IDX 0
72#define T37_ATCH_FLAG_IDX 40
73
74#define T37_MODE 0
75#define T37_PAGE 1
76#define T37_DATA 2
77
78#define T37_PAGE_NUM0 0
79#define T37_PAGE_NUM1 1
80#define T37_PAGE_NUM2 2
81#define T37_PAGE_NUM3 3
82
83#define MSG_RID 0
84
85#define T6_CFG_RESET 0
86#define T6_CFG_BACKUPNV 1
87#define T6_CFG_CALIBRATE 2
88#define T6_CFG_REPORTALL 3
89#define T6_CFG_DIAG 5
90
91#define T6_CFG_DIAG_CMD_PAGEUP 0x01
92#define T6_CFG_DIAG_CMD_PAGEDOWN 0x02
93#define T6_CFG_DIAG_CMD_DELTAS 0x10
94#define T6_CFG_DIAG_CMD_REF 0x11
95#define T6_CFG_DIAG_CMD_CTE 0x31
96#define T6_CFG_DIAG_CMD_TCH 0xF3
97
98#define T6_MSG_STATUS 1
99#define T6_MSG_CHECKSUM 2
100
101#define T6_MSG_STATUS_COMSERR BIT(2)
102#define T6_MSG_STATUS_CFGERR BIT(3)
103#define T6_MSG_STATUS_CAL BIT(4)
104#define T6_MSG_STATUS_SIGERR BIT(5)
105#define T6_MSG_STATUS_OFL BIT(6)
106#define T6_MSG_STATUS_RESET BIT(7)
107
108#define T7_CFG_IDLEACQINT 0
109#define T7_CFG_ACTVACQINT 1
110#define T7_CFG_ACTV2IDLETO 2
111
112#define T8_CFG_CHRGTIME 0
113#define T8_CFG_TCHDRIFT 2
114#define T8_CFG_DRIFTST 3
115#define T8_CFG_TCHAUTOCAL 4
116#define T8_CFG_SYNC 5
117#define T8_CFG_ATCHCALST 6
118#define T8_CFG_ATCHCALSTHR 7
119#define T8_CFG_ATCHFRCCALTHR 8
120#define T8_CFG_ATCHFRCCALRATIO 9
121
122#define T9_CFG_CTRL 0
123#define T9_CFG_XORIGIN 1
124#define T9_CFG_YORIGIN 2
125#define T9_CFG_XSIZE 3
126#define T9_CFG_YSIZE 4
127#define T9_CFG_AKSCFG 5
128#define T9_CFG_BLEN 6
129#define T9_CFG_TCHTHR 7
130#define T9_CFG_TCHDI 8
131#define T9_CFG_ORIENT 9
132#define T9_CFG_MRGTIMEOUT 10
133#define T9_CFG_MOVHYSTI 11
134#define T9_CFG_MOVHYSTN 12
135#define T9_CFG_MOVFILTER 13
136#define T9_CFG_NUMTOUCH 14
137#define T9_CFG_MRGHYST 15
138#define T9_CFG_MRGTHR 16
139#define T9_CFG_AMPHYST 17
140#define T9_CFG_XRANGE 18
141#define T9_CFG_YRANGE 20
142#define T9_CFG_XLOCLIP 22
143#define T9_CFG_XHICLIP 23
144#define T9_CFG_YLOCLIP 24
145#define T9_CFG_YHICLIP 25
146#define T9_CFG_XEDGECTRL 26
147#define T9_CFG_XEDGEDIST 27
148#define T9_CFG_YEDGECTRL 28
149#define T9_CFG_YEDGEDIST 29
150#define T9_CFG_JUMPLIMIT 30
151#define T9_CFG_TCHHYST 31
152#define T9_CFG_XPITCH 32
153#define T9_CFG_YPITCH 33
154#define T9_CFG_NEXTTCHDI 34
155
156#define T9_MSG_STATUS 1
157#define T9_MSG_XPOSMSB 2
158#define T9_MSG_YPOSMSB 3
159#define T9_MSG_XYPOSLSB 4
160#define T9_MSG_TCHAREA 5
161#define T9_MSG_TCHAMPLITUDE 6
162#define T9_MSG_TCHVECTOR 7
163
164#define T9_MSG_STATUS_UNGRIP BIT(0)
165#define T9_MSG_STATUS_SUPPRESS BIT(1)
166#define T9_MSG_STATUS_AMP BIT(2)
167#define T9_MSG_STATUS_VECTOR BIT(3)
168#define T9_MSG_STATUS_MOVE BIT(4)
169#define T9_MSG_STATUS_RELEASE BIT(5)
170#define T9_MSG_STATUS_PRESS BIT(6)
171#define T9_MSG_STATUS_DETECT BIT(7)
172
173#define T20_CFG_CTRL 0
174#define T20_CFG_XLOGRIP 1
175#define T20_CFG_XHIGRIP 2
176#define T20_CFG_YLOGRIP 3
177#define T20_CFG_YHIGRIP 4
178#define T20_CFG_MAXTCHS 5
179#define T20_CFG_SZTHR1 7
180#define T20_CFG_SZTHR2 8
181#define T20_CFG_SHPTHR1 9
182#define T20_CFG_SHPTHR2 10
183#define T20_CFG_SHPEXTTO 11
184
185#define T20_MSG_STATUS 1
186
187#define T20_MSG_STATUS_FACESUP BIT(0)
188
189#define T22_CFG_CTRL 0
190#define T22_CFG_GCAFUL 3
191#define T22_CFG_GCAFLL 5
192#define T22_CFG_ACTVGCAFVALID 7
193#define T22_CFG_NOISETHR 8
194#define T22_CFG_FREQHOPSCALE 10
195#define T22_CFG_FREQ 11
196#define T22_CFG_IDLEGCAFVAILD 16
197
198#define T22_MSG_STATUS 1
199#define T22_MSG_GCAFDEPTH 2
200#define T22_MSG_FREQINDEX 3
201
202#define T22_MSG_STATUS_FHCHG BIT(0)
203#define T22_MSG_STATUS_GCAFERR BIT(2)
204#define T22_MSG_STATUS_FHERR BIT(3)
205#define T22_MSG_STATUS_GCAFCHG BIT(4)
206
207#define T19_CFG_CTRL 0
208#define T19_CFG_REPORTMASK 1
209#define T19_CFG_DIR 2
210#define T19_CFG_INTPULLUP 3
211#define T19_CFG_OUT 4
212#define T19_CFG_WAKE 5
213#define T19_CFG_PWM 6
214#define T19_CFG_PERIOD 7
215#define T19_CFG_DUTY0 8
216#define T19_CFG_DUTY1 9
217#define T19_CFG_DUTY2 10
218#define T19_CFG_DUTY3 11
219#define T19_CFG_TRIGGER0 12
220#define T19_CFG_TRIGGER1 13
221#define T19_CFG_TRIGGER2 14
222#define T19_CFG_TRIGGER3 15
223
224#define T19_CFG_CTRL_ENABLE BIT(0)
225#define T19_CFG_CTRL_RPTEN BIT(1)
226#define T19_CFG_CTRL_FORCERPT BIT(2)
227
228#define T19_MSG_STATUS 1
229
230#define T25_CFG_CTRL 0
231#define T25_CFG_CMD 1
232
233#define T25_MSG_STATUS 1
234#define T25_MSG_INFO 2
235
236#define T28_CFG_CTRL 0
237#define T28_CFG_CMD 1
238#define T28_CFG_MODE 2
239#define T28_CFG_IDLEGCAFDEPTH 3
240#define T28_CFG_ACTVGCAFDEPTH 4
241#define T28_CFG_VOLTAGE 5
242
243#define T28_CFG_MODE0_X 16
244#define T28_CFG_MODE0_Y 14
245
246#define T28_MSG_STATUS 1
247
248#define T40_CFG_CTRL 0
249#define T40_CFG_XLOGRIP 1
250#define T40_CFG_XHIGRIP 2
251#define T40_CFG_YLOGRIP 3
252#define T40_CFG_YHIGRIP 4
253
254#define T42_CFG_CTRL 0
255#define T42_CFG_APPRTHR 1
256#define T42_CFG_MAXAPPRAREA 2
257#define T42_CFG_MAXTCHAREA 3
258#define T42_CFG_SUPSTRENGTH 4
259#define T42_CFG_SUPEXTTO 5
260#define T42_CFG_MAXNUMTCHS 6
261#define T42_CFG_SHAPESTRENGTH 7
262
263#define T42_MSG_STATUS 1
264
265#define T47_CFG_CTRL 0
266#define T47_CFG_CONTMIN 1
267#define T47_CFG_CONTMAX 2
268#define T47_CFG_STABILITY 3
269#define T47_CFG_MAXTCHAREA 4
270#define T47_CFG_AMPLTHR 5
271#define T47_CFG_STYSHAPE 6
272#define T47_CFG_HOVERSUP 7
273#define T47_CFG_CONFTHR 8
274#define T47_CFG_SYNCSPERX 9
275
276#define T48_CFG_CTRL 0
277#define T48_CFG_CFG 1
278#define T48_CFG_CALCFG 2
279#define T48_CFG_BASEFREQ 3
280#define T48_CFG_FREQ 4
281#define T48_CFG_MFFREQ 8
282#define T48_CFG_NLGAIN 10
283#define T48_CFG_NLTHR 11
284#define T48_CFG_GCLIMIT 12
285#define T48_CFG_GCACTVINVLDADCS 13
286#define T48_CFG_GCIDLEINVLDADCS 14
287#define T48_CFG_GCINVALIDTHR 15
288#define T48_CFG_GCMAXADCSPERX 17
289#define T48_CFG_GCLIMITMIN 18
290#define T48_CFG_GCLIMITMAX 19
291#define T48_CFG_GCCOUNTMINTGT 20
292#define T48_CFG_MFINVLDDIFFTHR 22
293#define T48_CFG_MFINCADCSPXTHR 23
294#define T48_CFG_MFERRORTHR 25
295#define T48_CFG_SELFREQMAX 27
296#define T48_CFG_NOCALCFG 28
297#define T48_CFG_T9SETTINGS 34
298
299#define T48_MSG_STATUS 1
300#define T48_MSG_ADCSPERX 2
301#define T48_MSG_FREQ 3
302#define T48_MSG_STATE 4
303#define T48_MSG_NOISE_LV 5
304#define T48_MSG_NLTHR 6
305
306#define T48_MSG_STATUS_FREQCHG BIT(0)
307#define T48_MSG_STATUS_APXCHG BIT(1)
308#define T48_MSG_STATUS_ALGOERR BIT(2)
309#define T48_MSG_STATUS_STATCHG BIT(4)
310#define T48_MSG_STATUS_NLVLCGH BIT(5)
311
312#define T48_MSG_STATE_OFF 0
313#define T48_MSG_STATE_SEARCH 1
314#define T48_MSG_STATE_GC 2
315#define T48_MSG_STATE_GC_ERR 3
316#define T48_MSG_STATE_MF 4
317#define T48_MSG_STATE_MF_ERR 5
318#define T48_MSG_STATE_NORMAL 6
319
320#define T46_CFG_CTRL 0
321#define T46_CFG_MODE 1
322#define T46_CFG_IDLESYNCSPERX 2
323#define T46_CFG_ACTVSYNCSPERX 3
324#define T46_CFG_ADCSPERSYNC 4
325#define T46_CFG_PULSESPERADC 5
326#define T46_CFG_XSLEW 6
327#define T46_CFG_SYNCDELAY 7
328
329#define T46_CFG_MODE0_X 16
330#define T46_CFG_MODE0_Y 14
331
332#define T46_MSG_STATUS 1
333
334#define T35_CFG_MAXTCHTHR 0
335#define T35_CFG_MAXNLTHR 1
336#define T35_CFG_MAXDI 2
337#define T35_CFG_MAXFILTER 3
338#define T35_CFG_THRCHTHR 4
339
340#define T58_CFG_INCTCHTHR 0
341#define T58_CFG_MAXNLTHR 1
342#define T58_CFG_MAXDI 2
343#define T58_CFG_MAXFILTER 3
344#define T58_CFG_THRCHTHR 4
345
346#define CB_TCHTHR 0
347#define CB_NOISETHR 1
348#define CB_IDLEGCAFDEPTH 2
349#define CB_ACTVGCAFDEPTH 3
350#define CB_NLTHR 1
351#define CB_IDLESYNCSPERX 2
352#define CB_ACTVSYNCSPERX 3
353#define CB_SELFREQMAX 4
354#define CB_BASEFREQ 5
355#define CB_TCHDI 6
356#define CB_NEXTTCHDI 7
357#define CB_INCTCHTHR 8
358#define CB_MAXNLTHR 9
359#define CB_MINTCHDI 10
360#define CB_MINMOVFILTER 11
361#define CB_TCHTHRCHGTHR 12
362
363#define WLC_IDLEACQINT 0
364#define WLC_ACTVACQINT 1
365#define WLC_ACTV2IDLETO 2
366#define WLC_TCHTHR 3
367#define WLC_NOISETHR 4
368#define WLC_IDLEGCAFDEPTH 5
369#define WLC_ACTVGCAFDEPTH 6
370
371#define NC_TCHTHR 0
372#define NC_TCHDI 1
373#define NC_NOISETHR 2
374
375#define FL_XLOGRIPMIN 0
376#define FL_XLOGRIPMAX 1
377#define FL_XHIGRIPMIN 2
378#define FL_XHIGRIPMAX 3
379
380#define TW_SHIFT 1
381
382#define SYN_AND_REPORT_TYPE_A 0
383#define SYN_AND_REPORT_TYPE_B 1
384
385struct info_id_t {
386 uint8_t family_id;
387 uint8_t variant_id;
388 uint8_t version;
389 uint8_t build;
390 uint8_t matrix_x_size;
391 uint8_t matrix_y_size;
392 uint8_t num_declared_objects;
393};
394
395struct object_t {
396 uint8_t object_type;
397 uint16_t i2c_address;
398 uint8_t size;
399 uint8_t instances;
400 uint8_t num_report_ids;
401 uint8_t report_ids;
402};
403
404struct atmel_virtual_key {
405 int keycode;
406 int range_min;
407 int range_max;
408};
409
410struct atmel_finger_data {
411 int x;
412 int y;
413 int w;
414 int z;
415};
416
417struct atmel_cfg {
418 uint8_t objid;
419 uint8_t byte;
420 uint8_t value;
421 uint8_t orival;
422};
423
424struct atmel_mferr {
425 uint8_t cnt;
426 struct atmel_cfg *cfg;
427};
428
429struct atmel_i2c_platform_data {
430 uint16_t version;
431 uint16_t source;
432 uint16_t build;
433 uint16_t abs_x_min;
434 uint16_t abs_x_max;
435 uint16_t abs_y_min;
436 uint16_t abs_y_max;
437 uint8_t abs_pressure_min;
438 uint8_t abs_pressure_max;
439 uint8_t abs_width_min;
440 uint8_t abs_width_max;
441 int gpio_irq;
442 int gpio_rst;
443 int (*power)(int on);
444 uint8_t unlock_attr;
445 uint8_t report_type;
446 int8_t config_T6[6];
447 int8_t config_T7[3];
448 int8_t config_T8[10];
449 int8_t config_T9[35];
450 int8_t config_T15[11];
451 int8_t config_T18[2];
452 int8_t config_T19[16];
453 int8_t config_T20[12];
454 int8_t config_T22[17];
455 int8_t config_T23[15];
456 int8_t config_T24[19];
457 int8_t config_T25[14];
458 int8_t config_T27[7];
459 int8_t config_T28[6];
460 int8_t config_T35[11];
461 int8_t config_T40[5];
462 int8_t config_T42[8];
463 int8_t config_T46[9];
464 int8_t config_T47[10];
465 int8_t config_T48[54];
466 int8_t config_T55[4];
467 int8_t config_T58[11];
468 uint8_t object_crc[3];
469 int8_t cable_config_T7[3];
470 int8_t cable_config_T8[10];
471 int8_t cable_config_T9[35];
472 int8_t cable_config_T22[17];
473 int8_t cable_config_T28[6];
474 int8_t wlc_config[7];
475 uint8_t wlc_freq[5];
476 int8_t noise_config[3];
477 uint8_t call_tchthr[2];
478 uint8_t locking_config[1];
479 uint16_t filter_level[4];
480 uint8_t GCAF_level[5];
481 struct atmel_mferr mferr_config;
482 struct atmel_mferr cfm_calb;
483 struct atmel_mferr cable_config;
484 uint8_t noiseLine_config[8];
485 uint8_t workaround;
486#if defined(CONFIG_TOUCH_KEY_FILTER)
487 uint16_t flt_th;
488#endif
489};
490
491struct atmel_config_data {
492 int8_t config[6];
493 int8_t *config_T7;
494 int8_t *config_T8;
495 int8_t *config_T9;
496 int8_t *config_T22;
497 int8_t *config_T28;
498 int8_t *config_T35;
499 int8_t *config_T40;
500 int8_t *config_T42;
501 int8_t *config_T46;
502 int8_t *config_T48;
503 int8_t *config_T55;
504 int8_t *config_T58;
505};
506
507#endif
508