From a38bb7811de80f2f6012b50ce58a2687937271c0 Mon Sep 17 00:00:00 2001 From: Paul Keith Date: Fri, 10 Nov 2017 17:46:26 +0100 Subject: [PATCH] wacom: Report KEY_WAKEUP on s-pen removal * Wakes device when s-pen is removed Change-Id: I4d3760385beefdcd9dfd1d84048be35a88c78df8 --- drivers/input/touchscreen/wacom/wacom_i2c.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/drivers/input/touchscreen/wacom/wacom_i2c.c b/drivers/input/touchscreen/wacom/wacom_i2c.c index 769eafdb181..d0373b9f1ad 100644 --- a/drivers/input/touchscreen/wacom/wacom_i2c.c +++ b/drivers/input/touchscreen/wacom/wacom_i2c.c @@ -225,9 +225,12 @@ static void pen_insert_work(struct work_struct *work) dev_info(&wac_i2c->client->dev, "%s: pen %s\n", __func__, wac_i2c->pen_insert ? "instert" : "remove"); - input_report_switch(wac_i2c->input_dev, - SW_PEN_INSERT, !wac_i2c->pen_insert); - input_sync(wac_i2c->input_dev); + if (!wac_i2c->pen_insert) { + input_report_key(wac_i2c->input_dev, KEY_WAKEUP, 1); + input_sync(wac_i2c->input_dev); + input_report_key(wac_i2c->input_dev, KEY_WAKEUP, 0); + input_sync(wac_i2c->input_dev); + } #ifdef BATTERY_SAVING_MODE if (wac_i2c->pen_insert) { @@ -284,8 +287,6 @@ static void wacom_i2c_set_input_values(struct i2c_client *client, input_dev->dev.parent = &client->dev; input_dev->evbit[0] |= BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS); - input_dev->evbit[0] |= BIT_MASK(EV_SW); - input_set_capability(input_dev, EV_SW, SW_PEN_INSERT); #ifdef WACOM_PEN_DETECT input_dev->open = wacom_i2c_input_open; input_dev->close = wacom_i2c_input_close; @@ -300,6 +301,7 @@ static void wacom_i2c_set_input_values(struct i2c_client *client, __set_bit(BTN_STYLUS, input_dev->keybit); __set_bit(KEY_UNKNOWN, input_dev->keybit); __set_bit(KEY_PEN_PDCT, input_dev->keybit); + __set_bit(KEY_WAKEUP, input_dev->keybit); #ifdef WACOM_USE_GAIN __set_bit(ABS_DISTANCE, input_dev->absbit); #endif