]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - drivers/input/touchscreen/wacom_i2c.c
Merge tag 'arc-v3.11-rc1-part2' of git://git.kernel.org/pub/scm/linux/kernel/git...
[mirror_ubuntu-artful-kernel.git] / drivers / input / touchscreen / wacom_i2c.c
index bf0d07620bac705d9e892fa816ae8bc97925f20f..7ccaa1b12b05b27377d91253aac2c2aab1639056 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Wacom Penabled Driver for I2C
  *
- * Copyright (c) 2011 Tatsunosuke Tobita, Wacom.
+ * Copyright (c) 2011 - 2013 Tatsunosuke Tobita, Wacom.
  * <tobita.tatsunosuke@wacom.co.jp>
  *
  * This program is free software; you can redistribute it
@@ -27,7 +27,6 @@
 #define WACOM_CMD_THROW0       0x05
 #define WACOM_CMD_THROW1       0x00
 #define WACOM_QUERY_SIZE       19
-#define WACOM_RETRY_CNT                100
 
 struct wacom_features {
        int x_max;
@@ -40,6 +39,8 @@ struct wacom_i2c {
        struct i2c_client *client;
        struct input_dev *input;
        u8 data[WACOM_QUERY_SIZE];
+       bool prox;
+       int tool;
 };
 
 static int wacom_query_device(struct i2c_client *client,
@@ -112,9 +113,14 @@ static irqreturn_t wacom_i2c_irq(int irq, void *dev_id)
        y = le16_to_cpup((__le16 *)&data[6]);
        pressure = le16_to_cpup((__le16 *)&data[8]);
 
+       if (!wac_i2c->prox)
+               wac_i2c->tool = (data[3] & 0x0c) ?
+                       BTN_TOOL_RUBBER : BTN_TOOL_PEN;
+
+       wac_i2c->prox = data[3] & 0x20;
+
        input_report_key(input, BTN_TOUCH, tsw || ers);
-       input_report_key(input, BTN_TOOL_PEN, tsw);
-       input_report_key(input, BTN_TOOL_RUBBER, ers);
+       input_report_key(input, wac_i2c->tool, wac_i2c->prox);
        input_report_key(input, BTN_STYLUS, f1);
        input_report_key(input, BTN_STYLUS2, f2);
        input_report_abs(input, ABS_X, x);