Re: PROBLEM: Touchpad works just like a mouse

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

 



Hi,

On 30-04-15 07:34, David Zafra Gómez wrote:
Hi everyone

El 29/04/15 a las 09:35, Hans de Goede escribió:
Hi,

On 28-04-15 23:26, David Zafra Gómez wrote:
[    0.257439] pnp 00:06: Plug and Play ACPI device, IDs ETD0108
SYN0a00 SYN0002 PNP0f03 PNP0f13 PNP0f12 (active)

Ok, so the "ETD0108" here means that you have an elantech ps/2 touchpad.
Great! You got it.

This also stands out in the log:

> [    0.958323] i8042: [49] MUX error, status is 75, data is fe

So the first thing to try is to boot with i8042.nomux=1 on the kernel
commandline.
I have done it. The touchpad issue hasn't been solved. Do you want me to send dmesg output?

I've taken another look at the traces you've posted before and I think that
I've found the problem. Can you build a kernel with the attached patch
and let us know if that fixes things ?

Regards,

Hans
>From 0b0bf8fd125b0925166470cf8cf9f7b2f310efd4 Mon Sep 17 00:00:00 2001
From: Hans de Goede <hdegoede@xxxxxxxxxx>
Date: Thu, 30 Apr 2015 10:29:38 +0200
Subject: [PATCH] elantech: Fix detection of touchpads where the revision
 matches a known rate
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Make the check to skip the rate check more lax, so that it applies
to all hw_version 4 models.

This fixes the touchpad not being detected properly on Asus PU551LA
laptops.

Reported-and-tested-by: David Zafra Gómez <dezeta@xxxxxx>
Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx>
---
 drivers/input/mouse/elantech.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/input/mouse/elantech.c b/drivers/input/mouse/elantech.c
index 991dc6b..e30286f 100644
--- a/drivers/input/mouse/elantech.c
+++ b/drivers/input/mouse/elantech.c
@@ -1379,7 +1379,8 @@ static bool elantech_is_signature_valid(const unsigned char *param)
 	 * Some models have a revision higher then 20. Meaning param[2] may
 	 * be 10 or 20, skip the rates check for these.
 	 */
-	if (param[0] == 0x46 && (param[1] & 0xef) == 0x0f && param[2] < 40)
+	if ((param[0] & 0x0f) >= 0x06 && (param[1] & 0xaf) == 0x0f &&
+	    param[2] < 40)
 		return true;
 
 	for (i = 0; i < ARRAY_SIZE(rates); i++)
-- 
2.3.6


[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