4 //#include <linux/earlysuspend.h>
5 #include <linux/device.h>
6 #include <linux/kernel.h>
7 #include <linux/module.h>
8 #include <linux/init.h>
9 #include <linux/input.h>
10 #include <linux/i2c.h>
11 #include <linux/delay.h>
12 #include <linux/slab.h>
13 #include <linux/time.h>
14 #include <linux/err.h>
16 #include <linux/mutex.h>
17 #include <linux/clk.h>
18 #include <linux/interrupt.h>
19 #include <linux/input/mt.h>
20 #include <linux/ct36x.h>
22 #include "../tp_suspend.h"
26 int ct36x_dbg_level = 0;
27 module_param_named(dbg_level, ct36x_dbg_level, int, 0644);
29 #define ct36x_dbg(ts, format, arg...) \
31 if (ct36x_dbg_level) { \
32 dev_printk(KERN_INFO , ts->dev , format , ## arg) ;\
42 #define CT36X_I2C_RATE (200 * 1000)
46 int (*init)(struct ct36x_data *);
47 void (*deinit)(struct ct36x_data *);
48 int (*suspend)(struct ct36x_data *);
49 int (*resume)(struct ct36x_data *);
50 void (*report)(struct ct36x_data *);
60 struct ct36x_gpio rst_io;
61 struct ct36x_gpio irq_io;
64 struct i2c_client *client;
66 struct input_dev *input;
69 struct ct36x_ops *ops;
73 static int i2c_master_normal_send(const struct i2c_client *client, const char *buf, int count, int scl_rate)
76 struct i2c_adapter *adap=client->adapter;
79 msg.addr = client->addr;
80 msg.flags = client->flags;
82 msg.buf = (char *)buf;
83 msg.scl_rate = scl_rate;
84 //msg.udelay = client->udelay;
86 ret = i2c_transfer(adap, &msg, 1);
87 return (ret == 1) ? count : ret;
90 static int i2c_master_normal_recv(const struct i2c_client *client, char *buf, int count, int scl_rate)
92 struct i2c_adapter *adap=client->adapter;
96 msg.addr = client->addr;
97 msg.flags = client->flags | I2C_M_RD;
99 msg.buf = (char *)buf;
100 msg.scl_rate = scl_rate;
101 //msg.udelay = client->udelay;
103 ret = i2c_transfer(adap, &msg, 1);
105 return (ret == 1) ? count : ret;
107 EXPORT_SYMBOL(i2c_master_normal_recv);
109 static inline int ct36x_read(struct ct36x_data *ts, char *buf, int len)
111 return i2c_master_normal_recv(ts->client, buf, len, CT36X_I2C_RATE);
114 static inline int ct36x_write(struct ct36x_data *ts, char *buf, int len)
116 return i2c_master_normal_send(ts->client, buf, len, CT36X_I2C_RATE);
119 static inline int ct36x_update_read(struct ct36x_data *ts, unsigned short addr, char *buf, int len)
122 unsigned short bak = ts->client->addr;
124 ts->client->addr = addr;
125 ret = ct36x_read(ts, buf, len);
126 ts->client->addr = bak;
131 static inline int ct36x_update_write(struct ct36x_data *ts, unsigned short addr, char *buf, int len)
134 unsigned short bak = ts->client->addr;
136 ts->client->addr = addr;
137 ret = ct36x_write(ts, buf, len);
138 ts->client->addr = bak;
142 int ct36x_chip_set_idle(struct ct36x_data *ts);
143 int ct36x_chip_go_sleep(struct ct36x_data *ts);
144 int ct36x_chip_get_binchksum(void);
145 int ct36x_chip_get_fwchksum(struct ct36x_data *ts);
146 int ct36x_chip_go_bootloader(struct ct36x_data *ts);
147 int ct36x_chip_get_fwchksum(struct ct36x_data *ts);
148 int ct36x_chip_get_ver(struct ct36x_data *ts);