dbe62519ccf96c88b503563556d91af2ae72c45b
[firefly-linux-kernel-4.4.55.git] / drivers / input / touchscreen / gt818_ts.h
1 /*
2  * drivers/input/touchscreen/gt818_ts.h
3  *
4  * Copyright (C) 2011 Goodix, Inc.
5  * 
6  * Author: Felix
7  * Date: 2011.04.28
8  */
9
10 #ifndef         _LINUX_GOODIX_TOUCH_H
11 #define         _LINUX_GOODIX_TOUCH_H
12
13 #include <linux/earlysuspend.h>
14 #include <linux/hrtimer.h>
15 #include <linux/i2c.h>
16 #include <linux/input.h>
17
18
19 //*************************TouchScreen Work Part*****************************
20 #define GOODIX_I2C_NAME "gt818_ts"
21 #define GT801_PLUS
22 #define GT801_NUVOTON
23 #define GUITAR_UPDATE_STATE 0x02
24 //#define NO_DEFAULT_ID
25
26
27 //define resolution of the touchscreen
28 #define TOUCH_MAX_HEIGHT        7168
29 #define TOUCH_MAX_WIDTH         5120
30
31 //define resolution of the LCD
32 #define SCREEN_MAX_HEIGHT       800                             
33 #define SCREEN_MAX_WIDTH        480
34
35
36
37 #define SHUTDOWN_PORT   pdata->gpio_reset                       //SHUTDOWN¹Ü½ÅºÅ
38 #define INT_PORT                pdata->gpio_pendown
39
40 #ifdef INT_PORT
41         #define TS_INT          gpio_to_irq(INT_PORT)                   //Interrupt Number
42 #else
43         #define TS_INT  0
44 #endif  
45
46 #define HAVE_TOUCH_KEY
47
48
49 #define FLAG_UP         0
50 #define FLAG_DOWN       1
51 //set GT801 PLUS trigger mode,Ö»ÄÜÉèÖÃ0»ò1 
52 #define INT_TRIGGER             0
53 #define POLL_TIME               10      //actual query spacing interval:POLL_TIME+6
54
55 #define GOODIX_MULTI_TOUCH
56 #ifdef GOODIX_MULTI_TOUCH
57         #define MAX_FINGER_NUM  2
58 #else
59         #define MAX_FINGER_NUM  1       
60 #endif
61
62 #define swap(x, y) do { typeof(x) z = x; x = y; y = z; } while (0)
63
64 #define READ_TOUCH_ADDR_H       0x07
65 #define READ_TOUCH_ADDR_L       0x12
66 #define READ_KEY_ADDR_H         0x07
67 #define READ_KEY_ADDR_L         0x21
68 #define READ_COOR_ADDR_H        0x07
69 #define READ_COOR_ADDR_L        0x22
70 #define READ_ID_ADDR_H          0x00
71 #define READ_ID_ADDR_L          0xff
72
73
74 #define IOMUX_NAME_SIZE 48
75 struct gt818_platform_data {
76
77         u16             model;                  /* 818. */
78         bool    swap_xy;                /* swap x and y axes */
79         u16             x_min, x_max;
80         u16             y_min, y_max;
81     int         gpio_reset;
82     int     gpio_reset_active_low;
83         int             gpio_pendown;           /* the GPIO used to decide the pendown */
84
85         char    pendown_iomux_name[IOMUX_NAME_SIZE];
86         char    resetpin_iomux_name[IOMUX_NAME_SIZE];
87         int             pendown_iomux_mode;
88         int             resetpin_iomux_mode;
89
90         int         (*get_pendown_state)(void);
91 };
92
93
94 struct gt818_ts_data {
95
96
97         u16 addr;
98         u8 bad_data;
99         struct i2c_client *client;
100         struct input_dev *input_dev;
101         int use_reset;          //use RESET flag
102         int use_irq;            //use EINT flag
103         int read_mode;          //read moudle mode,20110221 by andrew
104         struct hrtimer timer;
105         struct work_struct  work;
106         char phys[32];
107         char name[32];
108         int retry;
109         struct early_suspend early_suspend;
110         int (*power)(struct gt818_ts_data * ts, int on);
111 };
112
113
114
115 #endif /* _LINUX_GOODIX_TOUCH_H */