[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20200904024231.26812-1-jingle.wu@emc.com.tw>
Date: Fri, 4 Sep 2020 10:42:31 +0800
From: "jingle.wu" <jingle.wu@....com.tw>
To: linux-kernel@...r.kernel.org, linux-input@...r.kernel.org,
dmitry.torokhov@...il.com
Cc: phoenix@....com.tw,
"jingle.wu" <jingle.wu@...n.corp-partner.google.com>
Subject: [PATCH] Input: trackpoint - Add Suspend mode for Elan TrackPoint
From: "jingle.wu" <jingle.wu@...n.corp-partner.google.com>
Add suspend command for elan trackpoint
---
drivers/input/mouse/trackpoint.c | 16 ++++++++++++++++
drivers/input/mouse/trackpoint.h | 1 +
2 files changed, 17 insertions(+)
diff --git a/drivers/input/mouse/trackpoint.c b/drivers/input/mouse/trackpoint.c
index 3eefee2ee2a1..b3cba973a4eb 100644
--- a/drivers/input/mouse/trackpoint.c
+++ b/drivers/input/mouse/trackpoint.c
@@ -389,6 +389,20 @@ static int trackpoint_reconnect(struct psmouse *psmouse)
return 0;
}
+static void trackpoint_cleanup(struct psmouse *psmouse)
+{
+ struct trackpoint_data *tp = psmouse->private;
+ u8 param[3] = { TP_TOGGLE, TP_TOGGLE_BURST, TP_TOGGLE_ELAN_SLEEP };
+
+ if (tp->variant_id == TP_VARIANT_ELAN) {
+ if (ps2_command(&psmouse->ps2dev, param,
+ MAKE_PS2_CMD(3, 0, TP_COMMAND))) {
+ psmouse_err(psmouse,
+ "failed to suspend trackpont.\n");
+ }
+ }
+}
+
int trackpoint_detect(struct psmouse *psmouse, bool set_properties)
{
struct ps2dev *ps2dev = &psmouse->ps2dev;
@@ -421,6 +435,8 @@ int trackpoint_detect(struct psmouse *psmouse, bool set_properties)
psmouse->reconnect = trackpoint_reconnect;
psmouse->disconnect = trackpoint_disconnect;
+ psmouse->cleanup = trackpoint_cleanup;
+
if (variant_id != TP_VARIANT_IBM) {
/* Newer variants do not support extended button query. */
button_info = 0x33;
diff --git a/drivers/input/mouse/trackpoint.h b/drivers/input/mouse/trackpoint.h
index 5cb93ed26085..c7fa75452976 100644
--- a/drivers/input/mouse/trackpoint.h
+++ b/drivers/input/mouse/trackpoint.h
@@ -107,6 +107,7 @@
#define TP_TOGGLE_EXT_TAG 0x22 /* Bit 3 of the first packet coming from the
external device will be forced to 1 */
#define TP_MASK_EXT_TAG 0x04
+#define TP_TOGGLE_ELAN_SLEEP 0x8
/* Power on Self Test Results */
--
2.17.1
Powered by blists - more mailing lists