Re: Synaptics touchpad on Dell Vostro V13

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

 



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
--
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