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
39 #define SHUTDOWN_PORT RK30_PIN0_PB6// RK2928_PIN0_PD3
\r
40 #define INT_PORT iomux_mode_to_gpio(SPI0_CS1)// RK30_PIN1_PB7//RK2928_PIN1_PB0
\r
44 #define TS_INT gpio_to_irq(INT_PORT) //Interrupt Number,EINT18(119)
\r
45 // #define INT_CFG S3C_GPIO_SFN(3) //IO configer as EINT
\r
50 /////////////////////////////// UPDATE STEP 5 START /////////////////////////////////////////////////////////////////
\r
51 #define TPD_CHIP_VERSION_C_FIRMWARE_BASE 0x5A
\r
52 #define TPD_CHIP_VERSION_D1_FIRMWARE_BASE 0x7A
\r
53 #define TPD_CHIP_VERSION_E_FIRMWARE_BASE 0x9A
\r
54 #define TPD_CHIP_VERSION_D2_FIRMWARE_BASE 0xBA
\r
57 /////////////////////////////// UPDATE STEP 5 END /////////////////////////////////////////////////////////////////
\r
61 //set GT801 PLUS trigger mode,Ö»ÄÜÉèÖÃ0»ò1
\r
62 //#define INT_TRIGGER 1 // 1=rising 0=falling
\r
63 #define POLL_TIME 10 //actual query spacing interval:POLL_TIME+6
\r
65 #define GOODIX_MULTI_TOUCH
\r
66 #ifdef GOODIX_MULTI_TOUCH
\r
67 #define MAX_FINGER_NUM 5
\r
69 #define MAX_FINGER_NUM 1
\r
72 #if defined(INT_PORT)
\r
73 #if MAX_FINGER_NUM <= 3
\r
74 #define READ_BYTES_NUM 2+2+MAX_FINGER_NUM*5
\r
75 #elif MAX_FINGER_NUM == 4
\r
76 #define READ_BYTES_NUM 2+28
\r
77 #elif MAX_FINGER_NUM == 5
\r
78 #define READ_BYTES_NUM 2+34
\r
81 #define READ_BYTES_NUM 2+34
\r
84 #define swap(x, y) do { typeof(x) z = x; x = y; y = z; } while (0)
\r
86 #define READ_TOUCH_ADDR_H 0x07
\r
87 #define READ_TOUCH_ADDR_L 0x21 //GT811 0x721
\r
88 #define READ_KEY_ADDR_H 0x07
\r
89 #define READ_KEY_ADDR_L 0x21
\r
90 #define READ_COOR_ADDR_H 0x07
\r
91 #define READ_COOR_ADDR_L 0x22
\r
92 #define READ_ID_ADDR_H 0x00
\r
93 #define READ_ID_ADDR_L 0xff
\r
94 //****************************Éý¼¶Ä£¿é²ÎÊý******************************************
\r
96 //******************************************************************************
\r
97 struct gt811_ts_data {
\r
100 struct i2c_client *client;
\r
101 struct input_dev *input_dev;
\r
102 int use_reset; //use RESET flag
\r
103 int use_irq; //use EINT flag
\r
104 int read_mode; //read moudle mode,20110221 by andrew
\r
105 struct hrtimer timer;
\r
106 struct work_struct work;
\r
110 spinlock_t irq_lock; //add by kuuga
\r
111 int irq_is_disable; /* 0: irq enable */ //add by kuuga
\r
112 uint16_t abs_x_max;
\r
113 uint16_t abs_y_max;
\r
114 uint8_t max_touch_num;
\r
115 uint8_t int_trigger_type;
\r
116 uint8_t btn_state; // key states
\r
117 /////////////////////////////// UPDATE STEP 6 START /////////////////////////////////////////////////////////////////
\r
118 unsigned int version;
\r
119 /////////////////////////////// UPDATE STEP 6 END /////////////////////////////////////////////////////////////////
\r
121 struct early_suspend early_suspend;
\r
122 int (*power)(struct gt811_ts_data * ts, int on);
\r
125 //*****************************End of Part I *********************************
\r
127 //*************************Touchkey Surpport Part*****************************
\r
128 /*#define HAVE_TOUCH_KEY
\r
129 //#define READ_KEY_VALUE
\r
130 //#define READ_KEY_COOR
\r
132 #ifdef HAVE_TOUCH_KEY
\r
133 const uint16_t toucher_key_array[]={
\r
139 #define MAX_KEY_NUM (sizeof(toucher_key_array)/sizeof(toucher_key_array[0]))
\r
142 //#define COOR_TO_KEY
\r
154 s32 key_center[MAX_KEY_NUM][2] = {
\r
156 {48,840},{124,840},{208,840},{282,840}
\r
162 //*****************************End of Part II*********************************
\r
164 /////////////////////////////// UPDATE STEP 7 START /////////////////////////////////////////////////////////////////
\r
165 //*************************Firmware Update part*******************************
\r
166 //#define AUTO_UPDATE_GT811
\r
168 #define CONFIG_TOUCHSCREEN_GOODIX_IAP
\r
169 #ifdef CONFIG_TOUCHSCREEN_GOODIX_IAP
\r
170 static int goodix_update_write(struct file *filp, const char __user *buff, unsigned long len, void *data);
\r
171 static int goodix_update_read( char *page, char **start, off_t off, int count, int *eof, void *data );
\r
173 #define PACK_SIZE 64 //update file package size
\r
174 //#define MAX_TIMEOUT 30000 //update time out conut
\r
175 //#define MAX_I2C_RETRIES 10 //i2c retry times
\r
178 #define APK_UPDATE_TP 1
\r
179 #define APK_READ_FUN 10
\r
180 #define APK_WRITE_CFG 11
\r
183 //#define CMD_DISABLE_TP 0
\r
184 //#define CMD_ENABLE_TP 1
\r
185 #define CMD_READ_VER 2
\r
186 #define CMD_READ_RAW 3
\r
187 #define CMD_READ_DIF 4
\r
188 #define CMD_READ_CFG 5
\r
189 #define CMD_READ_CHIP_TYPE 6
\r
190 //#define CMD_SYS_REBOOT 101
\r
193 #define MODE_RD_VER 1
\r
194 #define MODE_RD_RAW 2
\r
195 #define MODE_RD_DIF 3
\r
196 #define MODE_RD_CFG 4
\r
197 #define MODE_RD_CHIP_TYPE 5
\r
200 struct tpd_firmware_info_t
\r
202 int magic_number_1;
\r
203 int magic_number_2;
\r
204 unsigned short version;
\r
205 unsigned short length;
\r
206 unsigned short checksum;
\r
207 unsigned char data;
\r
211 struct tpd_firmware_info_t
\r
213 unsigned char chip_type;
\r
214 unsigned short version;
\r
215 unsigned char rom_version;
\r
216 unsigned char reserved[3];
\r
217 unsigned short start_addr;
\r
218 unsigned short length;
\r
219 unsigned char checksum[3];
\r
220 unsigned char mandatory_flag[6];
\r
221 unsigned char data;
\r
226 #define NVRAM_LEN 0x0FF0 // nvram total space
\r
227 #define NVRAM_BOOT_SECTOR_LEN 0x0100 // boot sector
\r
228 #define NVRAM_UPDATE_START_ADDR 0x4100
\r
230 #define BIT_NVRAM_STROE 0
\r
231 #define BIT_NVRAM_RECALL 1
\r
232 #define BIT_NVRAM_LOCK 2
\r
233 #define REG_NVRCS_H 0X12
\r
234 #define REG_NVRCS_L 0X01
\r
235 #define GT811_SET_INT_PIN( level ) gpio_direction_output(INT_PORT, level) //null macro now
\r
237 //*****************************End of Part III********************************
\r
238 /////////////////////////////// UPDATE STEP 7 END /////////////////////////////////////////////////////////////////
\r
240 struct gt811_platform_data {
\r
241 uint32_t version; /* Use this entry for panels with */
\r
242 u16 model; /* 801. */
\r
243 bool swap_xy; /* swap x and y axes */
\r
246 bool x_reverse, y_reverse;
\r
247 int (*get_pendown_state)(void);
\r
248 int (*init_platform_hw)(void);
\r
249 int (*platform_sleep)(void);
\r
250 int (*platform_wakeup)(void);
\r
251 void (*exit_platform_hw)(void);
\r
253 bool gpio_reset_active_low;
\r
259 #define RAW_DATA_READY 1
\r
260 #define RAW_DATA_NON_ACTIVE 0xffffffff
\r
261 #define RAW_DATA_ACTIVE 0
\r
277 #endif /* _LINUX_GOODIX_TOUCH_H */
\r