3 #include <linux/delay.h>
10 static struct i2c_device_id ct36x_ts_id[] = {
15 static struct i2c_board_info i2c_board_info[] = {
17 I2C_BOARD_INFO(DRIVER_NAME, 0x01),
18 .platform_data = NULL,
22 struct i2c_driver ct36x_ts_driver = {
27 .id_table = ct36x_ts_id,
28 .probe = ct36x_ts_probe,
29 .shutdown = ct36x_ts_shutdown,
30 .suspend = ct36x_ts_suspend,
31 .resume = ct36x_ts_resume,
32 .remove = __devexit_p(ct36x_ts_remove),
35 void ct36x_ts_reg_read(struct i2c_client *client, unsigned short addr, char *buf, int len)
40 msgs.flags = 0x01; // 0x00: write 0x01:read
43 msgs.scl_rate = CT36X_TS_I2C_SPEED;
45 i2c_transfer(client->adapter, &msgs, 1);
48 void ct36x_ts_reg_write(struct i2c_client *client, unsigned short addr, char *buf, int len)
53 msgs.flags = 0x00; // 0x00: write 0x01:read
56 msgs.scl_rate = CT36X_TS_I2C_SPEED;
58 i2c_transfer(client->adapter, &msgs, 1);
61 void ct36x_platform_get_cfg(struct ct36x_ts_info *ct36x_ts)
64 ct36x_ts->i2c_bus = CT36X_TS_I2C_BUS;
65 ct36x_ts->i2c_address = CT36X_TS_I2C_ADDRESS;
68 ct36x_ts->rst = CT36X_TS_RST_PIN;
69 ct36x_ts->ss = CT36X_TS_IRQ_PIN;
72 ct36x_ts->irq = gpio_to_irq(ct36x_ts->ss);
77 int ct36x_platform_set_dev(struct ct36x_ts_info *ct36x_ts)
79 struct i2c_adapter *adapter;
80 struct i2c_client *client;
82 adapter = i2c_get_adapter(ct36x_ts->i2c_bus);
84 printk("Unable to get i2c adapter on bus %d.\n", ct36x_ts->i2c_bus);
88 client = i2c_new_device(adapter, i2c_board_info);
89 i2c_put_adapter(adapter);
91 printk("Unable to create i2c device on bus %d.\n", ct36x_ts->i2c_bus);
95 ct36x_ts->client = client;
96 i2c_set_clientdata(client, ct36x_ts);
101 int ct36x_platform_get_resource(struct ct36x_ts_info *ct36x_ts)
106 err = gpio_request(ct36x_ts->rst, "ct36x_ts_rst");
110 gpio_direction_output(ct36x_ts->rst, 1);
111 gpio_set_value(ct36x_ts->rst, 1);
114 err = gpio_request(ct36x_ts->ss, "ct36x_ts_int");
118 gpio_direction_input(ct36x_ts->ss);
123 void ct36x_platform_put_resource(struct ct36x_ts_info *ct36x_ts)
125 gpio_free(ct36x_ts->rst);
126 gpio_free(ct36x_ts->ss);
129 void ct36x_platform_hw_reset(struct ct36x_ts_info *ct36x_ts)
132 gpio_set_value(ct36x_ts->rst, 0);
134 gpio_set_value(ct36x_ts->rst, 1);