input: touchscreen: add touch screen of gsl3673 for rk3399-evb
[firefly-linux-kernel-4.4.55.git] / drivers / input / touchscreen / gt811_ts.h
1 /* drivers/input/touchscreen/gt811.h\r
2  *\r
3  * Copyright (C) 2010 - 2011 Goodix, Inc.\r
4  * \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
9  *\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
13  * more details.\r
14  *\r
15  *Any problem,please contact andrew@goodix.com,+86 755-33338828\r
16  *\r
17  */\r
18 \r
19 #ifndef         _LINUX_GT811_H\r
20 #define         _LINUX_GT811_H\r
21 \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
26 \r
27 //*************************TouchScreen Work Part*****************************\r
28 #define GOODIX_I2C_NAME "gt811_ts"\r
29 #define GT801_PLUS\r
30 #define GT801_NUVOTON\r
31 #define GUITAR_UPDATE_STATE 0x02\r
32 \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
38 \r
39 #if 0\r
40 #define SHUTDOWN_PORT        RK2928_PIN3_PC3 \r
41 #endif\r
42 \r
43 #define INT_PORT                   \r
44 \r
45 #if 0\r
46 #ifdef INT_PORT\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
49 #else\r
50         #define TS_INT  0\r
51 #endif  \r
52 #endif\r
53 \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
59 \r
60 \r
61 /////////////////////////////// UPDATE STEP 5 END /////////////////////////////////////////////////////////////////\r
62 \r
63 #define FLAG_UP         0\r
64 #define FLAG_DOWN               1\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
68 \r
69 #define GOODIX_MULTI_TOUCH\r
70 #ifdef GOODIX_MULTI_TOUCH\r
71         #define MAX_FINGER_NUM  5       \r
72 #else\r
73         #define MAX_FINGER_NUM  1       \r
74 #endif\r
75 \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
83         #endif\r
84 #else   \r
85         #define READ_BYTES_NUM 2+34\r
86 #endif\r
87 \r
88 #define swap(x, y) do { typeof(x) z = x; x = y; y = z; } while (0)\r
89 \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
99 \r
100 //******************************************************************************\r
101 struct gt811_ts_data {\r
102         uint16_t addr;\r
103         uint8_t bad_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
111         char phys[32];\r
112         int retry;\r
113         int irq;\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
124 \r
125         struct early_suspend early_suspend;\r
126         int (*power)(struct gt811_ts_data * ts, int on);\r
127 };\r
128 \r
129 //*****************************End of Part I *********************************\r
130 \r
131 //*************************Touchkey Surpport Part*****************************\r
132 /*#define HAVE_TOUCH_KEY\r
133 //#define READ_KEY_VALUE\r
134 //#define READ_KEY_COOR\r
135 \r
136 #ifdef HAVE_TOUCH_KEY\r
137         const uint16_t toucher_key_array[]={\r
138                                                                           KEY_MENU,                             //MENU\r
139                                                                           KEY_HOME,\r
140                                                                           KEY_BACK,                             \r
141                                                                           KEY_SEARCH            \r
142                                                                          }; \r
143         #define MAX_KEY_NUM      (sizeof(toucher_key_array)/sizeof(toucher_key_array[0]))\r
144 #endif\r
145 */\r
146 //#define COOR_TO_KEY\r
147     #ifdef COOR_TO_KEY\r
148 \r
149     #define KEY_X       40\r
150     #define KEY_Y       20\r
151     #if 0\r
152     #define AREA_X      0\r
153     #else\r
154     #define AREA_Y      800\r
155     #endif\r
156 \r
157     enum {x, y};\r
158     s32 key_center[MAX_KEY_NUM][2] = {\r
159                 \r
160         {48,840},{124,840},{208,840},{282,840}\r
161         \r
162                            };\r
163 \r
164     #endif \r
165 \r
166 //*****************************End of Part II*********************************\r
167 \r
168 /////////////////////////////// UPDATE STEP 7 START /////////////////////////////////////////////////////////////////\r
169 //*************************Firmware Update part*******************************\r
170 //#define AUTO_UPDATE_GT811\r
171 \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
176 \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
180 \r
181 //write cmd\r
182 #define APK_UPDATE_TP               1\r
183 #define APK_READ_FUN                 10\r
184 #define APK_WRITE_CFG               11\r
185 \r
186 //fun cmd\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
195 \r
196 //read mode\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
202 \r
203 #if 0\r
204 struct tpd_firmware_info_t\r
205 {\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
212 };\r
213 #else\r
214 #pragma pack(1)\r
215 struct tpd_firmware_info_t\r
216 {\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
226 };\r
227 #pragma pack()\r
228 #endif\r
229 \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
233 \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
240 #endif\r
241 //*****************************End of Part III********************************\r
242 /////////////////////////////// UPDATE STEP 7 END /////////////////////////////////////////////////////////////////\r
243 \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
248     u16     x_min, x_max;\r
249     u16     y_min, y_max;\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
256     int     gpio_reset;\r
257     bool    gpio_reset_active_low;\r
258     \r
259 \r
260     //reservation\r
261 };\r
262 \r
263 #define RAW_DATA_READY          1\r
264 #define RAW_DATA_NON_ACTIVE     0xffffffff\r
265 #define RAW_DATA_ACTIVE         0\r
266 \r
267 \r
268 enum CHIP_TYPE\r
269 {\r
270     GT800 = 1,\r
271     GT800PLUS,\r
272     GT800PLUS3,\r
273     GT816,\r
274     GT811,\r
275     GT8105,\r
276     GT8110,\r
277     GT818PLUS\r
278 };\r
279 \r
280 \r
281 #endif /* _LINUX_GOODIX_TOUCH_H */\r