lkml.org 
[lkml]   [2010]   [Dec]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRe: Synaptics touchpad on Dell Vostro V13
Date
On Wednesday, December 15, 2010 02:51:01 pm Jiri Kosina wrote:
> 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.

Hmm, and what happens if you force dfl = 0 in i8042_interrupt()? It looks
like controller FW screwed up...

>
> 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? :)

KVM + serio_raw but someone needs to write the glue...

--
Dmitry


\
 
 \ /
  Last update: 2010-12-16 00:25    [W:0.160 / U:0.080 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site