|
@@ -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);
|