Input: alps - warn about unsupported ALPS V9 touchpad
authorPali Rohár <pali.rohar@gmail.com>
Tue, 7 Mar 2017 17:42:46 +0000 (09:42 -0800)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Tue, 7 Mar 2017 17:49:29 +0000 (09:49 -0800)
Support for devices with ALPS_PROTO_V9 is not implemented yet but we can
detect these alps touchpads and warn users about it.

Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
drivers/input/mouse/alps.c
drivers/input/mouse/alps.h

index f36de829390be9da1aea1aeea3d439b2db87d40e..c893af6a33b03e85262485d2972d17e17bba5f45 100644 (file)
@@ -164,6 +164,10 @@ static const struct alps_protocol_info alps_v8_protocol_data = {
        ALPS_PROTO_V8, 0x18, 0x18, 0
 };
 
+static const struct alps_protocol_info alps_v9_protocol_data = {
+       ALPS_PROTO_V9, 0xc8, 0xc8, 0
+};
+
 /*
  * Some v2 models report the stick buttons in separate bits
  */
@@ -2838,6 +2842,12 @@ static int alps_identify(struct psmouse *psmouse, struct alps_data *priv)
                } else if (e7[0] == 0x73 && e7[1] == 0x03 &&
                           e7[2] == 0x28 && ec[1] == 0x01) {
                        protocol = &alps_v8_protocol_data;
+               } else if (e7[0] == 0x73 && e7[1] == 0x03 && e7[2] == 0xc8) {
+                       protocol = &alps_v9_protocol_data;
+                       psmouse_warn(psmouse,
+                                    "Unsupported ALPS V9 touchpad: E7=%3ph, EC=%3ph\n",
+                                    e7, ec);
+                       return -EINVAL;
                } else {
                        psmouse_dbg(psmouse,
                                    "Likely not an ALPS touchpad: E7=%3ph, EC=%3ph\n", e7, ec);
index 6d279aa27cb9a10d70a2e732fe9599297883cbc0..54f9f4401a779b35fa54f277d41bb39f2778ce48 100644 (file)
@@ -23,6 +23,7 @@
 #define ALPS_PROTO_V6          0x600
 #define ALPS_PROTO_V7          0x700   /* t3btl t4s */
 #define ALPS_PROTO_V8          0x800   /* SS4btl SS4s */
+#define ALPS_PROTO_V9          0x900   /* ss3btl */
 
 #define MAX_TOUCHES    4