aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/input/mouse/cyapa_gen6.c
diff options
context:
space:
mode:
authorDudley Du <dudl@cypress.com>2015-07-20 16:57:53 -0700
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2015-07-23 17:34:05 -0700
commit945525ee607471630d07c309e036ae4a53abe37f (patch)
tree94d975a13c53bd6173d0f5dfdf4f5b555a9216df /drivers/input/mouse/cyapa_gen6.c
parentInput: cyapa - add gen6 device module support (diff)
downloadlinux-dev-945525ee607471630d07c309e036ae4a53abe37f.tar.xz
linux-dev-945525ee607471630d07c309e036ae4a53abe37f.zip
Input: cyapa - add proximity support for gen5 and gen6 modules
Gen5 and Gen6 trackpad devices are able to detect and report object proximity data/events, add this function support in the cyapa driver through the ABS_DISTANCE event. Signed-off-by: Dudley Du <dudl@cypress.com> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Diffstat (limited to 'drivers/input/mouse/cyapa_gen6.c')
-rw-r--r--drivers/input/mouse/cyapa_gen6.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/drivers/input/mouse/cyapa_gen6.c b/drivers/input/mouse/cyapa_gen6.c
index 8a6aa73b5373..61f04132eb65 100644
--- a/drivers/input/mouse/cyapa_gen6.c
+++ b/drivers/input/mouse/cyapa_gen6.c
@@ -310,6 +310,17 @@ static int cyapa_gen6_config_dev_irq(struct cyapa *cyapa, u8 cmd_code)
return 0;
}
+static int cyapa_gen6_set_proximity(struct cyapa *cyapa, bool enable)
+{
+ int error;
+
+ cyapa_gen6_config_dev_irq(cyapa, GEN6_DISABLE_CMD_IRQ);
+ error = cyapa_pip_set_proximity(cyapa, enable);
+ cyapa_gen6_config_dev_irq(cyapa, GEN6_ENABLE_CMD_IRQ);
+
+ return error;
+}
+
static int cyapa_gen6_change_power_state(struct cyapa *cyapa, u8 power_mode)
{
u8 cmd[] = { 0x04, 0x00, 0x06, 0x00, 0x2f, 0x00, 0x46, power_mode };
@@ -687,6 +698,12 @@ static int cyapa_gen6_operational_check(struct cyapa *cyapa)
dev_warn(dev, "%s: failed to set power active mode.\n",
__func__);
+ /* By default, the trackpad proximity function is enabled. */
+ error = cyapa_pip_set_proximity(cyapa, true);
+ if (error)
+ dev_warn(dev, "%s: failed to enable proximity.\n",
+ __func__);
+
/* Get trackpad product information. */
error = cyapa_gen6_read_sys_info(cyapa);
if (error)
@@ -727,4 +744,6 @@ const struct cyapa_dev_ops cyapa_gen6_ops = {
.irq_cmd_handler = cyapa_pip_irq_cmd_handler,
.sort_empty_output_data = cyapa_empty_pip_output_data,
.set_power_mode = cyapa_gen6_set_power_mode,
+
+ .set_proximity = cyapa_gen6_set_proximity,
};