blob: 8f7abffa71b8b6892fc4052b63ee4cd02da56814 [file] [log] [blame]
#ifndef _LINUX_ATMEL_H
#define _LINUX_ATMEL_H
#include <linux/bitops.h>
#define ATMEL_QT602240_NAME "atmel_qt602240"
#define ATMEL_MXT224E_NAME "atmel_mxt224e"
#define INFO_BLK_FID 0
#define INFO_BLK_VID 1
#define INFO_BLK_VER 2
#define INFO_BLK_BUILD 3
#define INFO_BLK_XSIZE 4
#define INFO_BLK_YSIZE 5
#define INFO_BLK_OBJS 6
#define OBJ_TABLE_TYPE 0
#define OBJ_TABLE_LSB 1
#define OBJ_TABLE_MSB 2
#define OBJ_TABLE_SIZE 3
#define OBJ_TABLE_INSTANCES 4
#define OBJ_TABLE_RIDS 5
#define RESERVED_T0 0u
#define RESERVED_T1 1u
#define DEBUG_DELTAS_T2 2u
#define DEBUG_REFERENCES_T3 3u
#define DEBUG_SIGNALS_T4 4u
#define GEN_MESSAGEPROCESSOR_T5 5u
#define GEN_COMMANDPROCESSOR_T6 6u
#define GEN_POWERCONFIG_T7 7u
#define GEN_ACQUISITIONCONFIG_T8 8u
#define TOUCH_MULTITOUCHSCREEN_T9 9u
#define TOUCH_SINGLETOUCHSCREEN_T10 10u
#define TOUCH_XSLIDER_T11 11u
#define TOUCH_YSLIDER_T12 12u
#define TOUCH_XWHEEL_T13 13u
#define TOUCH_YWHEEL_T14 14u
#define TOUCH_KEYARRAY_T15 15u
#define PROCG_SIGNALFILTER_T16 16u
#define PROCI_LINEARIZATIONTABLE_T17 17u
#define SPT_COMCONFIG_T18 18u
#define SPT_GPIOPWM_T19 19u
#define PROCI_GRIPFACESUPPRESSION_T20 20u
#define RESERVED_T21 21u
#define PROCG_NOISESUPPRESSION_T22 22u
#define TOUCH_PROXIMITY_T23 23u
#define PROCI_ONETOUCHGESTUREPROCESSOR_T24 24u
#define SPT_SELFTEST_T25 25u
#define DEBUG_CTERANGE_T26 26u
#define PROCI_TWOTOUCHGESTUREPROCESSOR_T27 27u
#define SPT_CTECONFIG_T28 28u
#define SPT_GPI_T29 29u
#define SPT_GATE_T30 30u
#define TOUCH_KEYSET_T31 31u
#define TOUCH_XSLIDERSET_T32 32u
#define SPT_PROTOTYPE_T35 35u
#define DIAGNOSTIC_T37 37u
#define PROCI_GRIPSUPPRESSION_T40 40u
#define PROCI_TOUCHSUPPRESSION_T42 42u
#define SPT_MESSAGECOUNT_T44 44u
#define SPT_CTECONFIG_T46 46u
#define PROCI_STYLUS_T47 47u
#define PROCG_NOISESUPPRESSION_T48 48u
#define PROCI_ADAPTIVETHRESHOLD_T55 55u
#define EXTRA_NOISE_SUPPRESSION_T58 58u
#define T37_PAGE_SIZE 128
#define T37_TCH_FLAG_SIZE 80
#define T37_TCH_FLAG_IDX 0
#define T37_ATCH_FLAG_IDX 40
#define T37_MODE 0
#define T37_PAGE 1
#define T37_DATA 2
#define T37_PAGE_NUM0 0
#define T37_PAGE_NUM1 1
#define T37_PAGE_NUM2 2
#define T37_PAGE_NUM3 3
#define MSG_RID 0
#define T6_CFG_RESET 0
#define T6_CFG_BACKUPNV 1
#define T6_CFG_CALIBRATE 2
#define T6_CFG_REPORTALL 3
#define T6_CFG_DIAG 5
#define T6_CFG_DIAG_CMD_PAGEUP 0x01
#define T6_CFG_DIAG_CMD_PAGEDOWN 0x02
#define T6_CFG_DIAG_CMD_DELTAS 0x10
#define T6_CFG_DIAG_CMD_REF 0x11
#define T6_CFG_DIAG_CMD_CTE 0x31
#define T6_CFG_DIAG_CMD_TCH 0xF3
#define T6_MSG_STATUS 1
#define T6_MSG_CHECKSUM 2
#define T6_MSG_STATUS_COMSERR BIT(2)
#define T6_MSG_STATUS_CFGERR BIT(3)
#define T6_MSG_STATUS_CAL BIT(4)
#define T6_MSG_STATUS_SIGERR BIT(5)
#define T6_MSG_STATUS_OFL BIT(6)
#define T6_MSG_STATUS_RESET BIT(7)
#define T7_CFG_IDLEACQINT 0
#define T7_CFG_ACTVACQINT 1
#define T7_CFG_ACTV2IDLETO 2
#define T8_CFG_CHRGTIME 0
#define T8_CFG_TCHDRIFT 2
#define T8_CFG_DRIFTST 3
#define T8_CFG_TCHAUTOCAL 4
#define T8_CFG_SYNC 5
#define T8_CFG_ATCHCALST 6
#define T8_CFG_ATCHCALSTHR 7
#define T8_CFG_ATCHFRCCALTHR 8
#define T8_CFG_ATCHFRCCALRATIO 9
#define T9_CFG_CTRL 0
#define T9_CFG_XORIGIN 1
#define T9_CFG_YORIGIN 2
#define T9_CFG_XSIZE 3
#define T9_CFG_YSIZE 4
#define T9_CFG_AKSCFG 5
#define T9_CFG_BLEN 6
#define T9_CFG_TCHTHR 7
#define T9_CFG_TCHDI 8
#define T9_CFG_ORIENT 9
#define T9_CFG_MRGTIMEOUT 10
#define T9_CFG_MOVHYSTI 11
#define T9_CFG_MOVHYSTN 12
#define T9_CFG_MOVFILTER 13
#define T9_CFG_NUMTOUCH 14
#define T9_CFG_MRGHYST 15
#define T9_CFG_MRGTHR 16
#define T9_CFG_AMPHYST 17
#define T9_CFG_XRANGE 18
#define T9_CFG_YRANGE 20
#define T9_CFG_XLOCLIP 22
#define T9_CFG_XHICLIP 23
#define T9_CFG_YLOCLIP 24
#define T9_CFG_YHICLIP 25
#define T9_CFG_XEDGECTRL 26
#define T9_CFG_XEDGEDIST 27
#define T9_CFG_YEDGECTRL 28
#define T9_CFG_YEDGEDIST 29
#define T9_CFG_JUMPLIMIT 30
#define T9_CFG_TCHHYST 31
#define T9_CFG_XPITCH 32
#define T9_CFG_YPITCH 33
#define T9_CFG_NEXTTCHDI 34
#define T9_MSG_STATUS 1
#define T9_MSG_XPOSMSB 2
#define T9_MSG_YPOSMSB 3
#define T9_MSG_XYPOSLSB 4
#define T9_MSG_TCHAREA 5
#define T9_MSG_TCHAMPLITUDE 6
#define T9_MSG_TCHVECTOR 7
#define T9_MSG_STATUS_UNGRIP BIT(0)
#define T9_MSG_STATUS_SUPPRESS BIT(1)
#define T9_MSG_STATUS_AMP BIT(2)
#define T9_MSG_STATUS_VECTOR BIT(3)
#define T9_MSG_STATUS_MOVE BIT(4)
#define T9_MSG_STATUS_RELEASE BIT(5)
#define T9_MSG_STATUS_PRESS BIT(6)
#define T9_MSG_STATUS_DETECT BIT(7)
#define T20_CFG_CTRL 0
#define T20_CFG_XLOGRIP 1
#define T20_CFG_XHIGRIP 2
#define T20_CFG_YLOGRIP 3
#define T20_CFG_YHIGRIP 4
#define T20_CFG_MAXTCHS 5
#define T20_CFG_SZTHR1 7
#define T20_CFG_SZTHR2 8
#define T20_CFG_SHPTHR1 9
#define T20_CFG_SHPTHR2 10
#define T20_CFG_SHPEXTTO 11
#define T20_MSG_STATUS 1
#define T20_MSG_STATUS_FACESUP BIT(0)
#define T22_CFG_CTRL 0
#define T22_CFG_GCAFUL 3
#define T22_CFG_GCAFLL 5
#define T22_CFG_ACTVGCAFVALID 7
#define T22_CFG_NOISETHR 8
#define T22_CFG_FREQHOPSCALE 10
#define T22_CFG_FREQ 11
#define T22_CFG_IDLEGCAFVAILD 16
#define T22_MSG_STATUS 1
#define T22_MSG_GCAFDEPTH 2
#define T22_MSG_FREQINDEX 3
#define T22_MSG_STATUS_FHCHG BIT(0)
#define T22_MSG_STATUS_GCAFERR BIT(2)
#define T22_MSG_STATUS_FHERR BIT(3)
#define T22_MSG_STATUS_GCAFCHG BIT(4)
#define T19_CFG_CTRL 0
#define T19_CFG_REPORTMASK 1
#define T19_CFG_DIR 2
#define T19_CFG_INTPULLUP 3
#define T19_CFG_OUT 4
#define T19_CFG_WAKE 5
#define T19_CFG_PWM 6
#define T19_CFG_PERIOD 7
#define T19_CFG_DUTY0 8
#define T19_CFG_DUTY1 9
#define T19_CFG_DUTY2 10
#define T19_CFG_DUTY3 11
#define T19_CFG_TRIGGER0 12
#define T19_CFG_TRIGGER1 13
#define T19_CFG_TRIGGER2 14
#define T19_CFG_TRIGGER3 15
#define T19_CFG_CTRL_ENABLE BIT(0)
#define T19_CFG_CTRL_RPTEN BIT(1)
#define T19_CFG_CTRL_FORCERPT BIT(2)
#define T19_MSG_STATUS 1
#define T25_CFG_CTRL 0
#define T25_CFG_CMD 1
#define T25_MSG_STATUS 1
#define T25_MSG_INFO 2
#define T28_CFG_CTRL 0
#define T28_CFG_CMD 1
#define T28_CFG_MODE 2
#define T28_CFG_IDLEGCAFDEPTH 3
#define T28_CFG_ACTVGCAFDEPTH 4
#define T28_CFG_VOLTAGE 5
#define T28_CFG_MODE0_X 16
#define T28_CFG_MODE0_Y 14
#define T28_MSG_STATUS 1
#define T40_CFG_CTRL 0
#define T40_CFG_XLOGRIP 1
#define T40_CFG_XHIGRIP 2
#define T40_CFG_YLOGRIP 3
#define T40_CFG_YHIGRIP 4
#define T42_CFG_CTRL 0
#define T42_CFG_APPRTHR 1
#define T42_CFG_MAXAPPRAREA 2
#define T42_CFG_MAXTCHAREA 3
#define T42_CFG_SUPSTRENGTH 4
#define T42_CFG_SUPEXTTO 5
#define T42_CFG_MAXNUMTCHS 6
#define T42_CFG_SHAPESTRENGTH 7
#define T42_MSG_STATUS 1
#define T47_CFG_CTRL 0
#define T47_CFG_CONTMIN 1
#define T47_CFG_CONTMAX 2
#define T47_CFG_STABILITY 3
#define T47_CFG_MAXTCHAREA 4
#define T47_CFG_AMPLTHR 5
#define T47_CFG_STYSHAPE 6
#define T47_CFG_HOVERSUP 7
#define T47_CFG_CONFTHR 8
#define T47_CFG_SYNCSPERX 9
#define T48_CFG_CTRL 0
#define T48_CFG_CFG 1
#define T48_CFG_CALCFG 2
#define T48_CFG_BASEFREQ 3
#define T48_CFG_FREQ 4
#define T48_CFG_MFFREQ 8
#define T48_CFG_NLGAIN 10
#define T48_CFG_NLTHR 11
#define T48_CFG_GCLIMIT 12
#define T48_CFG_GCACTVINVLDADCS 13
#define T48_CFG_GCIDLEINVLDADCS 14
#define T48_CFG_GCINVALIDTHR 15
#define T48_CFG_GCMAXADCSPERX 17
#define T48_CFG_GCLIMITMIN 18
#define T48_CFG_GCLIMITMAX 19
#define T48_CFG_GCCOUNTMINTGT 20
#define T48_CFG_MFINVLDDIFFTHR 22
#define T48_CFG_MFINCADCSPXTHR 23
#define T48_CFG_MFERRORTHR 25
#define T48_CFG_SELFREQMAX 27
#define T48_CFG_NOCALCFG 28
#define T48_CFG_T9SETTINGS 34
#define T48_MSG_STATUS 1
#define T48_MSG_ADCSPERX 2
#define T48_MSG_FREQ 3
#define T48_MSG_STATE 4
#define T48_MSG_NOISE_LV 5
#define T48_MSG_NLTHR 6
#define T48_MSG_STATUS_FREQCHG BIT(0)
#define T48_MSG_STATUS_APXCHG BIT(1)
#define T48_MSG_STATUS_ALGOERR BIT(2)
#define T48_MSG_STATUS_STATCHG BIT(4)
#define T48_MSG_STATUS_NLVLCGH BIT(5)
#define T48_MSG_STATE_OFF 0
#define T48_MSG_STATE_SEARCH 1
#define T48_MSG_STATE_GC 2
#define T48_MSG_STATE_GC_ERR 3
#define T48_MSG_STATE_MF 4
#define T48_MSG_STATE_MF_ERR 5
#define T48_MSG_STATE_NORMAL 6
#define T46_CFG_CTRL 0
#define T46_CFG_MODE 1
#define T46_CFG_IDLESYNCSPERX 2
#define T46_CFG_ACTVSYNCSPERX 3
#define T46_CFG_ADCSPERSYNC 4
#define T46_CFG_PULSESPERADC 5
#define T46_CFG_XSLEW 6
#define T46_CFG_SYNCDELAY 7
#define T46_CFG_MODE0_X 16
#define T46_CFG_MODE0_Y 14
#define T46_MSG_STATUS 1
#define T35_CFG_MAXTCHTHR 0
#define T35_CFG_MAXNLTHR 1
#define T35_CFG_MAXDI 2
#define T35_CFG_MAXFILTER 3
#define T35_CFG_THRCHTHR 4
#define T58_CFG_INCTCHTHR 0
#define T58_CFG_MAXNLTHR 1
#define T58_CFG_MAXDI 2
#define T58_CFG_MAXFILTER 3
#define T58_CFG_THRCHTHR 4
#define CB_TCHTHR 0
#define CB_NOISETHR 1
#define CB_IDLEGCAFDEPTH 2
#define CB_ACTVGCAFDEPTH 3
#define CB_NLTHR 1
#define CB_IDLESYNCSPERX 2
#define CB_ACTVSYNCSPERX 3
#define CB_SELFREQMAX 4
#define CB_BASEFREQ 5
#define CB_TCHDI 6
#define CB_NEXTTCHDI 7
#define CB_INCTCHTHR 8
#define CB_MAXNLTHR 9
#define CB_MINTCHDI 10
#define CB_MINMOVFILTER 11
#define CB_TCHTHRCHGTHR 12
#define WLC_IDLEACQINT 0
#define WLC_ACTVACQINT 1
#define WLC_ACTV2IDLETO 2
#define WLC_TCHTHR 3
#define WLC_NOISETHR 4
#define WLC_IDLEGCAFDEPTH 5
#define WLC_ACTVGCAFDEPTH 6
#define NC_TCHTHR 0
#define NC_TCHDI 1
#define NC_NOISETHR 2
#define FL_XLOGRIPMIN 0
#define FL_XLOGRIPMAX 1
#define FL_XHIGRIPMIN 2
#define FL_XHIGRIPMAX 3
#define TW_SHIFT 1
#define SYN_AND_REPORT_TYPE_A 0
#define SYN_AND_REPORT_TYPE_B 1
struct info_id_t {
uint8_t family_id;
uint8_t variant_id;
uint8_t version;
uint8_t build;
uint8_t matrix_x_size;
uint8_t matrix_y_size;
uint8_t num_declared_objects;
};
struct object_t {
uint8_t object_type;
uint16_t i2c_address;
uint8_t size;
uint8_t instances;
uint8_t num_report_ids;
uint8_t report_ids;
};
struct atmel_virtual_key {
int keycode;
int range_min;
int range_max;
};
struct atmel_finger_data {
int x;
int y;
int w;
int z;
};
struct atmel_cfg {
uint8_t objid;
uint8_t byte;
uint8_t value;
uint8_t orival;
};
struct atmel_mferr {
uint8_t cnt;
struct atmel_cfg *cfg;
};
struct atmel_i2c_platform_data {
uint16_t version;
uint16_t source;
uint16_t build;
uint16_t abs_x_min;
uint16_t abs_x_max;
uint16_t abs_y_min;
uint16_t abs_y_max;
uint8_t abs_pressure_min;
uint8_t abs_pressure_max;
uint8_t abs_width_min;
uint8_t abs_width_max;
int gpio_irq;
int gpio_rst;
int (*power)(int on);
uint8_t unlock_attr;
uint8_t report_type;
int8_t config_T6[6];
int8_t config_T7[3];
int8_t config_T8[10];
int8_t config_T9[35];
int8_t config_T15[11];
int8_t config_T18[2];
int8_t config_T19[16];
int8_t config_T20[12];
int8_t config_T22[17];
int8_t config_T23[15];
int8_t config_T24[19];
int8_t config_T25[14];
int8_t config_T27[7];
int8_t config_T28[6];
int8_t config_T35[11];
int8_t config_T40[5];
int8_t config_T42[8];
int8_t config_T46[9];
int8_t config_T47[10];
int8_t config_T48[54];
int8_t config_T55[4];
int8_t config_T58[11];
uint8_t object_crc[3];
int8_t cable_config_T7[3];
int8_t cable_config_T8[10];
int8_t cable_config_T9[35];
int8_t cable_config_T22[17];
int8_t cable_config_T28[6];
int8_t wlc_config[7];
uint8_t wlc_freq[5];
int8_t noise_config[3];
uint8_t call_tchthr[2];
uint8_t locking_config[1];
uint16_t filter_level[4];
uint8_t GCAF_level[5];
struct atmel_mferr mferr_config;
struct atmel_mferr cfm_calb;
struct atmel_mferr cable_config;
uint8_t noiseLine_config[8];
uint8_t workaround;
#if defined(CONFIG_TOUCH_KEY_FILTER)
uint16_t flt_th;
#endif
};
struct atmel_config_data {
int8_t config[6];
int8_t *config_T7;
int8_t *config_T8;
int8_t *config_T9;
int8_t *config_T22;
int8_t *config_T28;
int8_t *config_T35;
int8_t *config_T40;
int8_t *config_T42;
int8_t *config_T46;
int8_t *config_T48;
int8_t *config_T55;
int8_t *config_T58;
};
#endif