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