3 #include <linux/miscdevice.h>
\r
7 #define TS_UNKNOW_DATA -1
\r
8 #define TS_MAX_POINT 20
\r
9 #define TS_MAX_VER_LEN 64
\r
11 struct ts_private_data;
\r
14 TS_BUS_TYPE_INVALID = 0,
\r
46 struct point_data point[TS_MAX_POINT];
\r
50 /* Platform data for the auto touchscreen */
\r
51 struct ts_platform_data {
\r
52 unsigned char slave_addr;
\r
57 int (*init_platform_hw)(void);
\r
60 struct ts_max_pixel{
\r
70 struct ts_max_pixel pixel;
\r
76 int version_len; //<64
\r
79 int trig; //intterupt trigger
\r
85 int irq_enable; //if irq_enable=1 then use irq else use polling
\r
86 int poll_delay_ms; //polling
\r
87 int gpio_level_no_int;
\r
88 int (*active)(struct ts_private_data *ts, int enable);
\r
89 int (*init)(struct ts_private_data *ts);
\r
90 int (*check_irq)(struct ts_private_data *ts);
\r
91 int (*report)(struct ts_private_data *ts);
\r
92 int (*firmware)(struct ts_private_data *ts);
\r
93 int (*suspend)(struct ts_private_data *ts);
\r
94 int (*resume)(struct ts_private_data *ts);
\r
95 struct miscdevice *misc_dev;
\r
99 struct ts_private_data {
\r
100 struct mutex io_lock;
\r
101 struct device *dev;
\r
102 int (*read_dev)(struct ts_private_data *ts, unsigned short reg,
\r
103 int bytes, void *dest, int reg_size);
\r
104 int (*write_dev)(struct ts_private_data *ts, unsigned short reg,
\r
105 int bytes, void *src, int reg_size);
\r
106 void *control_data;
\r
108 //struct i2c_client *client;
\r
109 struct input_dev *input_dev;
\r
110 struct ts_event event;
\r
111 struct work_struct work;
\r
112 struct delayed_work delaywork; /*report second event*/
\r
113 struct delayed_work poll_work; /*poll at last*/
\r
114 char ts_data[40]; //max support40 bytes data
\r
115 struct mutex data_mutex;
\r
116 struct mutex ts_lock;
\r
118 struct i2c_device_id *i2c_id;
\r
119 struct ts_platform_data *pdata;
\r
120 struct ts_operate *ops;
\r
121 struct file_operations fops;
\r
122 struct miscdevice miscdev;
\r
123 #ifdef CONFIG_HAS_EARLYSUSPEND
\r
124 struct early_suspend early_suspend;
\r
128 extern int ts_device_init(struct ts_private_data *ts, int type, int irq);
\r
129 extern void ts_device_exit(struct ts_private_data *ts);
\r
130 extern int ts_register_slave(struct ts_private_data *ts,
\r
131 struct ts_platform_data *slave_pdata,
\r
132 struct ts_operate *(*get_ts_ops)(void));
\r
133 extern int ts_unregister_slave(struct ts_private_data *ts,
\r
134 struct ts_platform_data *slave_pdata,
\r
135 struct ts_operate *(*get_ts_ops)(void));
\r
136 extern int ts_reg_read(struct ts_private_data *ts, unsigned short reg);
\r
137 extern int ts_reg_write(struct ts_private_data *ts, unsigned short reg,
\r
138 unsigned short val);
\r
139 extern int ts_bulk_read(struct ts_private_data *ts, unsigned short reg,
\r
140 int count, unsigned char *buf);
\r
141 extern int ts_bulk_read_normal(struct ts_private_data *ts, int count, unsigned char *buf, int rate);
\r
142 extern int ts_bulk_write(struct ts_private_data *ts, unsigned short reg,
\r
143 int count, unsigned char *buf);
\r
144 extern int ts_bulk_write_normal(struct ts_private_data *ts, int count, unsigned char *buf, int rate);
\r
145 extern int ts_set_bits(struct ts_private_data *ts, unsigned short reg,
\r
146 unsigned short mask, unsigned short val);
\r
147 extern int ts_device_suspend(struct ts_private_data *ts);
\r
149 extern int ts_device_resume(struct ts_private_data *ts);
\r