#ifndef __LINUX_FT5X0X_TS_H__
#define __LINUX_FT5X0X_TS_H__

/*--------------------TP's GPIO configure----------------------*/
#define  TP_I2C_SCL_GPIO_CTL   (GPIO0_CTL + 4*TP_I2C_SCL_GPIO)
#define  TP_I2C_SDA_GPIO_CTL   (GPIO0_CTL + 4*TP_I2C_SDA_GPIO) 
#define  TP_RESET_GPIO_CTL     (GPIO0_CTL + 4*TP_RESET_GPIO) 

#define  TP_I2C_SCL_ODAT       (GPIO_ODAT0 + 4*(TP_I2C_SCL_GPIO/32))
#define  TP_I2C_SDA_ODAT       (GPIO_ODAT0 + 4*(TP_I2C_SDA_GPIO/32))
#define  TP_RESET_ODAT         (GPIO_ODAT0 + 4*(TP_RESET_GPIO/32))

#define  TP_I2C_SCL_IDAT       (GPIO_IDAT0 + 4*(TP_I2C_SCL_GPIO/32))
#define  TP_I2C_SDA_IDAT       (GPIO_IDAT0 + 4*(TP_I2C_SDA_GPIO/32))
    
#define  TP_I2C_SCL_BIT        (0x00000001<<(TP_I2C_SCL_GPIO%32))
#define  TP_I2C_SDA_BIT        (0x00000001<<(TP_I2C_SDA_GPIO%32))
#define  TP_RESET_BIT          (0x00000001<<(TP_RESET_GPIO%32))


/*----------------TP's i2c address configure--------------------*/
#define  TP_I2C_ADDR         0x70

/*-------------------TP's window configure----------------------*/
#define LCD_WIDTH         240
#define LCD_HEIGHT        320

/* -- dirver configure -- */
#define CFG_SUPPORT_AUTO_UPG 0
#define CFG_SUPPORT_UPDATE_PROJECT_SETTING  0
#define CFG_SUPPORT_TOUCH_KEY  0    //touch key, HOME, SEARCH, RETURN etc
#define CFG_SUPPORT_READ_LEFT_DATA  0
#define CFG_DBG_RAW_DATA_READ  0

#define CFG_MAX_TOUCH_POINTS  1 //5
#define CFG_NUMOFKEYS 4                
#define CFG_FTS_CTP_DRIVER_VERSION "2.0"

#define FTS_PACKET_LENGTH      	32//128

#define SCREEN_MAX_X    1728
#define SCREEN_MAX_Y    1024
#define PRESS_MAX       255

#define CFG_POINT_READ_BUF  5//(3 + 6 * (CFG_MAX_TOUCH_POINTS))

#define FT5X0X_NAME	"ft5x0x_ts"//"synaptics_i2c_rmi"//"synaptics-rmi-ts"// 

#define KEY_PRESS       1
#define KEY_RELEASE     0

#define MOVE_DISTANCE	  900

enum ft5x0x_ts_regs {
	FT5X0X_REG_THGROUP					= 0x80,     /* touch threshold, related to sensitivity */
	FT5X0X_REG_THPEAK						= 0x81,
	FT5X0X_REG_THCAL						= 0x82,
	FT5X0X_REG_THWATER					= 0x83,
	FT5X0X_REG_THTEMP					= 0x84,
	FT5X0X_REG_THDIFF						= 0x85,				
	FT5X0X_REG_CTRL						= 0x86,
	FT5X0X_REG_TIMEENTERMONITOR			= 0x87,
	FT5X0X_REG_PERIODACTIVE				= 0x88,      /* report rate */
	FT5X0X_REG_PERIODMONITOR			= 0x89,
	FT5X0X_REG_HEIGHT_B					= 0x8a,
	FT5X0X_REG_MAX_FRAME					= 0x8b,
	FT5X0X_REG_DIST_MOVE					= 0x8c,
	FT5X0X_REG_DIST_POINT				= 0x8d,
	FT5X0X_REG_FEG_FRAME					= 0x8e,
	FT5X0X_REG_SINGLE_CLICK_OFFSET		= 0x8f,
	FT5X0X_REG_DOUBLE_CLICK_TIME_MIN	= 0x90,
	FT5X0X_REG_SINGLE_CLICK_TIME			= 0x91,
	FT5X0X_REG_LEFT_RIGHT_OFFSET		= 0x92,
	FT5X0X_REG_UP_DOWN_OFFSET			= 0x93,
	FT5X0X_REG_DISTANCE_LEFT_RIGHT		= 0x94,
	FT5X0X_REG_DISTANCE_UP_DOWN		= 0x95,
	FT5X0X_REG_ZOOM_DIS_SQR				= 0x96,
	FT5X0X_REG_RADIAN_VALUE				=0x97,
	FT5X0X_REG_MAX_X_HIGH                       	= 0x98,
	FT5X0X_REG_MAX_X_LOW             			= 0x99,
	FT5X0X_REG_MAX_Y_HIGH            			= 0x9a,
	FT5X0X_REG_MAX_Y_LOW             			= 0x9b,
	FT5X0X_REG_K_X_HIGH            			= 0x9c,
	FT5X0X_REG_K_X_LOW             			= 0x9d,
	FT5X0X_REG_K_Y_HIGH            			= 0x9e,
	FT5X0X_REG_K_Y_LOW             			= 0x9f,
	FT5X0X_REG_AUTO_CLB_MODE			= 0xa0,
	FT5X0X_REG_LIB_VERSION_H 				= 0xa1,
	FT5X0X_REG_LIB_VERSION_L 				= 0xa2,		
	FT5X0X_REG_CIPHER						= 0xa3,
	FT5X0X_REG_MODE						= 0xa4,
	FT5X0X_REG_PMODE						= 0xa5,	  /* Power Consume Mode		*/	
	FT5X0X_REG_FIRMID						= 0xa6,   /* Firmware version */
	FT5X0X_REG_STATE						= 0xa7,
	FT5X0X_REG_FT5201ID					= 0xa8,
	FT5X0X_REG_ERR						= 0xa9,
	FT5X0X_REG_CLB						= 0xaa,
};

//FT5X0X_REG_PMODE
#define PMODE_ACTIVE        0x00
#define PMODE_MONITOR       0x01
#define PMODE_STANDBY       0x02
#define PMODE_HIBERNATE     0x03


#ifndef ABS_MT_TOUCH_MAJOR
#define ABS_MT_TOUCH_MAJOR	0x30	/* touching ellipse */
#define ABS_MT_TOUCH_MINOR	0x31	/* (omit if circular) */
#define ABS_MT_WIDTH_MAJOR	0x32	/* approaching ellipse */
#define ABS_MT_WIDTH_MINOR	0x33	/* (omit if circular) */
#define ABS_MT_ORIENTATION	0x34	/* Ellipse orientation */
#define ABS_MT_POSITION_X	0x35	/* Center X ellipse position */
#define ABS_MT_POSITION_Y	0x36	/* Center Y ellipse position */
#define ABS_MT_TOOL_TYPE	0x37	/* Type of touching device */
#define ABS_MT_BLOB_ID		0x38	/* Group set of pkts as blob */
#endif /* ABS_MT_TOUCH_MAJOR */

#ifndef ABS_MT_TRACKING_ID
#define ABS_MT_TRACKING_ID 0x39 /* Unique ID of initiated contact */
#endif

#endif
