On Wed, 15 Dec 2010, Dmitry Torokhov wrote: > > > > 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? > > > > > > 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... Yeah, that makes the thing work correctly (together with nomux). This all is really strange, isn't it? I doubt other OS discards I8042_STR_TIMEOUT completely :) -- Jiri Kosina SUSE Labs, Novell Inc. -- 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