gt818.h
* include/linux/goodix_touch.h
*
* Copyright (C) 2011 Goodix, Inc.
*
* Author: Felix
* Date: 2011.04.28
*/
#ifndef _LINUX_GOODIX_TOUCH_H
#define _LINUX_GOODIX_TOUCH_H
#include <linux/earlysuspend.h>
#include <linux/hrtimer.h>
#include <linux/i2c.h>
#include <linux/input.h>
//*************************TouchScreen Work Part*****************************
//#define GT818_TS_ADDR (0xc000 | 0xba>>1)
#define GT818_TS_ADDR (0xba>>1)
#define GOODIX_I2C_NAME "Goodix-TS"
#define GT801_PLUS
#define GT801_NUVOTON
#define GUITAR_UPDATE_STATE 0x02
//#define NO_DEFAULT_ID //AUTO SET ADDRESS
//define resolution of the touchscreen
#define TOUCH_MAX_HEIGHT 800
#define TOUCH_MAX_WIDTH 480
//define resolution of the LCD
//#define SCREEN_MAX_HEIGHT 7680
//#define SCREEN_MAX_WIDTH 5120
#define SHUTDOWN_PORT 1 //S3C64XX_GPF(3) //SHUTDOWN管脚号
#define INT_PORT 1 //S3C64XX_GPL(10)//S3C64XX_GPN(15) //Int IO port
#ifdef INT_PORT
#define TS_INT gpio_to_irq(INT_PORT) //Interrupt Number,EINT18(119)
#define INT_CFG 1 //S3C_GPIO_SFN(3)//S3C_GPIO_SFN(2) //IO configer as EINT
#else
#define TS_INT 0
#endif
// IC 类型
#define TPD_CHIP_VERSION_C_FIRMWARE_BASE 0x5A
#define TPD_CHIP_VERSION_D_FIRMWARE_BASE 0x7A
enum
{
TPD_GT818_VERSION_B,
TPD_GT818_VERSION_C,
TPD_GT818_VERSION_D
};
#define FLAG_UP 0
#define FLAG_DOWN 1
//set GT801 PLUS trigger mode,只能设置0或1
#define INT_TRIGGER 1 // 1=rising 0=falling
#define POLL_TIME 10 //actual query spacing interval:POLL_TIME+6
#define GOODIX_MULTI_TOUCH
#ifdef GOODIX_MULTI_TOUCH
#define MAX_FINGER_NUM 5
#else
#define MAX_FINGER_NUM 1
#endif
//#define swap(x, y) do { typeof(x) z = x; x = y; y = z; } while (0)
#define READ_TOUCH_ADDR_H 0x07
#define READ_TOUCH_ADDR_L 0x12
#define READ_KEY_ADDR_H 0x07
#define READ_KEY_ADDR_L 0x21
#define READ_COOR_ADDR_H 0x07
#define READ_COOR_ADDR_L 0x22
#define READ_ID_ADDR_H 0x00
#define READ_ID_ADDR_L 0xff
//****************************升级模块参数******************************************
//******************************************************************************
struct goodix_ts_data {
uint16_t addr;
uint8_t bad_data;
struct i2c_client *client;
struct input_dev *input_dev;
int use_reset; //use RESET flag
int use_irq; //use EINT flag
int read_mode; //read moudle mode,20110221 by andrew
struct hrtimer timer;
struct work_struct work;
char phys[32];
int retry;
unsigned int version;
struct early_suspend early_suspend;
int (*power)(struct goodix_ts_data * ts, int on);
};
//*****************************End of Part I *********************************
//*************************Touchkey Surpport Part*****************************
#define HAVE_TOUCH_KEY
#ifdef HAVE_TOUCH_KEY
const uint16_t touch_key_array[]={
/*KEY_MENU, //MENU
KEY_BACK, //HOME
KEY_SEND //CALL*/
//KEY_HOME, //MENU
//KEY_MENU,
//KEY_BACK, //HOME
//KEY_SEARCH //CALL
KEY_HOME, //MENU
//KEY_SEARCH, //CALL
KEY_MENU,
KEY_BACK, //HOME
//KEY_MENU,
// KEY_HOME //MENU
KEY_SEARCH //CALL
};
#define MAX_KEY_NUM (sizeof(touch_key_array)/sizeof(touch_key_array[0]))
#endif
//*****************************End of Part II*********************************
//*************************Firmware Update part*******************************
#define AUTO_UPDATE_GT818 //如果定义了则上电会自动判断是否需要升级
#define CONFIG_TOUCHSCREEN_GOODIX_IAP
#ifdef CONFIG_TOUCHSCREEN_GOODIX_IAP
static int goodix_update_write(struct file *filp, const char __user *buff, unsigned long len, void *data);
static int goodix_update_read( char *page, char **start, off_t off, int count, int *eof, void *data );
#define PACK_SIZE 64 //update file package size
#define MAX_TIMEOUT 30000 //update time out conut
#define MAX_I2C_RETRIES 10 //i2c retry times
//I2C buf address
//#define ADDR_CMD 80
//#define ADDR_STA 81
//#define ADDR_DAT 82
//write cmd
#define APK_UPDATE_TP 1
#define APK_READ_FUN 10
#define APK_WRITE_CFG 11
//fun cmd
#define CMD_DISABLE_TP 0
#define CMD_ENABLE_TP 1
#define CMD_READ_VER 2
#define CMD_READ_RAW 3
#define CMD_READ_DIF 4
#define CMD_READ_CFG 5
#define CMD_SYS_REBOOT 101
//read mode
#define MODE_RD_VER 1
#define MODE_RD_RAW 2
#define MODE_RD_DIF 3
#define MODE_RD_CFG 4
//error no
#define ERROR_NO_FILE 2//ENOENT
#define ERROR_FILE_READ 23//ENFILE
#define ERROR_FILE_TYPE 21//EISDIR
#define ERROR_GPIO_REQUEST 4//EINTR
#define ERROR_I2C_TRANSFER 5//EIO
#define ERROR_NO_RESPONSE 16//EBUSY
#define ERROR_TIMEOUT 110//ETIMEDOUT
struct tpd_firmware_info_t
{
int magic_number_1;
int magic_number_2;
unsigned short version;
unsigned short length;
unsigned short checksum;
unsigned char data;
};
#define NVRAM_LEN 0x0FF0 // nvram total space
#define NVRAM_BOOT_SECTOR_LEN 0x0100 // boot sector
#define NVRAM_UPDATE_START_ADDR 0x4100
#define BIT_NVRAM_STROE 0
#define BIT_NVRAM_RECALL 1
#define BIT_NVRAM_LOCK 2
#define REG_NVRCS_H 0X12
#define REG_NVRCS_L 0X01
#define PACK_SIZE 64 //update file package size
#define GT818_SET_INT_PIN( level ) gpio_direction_output(gt818_gpio_tp_irq, level) //null macro now
#endif
//*****************************End of Part III********************************
struct goodix_i2c_rmi_platform_data {
uint32_t version; /* Use this entry for panels with */
//reservation
};
#endif /* _LINUX_GOODIX_TOUCH_H */