Re: Elantech touchpad detected as Logitech PS2 Wheel Mouse

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



JJ Ding wrote:

> We used to have a "force_elantech" module param to force the TP to be
> detected as Elan, but I removed it when I was updating elantech.c to
> support newer models. Maybe you can convince Dmitry to add it back, but
> still, this kind of Elan touchpads is not supported as multi-touch
> pointing device, so I wouldn't recommand it.

Neat.

> I hope this helps.

Definitely; thanks for explaining.  Nicola, I'm still curious about
the following:

>> E.g., is there another OS with a driver that detects it as Elantech?

If another OS offers more functionality, then we would know the
hardware is capable of it.

The patch JJ described follows, in case you want to experiment.

-- >8 --
Subject: Input: elantech - allow forcing Elantech protocol when knock fails

This does not quite revert 4af61e90270e35bafa9e99a3c48fb3f363da592d
("Input: elantech - remove module parameter force_elantech") --- the
old force_elantech parameter was about ignoring an unrecognized
response to ETP_FW_VERSION_QUERY, while this one is about ignoring
unrecognized responses to the magic knock.

This patch is just for experimentation and is not meant for inclusion.
---
 drivers/input/mouse/elantech.c |   16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/drivers/input/mouse/elantech.c b/drivers/input/mouse/elantech.c
index d2c0db159b18..55ac1aa5e943 100644
--- a/drivers/input/mouse/elantech.c
+++ b/drivers/input/mouse/elantech.c
@@ -27,6 +27,10 @@
 					fmt, ##__VA_ARGS__);		\
 	} while (0)
 
+static bool force_elantech;
+module_param_named(force_elantech, force_elantech, bool, 0644);
+MODULE_PARM_DESC(force_elantech, "Force the Elantech PS/2 protocol extension to be used, 1 = enabled, 0 = disabled (default).");
+
 /*
  * Send a Synaptics style sliced query command
  */
@@ -1195,10 +1199,14 @@ int elantech_detect(struct psmouse *psmouse, bool set_properties)
 	 */
 	if (param[0] != 0x3c || param[1] != 0x03 ||
 	    (param[2] != 0xc8 && param[2] != 0x00)) {
-		psmouse_dbg(psmouse,
-			    "unexpected magic knock result 0x%02x, 0x%02x, 0x%02x.\n",
-			    param[0], param[1], param[2]);
-		return -1;
+		if (!force_elantech) {
+			psmouse_dbg(psmouse,
+				    "unexpected magic knock result 0x%02x, 0x%02x, 0x%02x.\n",
+				    param[0], param[1], param[2]);
+			return -1;
+		}
+		psmouse_warning(psmouse, "Unexpected magic knock result.\n");
+		psmouse_info(psmouse, "Enabling anyway due to force_elantech.\n");
 	}
 
 	/*
-- 
1.7.10.2

--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux