Re: Synaptics touchpad on Dell Vostro V13

From: Jiri Kosina
Date: Wed Dec 15 2010 - 17:51:12 EST


On Tue, 14 Dec 2010, Dmitry Torokhov wrote:

> > I have a bugreport about Synaptics touchpad not working as proper
> > Synaptics, but only being detected as standard PS/2.
> >
> > Looking at the i8042.debug output, the device is clearly buggy, as it
> > doesn't identify itself by 0x47 when queried:
> >
> > 91 -> i8042 (command) [58]
> > e8 -> i8042 (parameter) [58]
> > fa <- i8042 (interrupt, 3, 12) [59]
> > 91 -> i8042 (command) [59]
> > 00 -> i8042 (parameter) [59]
> > fa <- i8042 (interrupt, 3, 12) [59]
> > 91 -> i8042 (command) [59]
> > e8 -> i8042 (parameter) [59]
> > fa <- i8042 (interrupt, 3, 12) [60]
> > 91 -> i8042 (command) [60]
> > 00 -> i8042 (parameter) [60]
> > fa <- i8042 (interrupt, 3, 12) [61]
> > 91 -> i8042 (command) [61]
> > e8 -> i8042 (parameter) [61]
> > fa <- i8042 (interrupt, 3, 12) [61]
> > 91 -> i8042 (command) [61]
> > 00 -> i8042 (parameter) [61]
> > fa <- i8042 (interrupt, 3, 12) [62]
> > 91 -> i8042 (command) [62]
> > e8 -> i8042 (parameter) [62]
> > fa <- i8042 (interrupt, 3, 12) [63]
> > 91 -> i8042 (command) [63]
> > 00 -> i8042 (parameter) [63]
> > fa <- i8042 (interrupt, 3, 12) [64]
> > 91 -> i8042 (command) [64]
> > e9 -> i8042 (parameter) [64]
> > fa <- i8042 (interrupt, 3, 12) [64]
> >
> > ... and here we time out after approximately 0.5s. nomux doesn't really
> > fix it, we start getting a lot of timeouts on i8042 with that.
> >
> > Apparently the device works with Synaptics driver in Other OS(TM) though.
> > Do you have any idea what they might be doing differently so that they
> > make the touchpad identify itself properly?
>
> Hi Jiri,
>
> Do you have the device in your possession? If so can you check if the
> driver installed in Other OS uses active multiplexing? I think you can
> infer whether it does or not by looking at the pointer properties - I
> think it would "Synaptics Blah at port X" or something like that...

Unfortunately I don't have the hardware myself, it's only bugreport that
reached me. I will check this, thanks.

> Also you could try combining nomux with reset and see if it makes any
> sense...

Yes, I have already had the reporter to do this, but that's even better --
a lot of commands time out, as you can see below

20 -> i8042 (command) [0]
47 <- i8042 (return) [0]
20 -> i8042 (command) [0]
47 <- i8042 (return) [0]
60 -> i8042 (command) [0]
56 -> i8042 (parameter) [0]
d3 -> i8042 (command) [0]
5a -> i8042 (parameter) [0]
5a <- i8042 (return) [0]
a7 -> i8042 (command) [0]
20 -> i8042 (command) [0]
76 <- i8042 (return) [0]
a8 -> i8042 (command) [0]
20 -> i8042 (command) [0]
56 <- i8042 (return) [0]
60 -> i8042 (command) [0]
56 -> i8042 (parameter) [0]
d3 -> i8042 (command) [0]
a5 -> i8042 (parameter) [0]
a5 <- i8042 (aux_test_irq, aux) [1]
60 -> i8042 (command) [1]
74 -> i8042 (parameter) [1]
60 -> i8042 (command) [1]
56 -> i8042 (parameter) [1]
60 -> i8042 (command) [1]
47 -> i8042 (parameter) [1]
serio: i8042 KBD port at 0x60,0x64 irq 1
serio: i8042 AUX port at 0x60,0x64 irq 12
mice: PS/2 mouse device common for all mice
f2 -> i8042 (kbd-data) [1]
fa <- i8042 (interrupt, 0, 1, timeout) [1]
ab <- i8042 (interrupt, 0, 1, timeout) [1]
83 <- i8042 (interrupt, 0, 1, timeout) [1]
ed -> i8042 (kbd-data) [1]
fa <- i8042 (interrupt, 0, 1, timeout) [1]
00 -> i8042 (kbd-data) [1]
fa <- i8042 (interrupt, 0, 1, timeout) [1]
f3 -> i8042 (kbd-data) [1]
fa <- i8042 (interrupt, 0, 1, timeout) [1]
00 -> i8042 (kbd-data) [1]
fa <- i8042 (interrupt, 0, 1, timeout) [1]
f4 -> i8042 (kbd-data) [1]
fa <- i8042 (interrupt, 0, 1, timeout) [1]
input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input0
d4 -> i8042 (command) [2]
f2 -> i8042 (parameter) [2]
fa <- i8042 (interrupt, 1, 12, timeout) [2]
00 <- i8042 (interrupt, 1, 12, timeout) [3]
60 -> i8042 (command) [3]
45 -> i8042 (parameter) [3]
60 -> i8042 (command) [3]
47 -> i8042 (parameter) [3]
d4 -> i8042 (command) [3]
f2 -> i8042 (parameter) [3]
fa <- i8042 (interrupt, 1, 12, timeout) [4]
60 -> i8042 (command) [4]
45 -> i8042 (parameter) [4]
60 -> i8042 (command) [4]
47 -> i8042 (parameter) [4]
00 <- i8042 (interrupt, 1, 12, timeout) [5]

