aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Kepplinger <martin.kepplinger@ginzinger.com>2017-04-28 12:58:12 -0400
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2017-05-01 12:28:49 -0400
commite55057e82ad413603fd45eac3b83b80acde780e1 (patch)
tree3dfa0fe8259f55aa1ee007be7c0bf1ef3bb94d08
parentaea415b1d10ea25779a100da639b3e3989080971 (diff)
Input: ar1021_i2c - enable touch mode during open
The device could as well be in command mode, in which this driver cannot handle the device. When opening the device, let's make sure the device will be in the mode we expect it to be for this driver. Signed-off-by: Martin Kepplinger <martin.kepplinger@ginzinger.com> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
-rw-r--r--drivers/input/touchscreen/ar1021_i2c.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/drivers/input/touchscreen/ar1021_i2c.c b/drivers/input/touchscreen/ar1021_i2c.c
index 1a94d8bfec54..21c74ee59341 100644
--- a/drivers/input/touchscreen/ar1021_i2c.c
+++ b/drivers/input/touchscreen/ar1021_i2c.c
@@ -18,6 +18,10 @@
18#define AR1021_MAX_X 4095 18#define AR1021_MAX_X 4095
19#define AR1021_MAX_Y 4095 19#define AR1021_MAX_Y 4095
20 20
21#define AR1021_CMD 0x55
22
23#define AR1021_CMD_ENABLE_TOUCH 0x12
24
21struct ar1021_i2c { 25struct ar1021_i2c {
22 struct i2c_client *client; 26 struct i2c_client *client;
23 struct input_dev *input; 27 struct input_dev *input;
@@ -56,8 +60,19 @@ out:
56 60
57static int ar1021_i2c_open(struct input_dev *dev) 61static int ar1021_i2c_open(struct input_dev *dev)
58{ 62{
63 static const u8 cmd_enable_touch[] = {
64 AR1021_CMD,
65 0x01, /* number of bytes after this */
66 AR1021_CMD_ENABLE_TOUCH
67 };
59 struct ar1021_i2c *ar1021 = input_get_drvdata(dev); 68 struct ar1021_i2c *ar1021 = input_get_drvdata(dev);
60 struct i2c_client *client = ar1021->client; 69 struct i2c_client *client = ar1021->client;
70 int error;
71
72 error = i2c_master_send(ar1021->client, cmd_enable_touch,
73 sizeof(cmd_enable_touch));
74 if (error < 0)
75 return error;
61 76
62 enable_irq(client->irq); 77 enable_irq(client->irq);
63 78