1 /* drivers/input/touchscreen/gt811.h
\r
3 * Copyright (C) 2010 - 2011 Goodix, Inc.
\r
5 * This program is free software; you can redistribute it and/or modify
\r
6 * it under the terms of the GNU General Public License as published by
\r
7 * the Free Software Foundation; either version 2 of the License, or
\r
8 * (at your option) any later version.
\r
10 * This program is distributed in the hope that it will be useful, but WITHOUT
\r
11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
\r
12 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
\r
15 *Any problem,please contact andrew@goodix.com,+86 755-33338828
\r
19 #ifndef _LINUX_GT811_H
\r
20 #define _LINUX_GT811_H
\r
22 #include <linux/earlysuspend.h>
\r
23 #include <linux/hrtimer.h>
\r
24 #include <linux/i2c.h>
\r
25 #include <linux/input.h>
\r
27 //*************************TouchScreen Work Part*****************************
\r
28 #define GOODIX_I2C_NAME "gt811_ts"
\r
30 #define GT801_NUVOTON
\r
31 #define GUITAR_UPDATE_STATE 0x02
\r
33 //define resolution of the touchscreen
\r
34 #define TOUCH_MAX_HEIGHT 800
\r
35 #define TOUCH_MAX_WIDTH 480
\r
36 //#define STOP_IRQ_TYPE // if define then no stop irq in irq_handle kuuga add 1202S
\r
37 #define REFRESH 0 //0~0x64 Scan rate = 10000/(100+REFRESH)//define resolution of the LCD
\r
40 #define SHUTDOWN_PORT RK2928_PIN3_PC3
\r
47 #define TS_INT gpio_to_irq(INT_PORT) //Interrupt Number,EINT18(119)
\r
48 // #define INT_CFG S3C_GPIO_SFN(3) //IO configer as EINT
\r
54 /////////////////////////////// UPDATE STEP 5 START /////////////////////////////////////////////////////////////////
\r
55 #define TPD_CHIP_VERSION_C_FIRMWARE_BASE 0x5A
\r
56 #define TPD_CHIP_VERSION_D1_FIRMWARE_BASE 0x7A
\r
57 #define TPD_CHIP_VERSION_E_FIRMWARE_BASE 0x9A
\r
58 #define TPD_CHIP_VERSION_D2_FIRMWARE_BASE 0xBA
\r
61 /////////////////////////////// UPDATE STEP 5 END /////////////////////////////////////////////////////////////////
\r
65 //set GT801 PLUS trigger mode,Ö»ÄÜÉèÖÃ0»ò1
\r
66 //#define INT_TRIGGER 1 // 1=rising 0=falling
\r
67 #define POLL_TIME 10 //actual query spacing interval:POLL_TIME+6
\r
69 #define GOODIX_MULTI_TOUCH
\r
70 #ifdef GOODIX_MULTI_TOUCH
\r
71 #define MAX_FINGER_NUM 5
\r
73 #define MAX_FINGER_NUM 1
\r
76 #if defined(INT_PORT)
\r
77 #if MAX_FINGER_NUM <= 3
\r
78 #define READ_BYTES_NUM 2+2+MAX_FINGER_NUM*5
\r
79 #elif MAX_FINGER_NUM == 4
\r
80 #define READ_BYTES_NUM 2+28
\r
81 #elif MAX_FINGER_NUM == 5
\r
82 #define READ_BYTES_NUM 2+34
\r
85 #define READ_BYTES_NUM 2+34
\r
88 #define swap(x, y) do { typeof(x) z = x; x = y; y = z; } while (0)
\r
90 #define READ_TOUCH_ADDR_H 0x07
\r
91 #define READ_TOUCH_ADDR_L 0x21 //GT811 0x721
\r
92 #define READ_KEY_ADDR_H 0x07
\r
93 #define READ_KEY_ADDR_L 0x21
\r
94 #define READ_COOR_ADDR_H 0x07
\r
95 #define READ_COOR_ADDR_L 0x22
\r
96 #define READ_ID_ADDR_H 0x00
\r
97 #define READ_ID_ADDR_L 0xff
\r
98 //****************************Éý¼¶Ä£¿é²ÎÊý******************************************
\r
100 //******************************************************************************
\r
101 struct gt811_ts_data {
\r
104 struct i2c_client *client;
\r
105 struct input_dev *input_dev;
\r
106 int use_reset; //use RESET flag
\r
107 int use_irq; //use EINT flag
\r
108 int read_mode; //read moudle mode,20110221 by andrew
\r
109 struct hrtimer timer;
\r
110 struct work_struct work;
\r
114 spinlock_t irq_lock; //add by kuuga
\r
115 int irq_is_disable; /* 0: irq enable */ //add by kuuga
\r
116 uint16_t abs_x_max;
\r
117 uint16_t abs_y_max;
\r
118 uint8_t max_touch_num;
\r
119 uint8_t int_trigger_type;
\r
120 uint8_t btn_state; // key states
\r
121 /////////////////////////////// UPDATE STEP 6 START /////////////////////////////////////////////////////////////////
\r
122 unsigned int version;
\r
123 /////////////////////////////// UPDATE STEP 6 END /////////////////////////////////////////////////////////////////
\r
125 struct early_suspend early_suspend;
\r
126 int (*power)(struct gt811_ts_data * ts, int on);
\r
129 //*****************************End of Part I *********************************
\r
131 //*************************Touchkey Surpport Part*****************************
\r
132 /*#define HAVE_TOUCH_KEY
\r
133 //#define READ_KEY_VALUE
\r
134 //#define READ_KEY_COOR
\r
136 #ifdef HAVE_TOUCH_KEY
\r
137 const uint16_t toucher_key_array[]={
\r
143 #define MAX_KEY_NUM (sizeof(toucher_key_array)/sizeof(toucher_key_array[0]))
\r
146 //#define COOR_TO_KEY
\r
158 s32 key_center[MAX_KEY_NUM][2] = {
\r
160 {48,840},{124,840},{208,840},{282,840}
\r
166 //*****************************End of Part II*********************************
\r
168 /////////////////////////////// UPDATE STEP 7 START /////////////////////////////////////////////////////////////////
\r
169 //*************************Firmware Update part*******************************
\r
170 //#define AUTO_UPDATE_GT811
\r
172 #define CONFIG_TOUCHSCREEN_GOODIX_IAP
\r
173 #ifdef CONFIG_TOUCHSCREEN_GOODIX_IAP
\r
174 static int goodix_update_write(struct file *filp, const char __user *buff, unsigned long len, void *data);
\r
175 static int goodix_update_read( char *page, char **start, off_t off, int count, int *eof, void *data );
\r
177 #define PACK_SIZE 64 //update file package size
\r
178 //#define MAX_TIMEOUT 30000 //update time out conut
\r
179 //#define MAX_I2C_RETRIES 10 //i2c retry times
\r
182 #define APK_UPDATE_TP 1
\r
183 #define APK_READ_FUN 10
\r
184 #define APK_WRITE_CFG 11
\r
187 //#define CMD_DISABLE_TP 0
\r
188 //#define CMD_ENABLE_TP 1
\r
189 #define CMD_READ_VER 2
\r
190 #define CMD_READ_RAW 3
\r
191 #define CMD_READ_DIF 4
\r
192 #define CMD_READ_CFG 5
\r
193 #define CMD_READ_CHIP_TYPE 6
\r
194 //#define CMD_SYS_REBOOT 101
\r
197 #define MODE_RD_VER 1
\r
198 #define MODE_RD_RAW 2
\r
199 #define MODE_RD_DIF 3
\r
200 #define MODE_RD_CFG 4
\r
201 #define MODE_RD_CHIP_TYPE 5
\r
204 struct tpd_firmware_info_t
\r
206 int magic_number_1;
\r
207 int magic_number_2;
\r
208 unsigned short version;
\r
209 unsigned short length;
\r
210 unsigned short checksum;
\r
211 unsigned char data;
\r
215 struct tpd_firmware_info_t
\r
217 unsigned char chip_type;
\r
218 unsigned short version;
\r
219 unsigned char rom_version;
\r
220 unsigned char reserved[3];
\r
221 unsigned short start_addr;
\r
222 unsigned short length;
\r
223 unsigned char checksum[3];
\r
224 unsigned char mandatory_flag[6];
\r
225 unsigned char data;
\r
230 #define NVRAM_LEN 0x0FF0 // nvram total space
\r
231 #define NVRAM_BOOT_SECTOR_LEN 0x0100 // boot sector
\r
232 #define NVRAM_UPDATE_START_ADDR 0x4100
\r
234 #define BIT_NVRAM_STROE 0
\r
235 #define BIT_NVRAM_RECALL 1
\r
236 #define BIT_NVRAM_LOCK 2
\r
237 #define REG_NVRCS_H 0X12
\r
238 #define REG_NVRCS_L 0X01
\r
239 #define GT811_SET_INT_PIN( gpio, level ) gpio_direction_output(gpio, level) //null macro now
\r
241 //*****************************End of Part III********************************
\r
242 /////////////////////////////// UPDATE STEP 7 END /////////////////////////////////////////////////////////////////
\r
244 struct gt811_platform_data {
\r
245 uint32_t version; /* Use this entry for panels with */
\r
246 u16 model; /* 801. */
\r
247 bool swap_xy; /* swap x and y axes */
\r
250 bool x_reverse, y_reverse;
\r
251 int (*get_pendown_state)(void);
\r
252 int (*init_platform_hw)(void);
\r
253 int (*platform_sleep)(void);
\r
254 int (*platform_wakeup)(void);
\r
255 void (*exit_platform_hw)(void);
\r
257 bool gpio_reset_active_low;
\r
263 #define RAW_DATA_READY 1
\r
264 #define RAW_DATA_NON_ACTIVE 0xffffffff
\r
265 #define RAW_DATA_ACTIVE 0
\r
281 #endif /* _LINUX_GOODIX_TOUCH_H */
\r