...

f3 -> i8042 (kbd-data) [6323]
fa <- i8042 (interrupt, 0, 1, timeout) [6323]
20 -> i8042 (kbd-data) [6323]
fa <- i8042 (interrupt, 0, 1, timeout) [6323]
2d <- i8042 (interrupt, 0, 1, timeout) [10631]
10 <- i8042 (interrupt, 0, 1, timeout) [10669]
ad <- i8042 (interrupt, 0, 1, timeout) [10674]
90 <- i8042 (interrupt, 0, 1, timeout) [10692]
2f <- i8042 (interrupt, 0, 1, timeout) [10737]
af <- i8042 (interrupt, 0, 1, timeout) [10760]
17 <- i8042 (interrupt, 0, 1, timeout) [10922]
97 <- i8042 (interrupt, 0, 1, timeout) [10945]
12 <- i8042 (interrupt, 0, 1, timeout) [10998]
92 <- i8042 (interrupt, 0, 1, timeout) [11025]
13 <- i8042 (interrupt, 0, 1, timeout) [11317]
93 <- i8042 (interrupt, 0, 1, timeout) [11345]
1c <- i8042 (interrupt, 0, 1, timeout) [11422]
9c <- i8042 (interrupt, 0, 1, timeout) [11449]
31 <- i8042 (interrupt, 0, 1, timeout) [11672]
b1 <- i8042 (interrupt, 0, 1, timeout) [11697]
18 <- i8042 (interrupt, 0, 1, timeout) [11704]
98 <- i8042 (interrupt, 0, 1, timeout) [11729]
2f <- i8042 (interrupt, 0, 1, timeout) [11800]
af <- i8042 (interrupt, 0, 1, timeout) [11821]
12 <- i8042 (interrupt, 0, 1, timeout) [11842]
92 <- i8042 (interrupt, 0, 1, timeout) [11866]
27 <- i8042 (interrupt, 0, 1, timeout) [11951]
a7 <- i8042 (interrupt, 0, 1, timeout) [11969]
0e <- i8042 (interrupt, 0, 1, timeout) [12061]
8e <- i8042 (interrupt, 0, 1, timeout) [12089]
26 <- i8042 (interrupt, 0, 1, timeout) [12169]
a6 <- i8042 (interrupt, 0, 1, timeout) [12187]
26 <- i8042 (interrupt, 0, 1, timeout) [12207]
a6 <- i8042 (interrupt, 0, 1, timeout) [12227]
1c <- i8042 (interrupt, 0, 1, timeout) [12428]
9c <- i8042 (interrupt, 0, 1, timeout) [12456]

... and a lot of other timeouts.

If the device wouldn't work with Synaptics driver in other OS, I'd just
claim the device to be broken behind hope and be done with this, but this
makes me really wonder what they do differently.

Are you aware of any means of i8042 debugging/sniffing facility in the
other OS that could be used? :)

Thanks,

--
Jiri Kosina
SUSE Labs, Novell Inc.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/