#define TS_MAX_POINT 20\r
#define TS_MAX_VER_LEN 64\r
\r
+struct ts_private_data;\r
+\r
+enum ts_bus_type{\r
+ TS_BUS_TYPE_INVALID = 0,\r
+ \r
+ TS_BUS_TYPE_I2C,\r
+ TS_BUS_TYPE_SPI,\r
+ TS_BUS_TYPE_SERIAL,\r
+ \r
+ TS_BUS_TYPE_NUM_ID,\r
+};\r
\r
enum ts_id {\r
TS_ID_INVALID = 0,\r
TS_ID_CT360,\r
TS_ID_GT8110,\r
TS_ID_GT828,\r
+ TS_ID_GT8005,\r
\r
TS_NUM_ID,\r
};\r
struct ts_operate {\r
char *name;\r
char slave_addr;\r
- int id_i2c;\r
+ int ts_id;\r
+ int bus_type;\r
struct ts_max_pixel pixel;\r
int reg_size;\r
int id_reg;\r
int irq_enable; //if irq_enable=1 then use irq else use polling \r
int poll_delay_ms; //polling\r
int gpio_level_no_int;\r
- int (*active)(struct i2c_client *client, int enable);\r
- int (*init)(struct i2c_client *client); \r
- int (*check_irq)(struct i2c_client *client);\r
- int (*report)(struct i2c_client *client);\r
- int (*firmware)(struct i2c_client *client);\r
- int (*suspend)(struct i2c_client *client);\r
- int (*resume)(struct i2c_client *client); \r
+ int (*active)(struct ts_private_data *ts, int enable);\r
+ int (*init)(struct ts_private_data *ts); \r
+ int (*check_irq)(struct ts_private_data *ts);\r
+ int (*report)(struct ts_private_data *ts);\r
+ int (*firmware)(struct ts_private_data *ts);\r
+ int (*suspend)(struct ts_private_data *ts);\r
+ int (*resume)(struct ts_private_data *ts); \r
struct miscdevice *misc_dev;\r
-\r
};\r
\r
\r
struct ts_private_data {\r
- struct i2c_client *client; \r
+ struct mutex io_lock;\r
+ struct device *dev;\r
+ int (*read_dev)(struct ts_private_data *ts, unsigned short reg,\r
+ int bytes, void *dest, int reg_size);\r
+ int (*write_dev)(struct ts_private_data *ts, unsigned short reg,\r
+ int bytes, void *src, int reg_size);\r
+ void *control_data;\r
+ int irq;\r
+ //struct i2c_client *client; \r
struct input_dev *input_dev;\r
struct ts_event event;\r
struct work_struct work;\r
struct delayed_work poll_work; /*poll at last*/ \r
char ts_data[40]; //max support40 bytes data\r
struct mutex data_mutex;\r
- struct mutex ts_mutex;\r
- struct mutex i2c_mutex;\r
+ struct mutex ts_lock;\r
int devid;\r
struct i2c_device_id *i2c_id;\r
struct ts_platform_data *pdata;\r
#endif\r
};\r
\r
-\r
-extern int ts_register_slave(struct i2c_client *client,\r
+extern int ts_device_init(struct ts_private_data *ts, int type, int irq);\r
+extern void ts_device_exit(struct ts_private_data *ts);\r
+extern int ts_register_slave(struct ts_private_data *ts,\r
struct ts_platform_data *slave_pdata,\r
struct ts_operate *(*get_ts_ops)(void));\r
-\r
-\r
-extern int ts_unregister_slave(struct i2c_client *client,\r
+extern int ts_unregister_slave(struct ts_private_data *ts,\r
struct ts_platform_data *slave_pdata,\r
struct ts_operate *(*get_ts_ops)(void));\r
-\r
-extern int ts_rx_data(struct i2c_client *client, char *rxData, int length);\r
-extern int ts_tx_data(struct i2c_client *client, char *txData, int length);\r
-extern int ts_rx_data_word(struct i2c_client *client, char *rxData, int length);\r
-extern int ts_write_reg(struct i2c_client *client, int addr, int value);\r
-extern int ts_read_reg(struct i2c_client *client, int addr);\r
-extern int ts_tx_data_normal(struct i2c_client *client, char *buf, int num);\r
-extern int ts_rx_data_normal(struct i2c_client *client, char *buf, int num);\r
-extern int ts_write_reg_normal(struct i2c_client *client, char value);\r
-extern int ts_read_reg_normal(struct i2c_client *client);\r
+extern int ts_reg_read(struct ts_private_data *ts, unsigned short reg);\r
+extern int ts_reg_write(struct ts_private_data *ts, unsigned short reg,\r
+ unsigned short val);\r
+extern int ts_bulk_read(struct ts_private_data *ts, unsigned short reg,\r
+ int count, unsigned char *buf);\r
+extern int ts_bulk_read_normal(struct ts_private_data *ts, int count, unsigned char *buf, int rate);\r
+extern int ts_bulk_write(struct ts_private_data *ts, unsigned short reg,\r
+ int count, unsigned char *buf);\r
+extern int ts_bulk_write_normal(struct ts_private_data *ts, int count, unsigned char *buf, int rate);\r
+extern int ts_set_bits(struct ts_private_data *ts, unsigned short reg,\r
+ unsigned short mask, unsigned short val);\r
+extern int ts_device_suspend(struct ts_private_data *ts);\r
+\r
+extern int ts_device_resume(struct ts_private_data *ts);\r
\r
#endif\r