OSHW-DEIMOS/SOFTWARE/A64-TERES/linux-a64/drivers/input/touchscreen/aw5x06/AW5306_userpara.c
Dimitar Gamishev f9b0e7a283 linux
2017-10-13 14:07:04 +03:00

169 lines
4.2 KiB
C
Executable File

#include "AW5306_Reg.h"
#include "AW5306_Drv.h"
#include <linux/string.h>
#include "AW5306_userpara.h"
#include <linux/kernel.h>
#define POS_PRECISION 64
extern int screen_max_x;
extern int screen_max_y;
extern AW5306_UCF AWTPCfg;
extern STRUCTCALI AW_Cali;
extern char AW5306_WorkMode;
extern void AW5306_CLB_WriteCfg(void);
extern int AW_I2C_WriteByte(unsigned char addr, unsigned char data);
extern unsigned char AW_I2C_ReadByte(unsigned char addr);
extern unsigned char AW_I2C_ReadXByte( unsigned char *buf, unsigned char addr, unsigned short len);
extern unsigned char AW5306_RAWDATACHK(void);
const STRUCTCALI Default_Cali1 =
{
"AWINIC TP CALI",
//{0x33,0x23,0x22,0x22,0x22,0x22,0x22,0x02,0x22,0x22}, //TXOFFSET
{0x32,0x32,0x23,0x32,0x33,0x33,0x33,0x03,0x22,0x22}, //TXOFFSET
//{0x9A,0xA9,0xAA,0xA9,0x9B,0x00}, //RXOFFSET
{0x35,0x44,0x55,0x54,0x34,0x00}, //RXOFFSET
//{0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c},//TXCAC
{0x2C,0x2B,0x2B,0x2A,0x2A,0x2C,0x2C,0x2C,0x2C,0x2C,0x2D,0x2D,0x2D,0x2D,0x31,0x2C,0x2C,0x2C,0x2C,0x2C},//TXCAC
//{0x3d,0x3c,0x3c,0x3c,0x3e,0x3a,0x3a,0x3e,0x3c,0x3b,0x3c,0x3c},//RXCAC
{0x84,0x84,0x82,0x82,0x80,0x86,0x86,0x80,0x8C,0x82,0x84,0x84},//RXCAC
//{0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x2e,0x2e,0x0e,0x0e,0x0e,0x0e,0x0e},//TXGAIN
{0x88,0x88,0x88,0x88,0x88,0x68,0x68,0x68,0x68,0x68,0x48,0x48,0x48,0x48,0x28,0x08,0x08,0x08,0x08,0x08},//TXGAIN
};
AW5306_UCF Default_UCF =
{
15, //TX_NUM
10, //RX_NUM
{4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,2,1,0,0}, //TX_ORDER
{0,1,2,3,4,5,6,7,8,9,10,11}, //RX_ORDER
0, //RX_START
0, //HAVE_KEY_LINE
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, //KeyLineValid
480, //MAPPING_MAX_X
800, //MAPPING_MAX_Y
700, //GainClbDeltaMin
800, //GainClbDeltaMax
500, //KeyLineDeltaMin
600, //KeyLineDeltaMax
8300, //OffsetClbExpectedMin
8500, //OffsetClbExpectedMax
300, //RawDataDeviation
6, //CacMultiCoef
7000, //RawDataCheckMin
10000, //RawDataCheckMax
200, //FLYING_TH
150, //MOVING_TH
60, //MOVING_ACCELER
60, //PEAK_TH
70, //GROUP_TH
80, //BIGAREA_TH
25, //BIGAREA_CNT
100, //BIGAREA_FRESHCNT
1, //CACULATE_COEF
1, //FIRST_CALI
0, //RAWDATA_DUMP_SWITCH
0, //MULTI_SCANFREQ
9, //BASE_FREQ
0x83, //FREQ_OFFSET
1, //ESD_PROTECT
0, //MARGIN_COMPENSATE
0, //MARGIN_COMP_DATA_UP
0, //MARGIN_COMP_DATA_DOWN
0, //MARGIN_COMP_DATA_LEFT
0, //MARGIN_COMP_DATA_RIGHT
0, //POINT_RELEASEHOLD
1, //MARGIN_RELEASEHOLD
0, //POINT_PRESSHOLD
1, //KEY_PRESSHOLD
0, //PEAK_ROW_COMPENSATE
1, //PEAK_COL_COMPENSATE
3, //PEAK_COMPENSATE_COEF
0, //LCD_NOISE_PROCESS
50, //LCD_NOISETH
0, //FALSE_PEAK_PROCESS
100, //FALSE_PEAK_TH
2, //STABLE_DELTA_X
2, //STABLE_DELTA_Y
0, //DEBUG_LEVEL
50, //FAST_FRAME
20, //SLOW_FRAME
0 //GAIN_CLB_SEPERATE
};
void AW5306_User_Cfg1(void)
{
unsigned char i;
for(i=0;i<AWTPCfg.TX_LOCAL;i++)
{
AW_I2C_WriteByte(SA_TX_INDEX0+i,AWTPCfg.TX_ORDER[i]); //TX REVERT
}
AW_I2C_WriteByte(SA_TX_NUM,AWTPCfg.TX_LOCAL);
AW_I2C_WriteByte(SA_RX_NUM,AWTPCfg.RX_LOCAL);
if(1 == AWTPCfg.MULTI_SCANFREQ)
{
AW_I2C_WriteByte(SA_SCANFREQ1,AWTPCfg.BASE_FREQ);
AW_I2C_WriteByte(SA_SCANFREQ2,AWTPCfg.BASE_FREQ);
AW_I2C_WriteByte(SA_SCANFREQ3,AWTPCfg.BASE_FREQ);
}
else
{
AW_I2C_WriteByte(SA_SCANFREQ1,AWTPCfg.BASE_FREQ); //3-5
}
//AW_I2C_WriteByte(SA_TCLKDLY,1);
AW_I2C_WriteByte(SA_RX_START,AWTPCfg.RX_START);
AW_I2C_WriteByte(SA_SCANTIM,4); // set to 32 TX cycles mode
AW_I2C_WriteByte(SA_PAGE,1);
AW_I2C_WriteByte(SA_CHAMPCFG,0x2b); //
AW_I2C_WriteByte(SA_OSCCFG1,AWTPCfg.FREQ_OFFSET); //
AW_I2C_WriteByte(SA_PAGE,0);
AW5306_CLB_WriteCfg();
}
void AW5306_User_Init(void)
{
unsigned char ret;
ret = 0;
if(screen_max_x == 1024 && screen_max_y ==600) {
Default_UCF.MAPPING_MAX_X = 600;
Default_UCF.MAPPING_MAX_Y = 1024;
}
AW5306_WorkMode = DeltaMode; //DeltaMode: chip output delta data RawDataMode: chip output rawdata
memcpy(&AWTPCfg,&Default_UCF,sizeof(AW5306_UCF));
memcpy(&AW_Cali,&Default_Cali1,sizeof(STRUCTCALI)); //load default cali value
AW5306_User_Cfg1();
ret = AW5306_RAWDATACHK();
}