2002-07-16 14:31:45

by Stelian Pop

[permalink] [raw]
Subject: input subsystem config ?

I have problems with the input subsystem in the latest BK tree,
on a Sony Vaio laptop (regular keyboard, integrated PS/2 trackball):
the keyboard works but the mouse is never initialized (nothing in
the logs, AUX irq not reserved etc).

Before I submit a proper bug report, could someone confirm that
the input susbystem is supposed to be working now and what
config should I use (I tried several config options, all input
items 'Y', or some items compiled as modules etc).

Thanks,

Stelian.
--
Stelian Pop <[email protected]>
Alcove - http://www.alcove.com


2002-07-17 09:53:23

by Stelian Pop

[permalink] [raw]
Subject: Re: input subsystem config ?

On Tue, Jul 16, 2002 at 04:34:15PM +0200, Stelian Pop wrote:

> I have problems with the input subsystem in the latest BK tree,
> on a Sony Vaio laptop (regular keyboard, integrated PS/2 trackball):
^^^^^^^^^
pointing stick in fact

> the keyboard works but the mouse is never initialized (nothing in
> the logs, AUX irq not reserved etc).
>
> Before I submit a proper bug report, could someone confirm that
> the input susbystem is supposed to be working now and what
> config should I use (I tried several config options, all input
> items 'Y', or some items compiled as modules etc).

Ok, here comes a more detalied bug report, based upon 2.5.26:

Relevant boot messages:
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
hda: 23579136 sectors w/512KiB Cache, CHS=23392/16/63, UDMA(33)
hda: [PTBL] [1467/255/63] hda1 hda2 hda3 < hda5 hda6 >
mice: PS/2 mouse device common for all mice
input.c: calling /sbin/hotplug input [HOME=/ PATH=/sbin:/bin:/usr/sbin:/usr/bin ACTION=add PRODUCT=11/1/2/ab02 NAME=AT Set 2 keyboard]
input.c: hotplug returned -2
input: AT Set 2 keyboard on isa0060/serio0
serio: i8042 KBD port at 0x60,0x64 irq 1
serio: i8042 AUX port at 0x60,0x64 irq 12
NET4: Linux TCP/IP 1.0 for NET4.0

However, irq 12 is not used after boot:

CPU0
0: 443973 XT-PIC timer
1: 18 XT-PIC i8042
2: 0 XT-PIC cascade
3: 2470 XT-PIC pcnet_cs
8: 1 XT-PIC rtc
9: 122 XT-PIC acpi, uhci-hcd, Ricoh Co Ltd RL5c475
14: 9259 XT-PIC ide0
NMI: 0
ERR: 1

My .config:

$ egrep "INPUT|MOUSE|KEYB|SERIO|8042" .config | grep -v ^#
CONFIG_INPUT=y
CONFIG_INPUT_KEYBDEV=y
CONFIG_INPUT_MOUSEDEV=y
CONFIG_INPUT_MOUSEDEV_PSAUX=y
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480
CONFIG_SERIO=y
CONFIG_SERIO_I8042=y
CONFIG_I8042_REG_BASE=60
CONFIG_I8042_KBD_IRQ=1
CONFIG_I8042_AUX_IRQ=12
CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_ATKBD=y
CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=y
CONFIG_USB_HIDINPUT=y

Should I enable some extra debug somewhere ?

Stelian.
--
Stelian Pop <[email protected]>
Alcove - http://www.alcove.com

2002-07-17 09:58:52

by Vojtech Pavlik

[permalink] [raw]
Subject: Re: input subsystem config ?

On Wed, Jul 17, 2002 at 11:56:18AM +0200, Stelian Pop wrote:
> On Tue, Jul 16, 2002 at 04:34:15PM +0200, Stelian Pop wrote:
>
> > I have problems with the input subsystem in the latest BK tree,
> > on a Sony Vaio laptop (regular keyboard, integrated PS/2 trackball):
> ^^^^^^^^^
> pointing stick in fact
>
> > the keyboard works but the mouse is never initialized (nothing in
> > the logs, AUX irq not reserved etc).
> >
> > Before I submit a proper bug report, could someone confirm that
> > the input susbystem is supposed to be working now and what
> > config should I use (I tried several config options, all input
> > items 'Y', or some items compiled as modules etc).
>
> Ok, here comes a more detalied bug report, based upon 2.5.26:
>
> Relevant boot messages:
> ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
> hda: 23579136 sectors w/512KiB Cache, CHS=23392/16/63, UDMA(33)
> hda: [PTBL] [1467/255/63] hda1 hda2 hda3 < hda5 hda6 >
> mice: PS/2 mouse device common for all mice
> input.c: calling /sbin/hotplug input [HOME=/ PATH=/sbin:/bin:/usr/sbin:/usr/bin ACTION=add PRODUCT=11/1/2/ab02 NAME=AT Set 2 keyboard]
> input.c: hotplug returned -2
> input: AT Set 2 keyboard on isa0060/serio0
> serio: i8042 KBD port at 0x60,0x64 irq 1
> serio: i8042 AUX port at 0x60,0x64 irq 12
> NET4: Linux TCP/IP 1.0 for NET4.0
>
> However, irq 12 is not used after boot:
>
> CPU0
> 0: 443973 XT-PIC timer
> 1: 18 XT-PIC i8042
> 2: 0 XT-PIC cascade
> 3: 2470 XT-PIC pcnet_cs
> 8: 1 XT-PIC rtc
> 9: 122 XT-PIC acpi, uhci-hcd, Ricoh Co Ltd RL5c475
> 14: 9259 XT-PIC ide0
> NMI: 0
> ERR: 1
>
> My .config:
>
> $ egrep "INPUT|MOUSE|KEYB|SERIO|8042" .config | grep -v ^#
> CONFIG_INPUT=y
> CONFIG_INPUT_KEYBDEV=y
> CONFIG_INPUT_MOUSEDEV=y
> CONFIG_INPUT_MOUSEDEV_PSAUX=y
> CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
> CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480
> CONFIG_SERIO=y
> CONFIG_SERIO_I8042=y
> CONFIG_I8042_REG_BASE=60
> CONFIG_I8042_KBD_IRQ=1
> CONFIG_I8042_AUX_IRQ=12
> CONFIG_INPUT_KEYBOARD=y
> CONFIG_KEYBOARD_ATKBD=y
> CONFIG_INPUT_MOUSE=y
> CONFIG_MOUSE_PS2=y
> CONFIG_USB_HIDINPUT=y
>
> Should I enable some extra debug somewhere ?

Yes, please, in drivers/input/serio/i8042.h

--
Vojtech Pavlik
SuSE Labs

2002-07-17 10:07:12

by Stelian Pop

[permalink] [raw]
Subject: Re: input subsystem config ?

On Wed, Jul 17, 2002 at 12:01:35PM +0200, Vojtech Pavlik wrote:

> > Should I enable some extra debug somewhere ?
>
> Yes, please, in drivers/input/serio/i8042.h

Here it comes:

...
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
hda: 23579136 sectors w/512KiB Cache, CHS=23392/16/63, UDMA(33)
hda: [PTBL] [1467/255/63] hda1 hda2 hda3 < hda5 hda6 >
mice: PS/2 mouse device common for all mice
i8042.c: fa <- i8042 (flush) [0]
i8042.c: 20 -> i8042 (command) [0]
i8042.c: 47 <- i8042 (return) [0]
i8042.c: 60 -> i8042 (command) [0]
i8042.c: 56 -> i8042 (parameter) [0]
i8042.c: 60 -> i8042 (command) [0]
i8042.c: 57 -> i8042 (parameter) [0]
i8042.c: f6 -> i8042 (kbd-data) [1]
i8042.c: fa <- i8042 (interrupt-kbd, 1) [3]
i8042.c: f2 -> i8042 (kbd-data) [4]
i8042.c: fa <- i8042 (interrupt-kbd, 1) [6]
i8042.c: ab <- i8042 (interrupt-kbd, 1) [12]
i8042.c: 60 -> i8042 (command) [12]
i8042.c: 56 -> i8042 (parameter) [12]
i8042.c: 60 -> i8042 (command) [12]
i8042.c: 57 -> i8042 (parameter) [12]
i8042.c: f5 -> i8042 (kbd-data) [12]
i8042.c: fa <- i8042 (interrupt-kbd, 1) [15]
i8042.c: f2 -> i8042 (kbd-data) [15]
i8042.c: fa <- i8042 (interrupt-kbd, 1) [18]
i8042.c: ab <- i8042 (interrupt-kbd, 1) [23]
i8042.c: 41 <- i8042 (interrupt-kbd, 1) [29]
i8042.c: ea -> i8042 (kbd-data) [29]
i8042.c: fe <- i8042 (interrupt-kbd, 1) [31]
i8042.c: f0 -> i8042 (kbd-data) [31]
i8042.c: fa <- i8042 (interrupt-kbd, 1) [34]
i8042.c: 02 -> i8042 (kbd-data) [34]
i8042.c: fa <- i8042 (interrupt-kbd, 1) [37]
i8042.c: f0 -> i8042 (kbd-data) [37]
i8042.c: fa <- i8042 (interrupt-kbd, 1) [40]
i8042.c: 00 -> i8042 (kbd-data) [40]
i8042.c: fa <- i8042 (interrupt-kbd, 1) [43]
i8042.c: 41 <- i8042 (interrupt-kbd, 1) [45]
input.c: calling /sbin/hotplug input [HOME=/ PATH=/sbin:/bin:/usr/sbin:/usr/bin ACTION=add PRODUCT=11/1/2/ab02 NAME=AT Set 2 keyboard]
input.c: hotplug returned -2
input: AT Set 2 keyboard on isa0060/serio0
i8042.c: f8 -> i8042 (kbd-data) [48]
i8042.c: fa <- i8042 (interrupt-kbd, 1) [51]
i8042.c: ed -> i8042 (kbd-data) [51]
i8042.c: fa <- i8042 (interrupt-kbd, 1) [54]
i8042.c: 00 -> i8042 (kbd-data) [55]
i8042.c: fa <- i8042 (interrupt-kbd, 1) [60]
i8042.c: f4 -> i8042 (kbd-data) [60]
i8042.c: fa <- i8042 (interrupt-kbd, 1) [63]
serio: i8042 KBD port at 0x60,0x64 irq 1
i8042.c: d3 -> i8042 (command) [63]
i8042.c: 5a -> i8042 (parameter) [63]
i8042.c: a5 <- i8042 (return) [63]
i8042.c: a9 -> i8042 (command) [63]
i8042.c: 00 <- i8042 (return) [63]
i8042.c: a7 -> i8042 (command) [63]
i8042.c: 20 -> i8042 (command) [64]
i8042.c: 67 <- i8042 (return) [64]
i8042.c: a9 -> i8042 (command) [64]
i8042.c: 00 <- i8042 (return) [64]
i8042.c: a8 -> i8042 (command) [64]
i8042.c: 20 -> i8042 (command) [64]
i8042.c: 47 <- i8042 (return) [64]
i8042.c: 60 -> i8042 (command) [64]
i8042.c: 75 -> i8042 (parameter) [64]
i8042.c: 60 -> i8042 (command) [65]
i8042.c: 77 -> i8042 (parameter) [65]
i8042.c: d4 -> i8042 (command) [65]
i8042.c: f6 -> i8042 (parameter) [65]
i8042.c: 60 -> i8042 (command) [66]
i8042.c: 77 -> i8042 (parameter) [66]
i8042.c: 60 -> i8042 (command) [153]
i8042.c: 75 -> i8042 (parameter) [153]
i8042.c: 60 -> i8042 (command) [153]
i8042.c: 77 -> i8042 (parameter) [153]
i8042.c: d4 -> i8042 (command) [153]
i8042.c: f5 -> i8042 (parameter) [153]
i8042.c: 60 -> i8042 (command) [154]
i8042.c: 77 -> i8042 (parameter) [154]
i8042.c: 60 -> i8042 (command) [241]
i8042.c: 75 -> i8042 (parameter) [241]
serio: i8042 AUX port at 0x60,0x64 irq 12
i8042.c: 60 -> i8042 (command) [242]
i8042.c: 45 -> i8042 (parameter) [242]
NET4: Linux TCP/IP 1.0 for NET4.0
...

Stelian.
--
Stelian Pop <[email protected]>
Alcove - http://www.alcove.com

2002-07-17 12:05:31

by Vojtech Pavlik

[permalink] [raw]
Subject: Re: input subsystem config ?

On Wed, Jul 17, 2002 at 12:10:01PM +0200, Stelian Pop wrote:
> On Wed, Jul 17, 2002 at 12:01:35PM +0200, Vojtech Pavlik wrote:
>
> > > Should I enable some extra debug somewhere ?
> >
> > Yes, please, in drivers/input/serio/i8042.h
>
> Here it comes:
>
> i8042.c: 60 -> i8042 (command) [65]
> i8042.c: 77 -> i8042 (parameter) [65]
> i8042.c: d4 -> i8042 (command) [65]
> i8042.c: f6 -> i8042 (parameter) [65]

This is the bug. :) It tries to talk to the mouse before enabling the
mouse interface. I wonder how it could work ... probably many chipsets
ignore the disable bit altogether.

Please try with the attached i8042.c.

--
Vojtech Pavlik
SuSE Labs


Attachments:
(No filename) (659.00 B)
i8042.c (16.16 kB)
Download all attachments

2002-07-17 13:22:06

by Stelian Pop

[permalink] [raw]
Subject: Re: input subsystem config ?

On Wed, Jul 17, 2002 at 02:08:04PM +0200, Vojtech Pavlik wrote:

> > i8042.c: 60 -> i8042 (command) [65]
> > i8042.c: 77 -> i8042 (parameter) [65]
> > i8042.c: d4 -> i8042 (command) [65]
> > i8042.c: f6 -> i8042 (parameter) [65]
>
> This is the bug. :) It tries to talk to the mouse before enabling the
> mouse interface. I wonder how it could work ... probably many chipsets
> ignore the disable bit altogether.
>
> Please try with the attached i8042.c.

I'm afraid it doesn't work either:
...
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
hda: 23579136 sectors w/512KiB Cache, CHS=23392/16/63, UDMA(33)
hda: [PTBL] [1467/255/63] hda1 hda2 hda3 < hda5 hda6 >
mice: PS/2 mouse device common for all mice
i8042.c: fa <- i8042 (flush, kbd) [0]
i8042.c: 20 -> i8042 (command) [0]
i8042.c: 47 <- i8042 (return) [0]
i8042.c: 60 -> i8042 (command) [0]
i8042.c: 56 -> i8042 (parameter) [0]
i8042.c: d3 -> i8042 (command) [0]
i8042.c: 5a -> i8042 (parameter) [0]
i8042.c: a5 <- i8042 (return) [0]
i8042.c: a9 -> i8042 (command) [0]
i8042.c: 00 <- i8042 (return) [0]
i8042.c: a7 -> i8042 (command) [1]
i8042.c: 20 -> i8042 (command) [1]
i8042.c: 76 <- i8042 (return) [1]
i8042.c: a9 -> i8042 (command) [1]
i8042.c: 00 <- i8042 (return) [1]
i8042.c: a8 -> i8042 (command) [1]
i8042.c: 20 -> i8042 (command) [1]
i8042.c: 56 <- i8042 (return) [1]
i8042.c: 60 -> i8042 (command) [2]
i8042.c: 74 -> i8042 (parameter) [2]
i8042.c: 60 -> i8042 (command) [2]
i8042.c: 54 -> i8042 (parameter) [2]
i8042.c: 60 -> i8042 (command) [2]
i8042.c: 56 -> i8042 (parameter) [2]
i8042.c: d4 -> i8042 (command) [2]
i8042.c: f6 -> i8042 (parameter) [2]
i8042.c: 60 -> i8042 (command) [3]
i8042.c: 56 -> i8042 (parameter) [3]
i8042.c: 60 -> i8042 (command) [92]
i8042.c: 54 -> i8042 (parameter) [92]
i8042.c: 60 -> i8042 (command) [93]
i8042.c: 56 -> i8042 (parameter) [93]
i8042.c: d4 -> i8042 (command) [93]
i8042.c: f5 -> i8042 (parameter) [93]
i8042.c: 60 -> i8042 (command) [93]
i8042.c: 56 -> i8042 (parameter) [93]
i8042.c: 60 -> i8042 (command) [182]
i8042.c: 54 -> i8042 (parameter) [182]
serio: i8042 AUX port at 0x60,0x64 irq 12
i8042.c: 60 -> i8042 (command) [182]
i8042.c: 44 -> i8042 (parameter) [182]
i8042.c: 60 -> i8042 (command) [182]
i8042.c: 45 -> i8042 (parameter) [182]
i8042.c: f6 -> i8042 (kbd-data) [182]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [185]
i8042.c: f2 -> i8042 (kbd-data) [185]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [187]
i8042.c: ab <- i8042 (interrupt, kbd, 1) [193]
i8042.c: 60 -> i8042 (command) [194]
i8042.c: 44 -> i8042 (parameter) [194]
i8042.c: 60 -> i8042 (command) [194]
i8042.c: 45 -> i8042 (parameter) [194]
i8042.c: f5 -> i8042 (kbd-data) [194]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [197]
i8042.c: f2 -> i8042 (kbd-data) [197]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [200]
i8042.c: ab <- i8042 (interrupt, kbd, 1) [205]
i8042.c: 41 <- i8042 (interrupt, kbd, 1) [210]
i8042.c: ea -> i8042 (kbd-data) [210]
i8042.c: fe <- i8042 (interrupt, kbd, 1) [212]
i8042.c: f0 -> i8042 (kbd-data) [212]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [215]
i8042.c: 02 -> i8042 (kbd-data) [215]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [218]
i8042.c: f0 -> i8042 (kbd-data) [218]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [221]
i8042.c: 00 -> i8042 (kbd-data) [221]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [224]
i8042.c: 41 <- i8042 (interrupt, kbd, 1) [226]
input.c: calling /sbin/hotplug input [HOME=/ PATH=/sbin:/bin:/usr/sbin:/usr/bin ACTION=add PRODUCT=11/1/2/ab02 NAME=AT Set 2 keyboard]
input.c: hotplug returned -2
input: AT Set 2 keyboard on isa0060/serio0
i8042.c: f8 -> i8042 (kbd-data) [229]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [232]
i8042.c: ed -> i8042 (kbd-data) [232]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [235]
i8042.c: 00 -> i8042 (kbd-data) [236]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [241]
i8042.c: f4 -> i8042 (kbd-data) [241]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [244]
serio: i8042 KBD port at 0x60,0x64 irq 1
NET4: Linux TCP/IP 1.0 for NET4.0
...
--
Stelian Pop <[email protected]>
Alcove - http://www.alcove.com

2002-07-17 13:42:03

by Vojtech Pavlik

[permalink] [raw]
Subject: Re: input subsystem config ?

On Wed, Jul 17, 2002 at 03:24:59PM +0200, Stelian Pop wrote:
> On Wed, Jul 17, 2002 at 02:08:04PM +0200, Vojtech Pavlik wrote:
>
> > > i8042.c: 60 -> i8042 (command) [65]
> > > i8042.c: 77 -> i8042 (parameter) [65]
> > > i8042.c: d4 -> i8042 (command) [65]
> > > i8042.c: f6 -> i8042 (parameter) [65]
> >
> > This is the bug. :) It tries to talk to the mouse before enabling the
> > mouse interface. I wonder how it could work ... probably many chipsets
> > ignore the disable bit altogether.
> >
> > Please try with the attached i8042.c.
>
> I'm afraid it doesn't work either:
> ...

But it actually looks to do the correct thing this time :(
But for some reason your hardware doesn't like it.

> ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
> hda: 23579136 sectors w/512KiB Cache, CHS=23392/16/63, UDMA(33)
> hda: [PTBL] [1467/255/63] hda1 hda2 hda3 < hda5 hda6 >
> mice: PS/2 mouse device common for all mice
> i8042.c: fa <- i8042 (flush, kbd) [0]

Throw away stale data.

> i8042.c: 20 -> i8042 (command) [0]
> i8042.c: 47 <- i8042 (return) [0]

Remember the CTR.

> i8042.c: 60 -> i8042 (command) [0]
> i8042.c: 56 -> i8042 (parameter) [0]

Disable kbd and kbd interupt.

> i8042.c: d3 -> i8042 (command) [0]
> i8042.c: 5a -> i8042 (parameter) [0]
> i8042.c: a5 <- i8042 (return) [0]

Test mouse port loopback.

> i8042.c: a9 -> i8042 (command) [0]
> i8042.c: 00 <- i8042 (return) [0]

Test mouse port.

> i8042.c: a7 -> i8042 (command) [1]
> i8042.c: 20 -> i8042 (command) [1]
> i8042.c: 76 <- i8042 (return) [1]
> i8042.c: a9 -> i8042 (command) [1]
> i8042.c: 00 <- i8042 (return) [1]
> i8042.c: a8 -> i8042 (command) [1]
> i8042.c: 20 -> i8042 (command) [1]
> i8042.c: 56 <- i8042 (return) [1]

More aux port sanity tests, all ok.

> i8042.c: 60 -> i8042 (command) [2]
> i8042.c: 74 -> i8042 (parameter) [2]

Everything disabled.

> i8042.c: 60 -> i8042 (command) [2]
> i8042.c: 54 -> i8042 (parameter) [2]

Ints disabled, kbd disabled, aux enabled.

> i8042.c: 60 -> i8042 (command) [2]
> i8042.c: 56 -> i8042 (parameter) [2]

Aux interrupt enable.

> i8042.c: d4 -> i8042 (command) [2]
> i8042.c: f6 -> i8042 (parameter) [2]
> i8042.c: 60 -> i8042 (command) [3]
> i8042.c: 56 -> i8042 (parameter) [3]

Send reset to the mouse, wait ....

... but nothing comes in after almost a second. :(

> i8042.c: 60 -> i8042 (command) [92]
> i8042.c: 54 -> i8042 (parameter) [92]
> i8042.c: 60 -> i8042 (command) [93]
> i8042.c: 56 -> i8042 (parameter) [93]
> i8042.c: d4 -> i8042 (command) [93]
> i8042.c: f5 -> i8042 (parameter) [93]
> i8042.c: 60 -> i8042 (command) [93]
> i8042.c: 56 -> i8042 (parameter) [93]

Try again later, nothing ...

> i8042.c: 60 -> i8042 (command) [182]
> i8042.c: 54 -> i8042 (parameter) [182]
> serio: i8042 AUX port at 0x60,0x64 irq 12

Try this patch, if it doesn't work, we'll have to try more changes, like
trying to skip the AUX port detection that might confuse the chip ....

--- i8042.c.old Wed Jul 17 15:36:01 2002
+++ i8042.c Wed Jul 17 15:37:19 2002
@@ -270,6 +270,8 @@
return -1;
}

+ i8042_interrupt(0, NULL, NULL);
+
return 0;
}


Btw, what's the exact chipset involved?

--
Vojtech Pavlik
SuSE Labs

2002-07-17 13:55:38

by Stelian Pop

[permalink] [raw]
Subject: Re: input subsystem config ?

On Wed, Jul 17, 2002 at 03:44:48PM +0200, Vojtech Pavlik wrote:

> Try this patch,

It doesn't change anything:
...
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
hda: 23579136 sectors w/512KiB Cache, CHS=23392/16/63, UDMA(33)
hda: [PTBL] [1467/255/63] hda1 hda2 hda3 < hda5 hda6 >
mice: PS/2 mouse device common for all mice
i8042.c: fa <- i8042 (flush, kbd) [0]
i8042.c: 20 -> i8042 (command) [0]
i8042.c: 47 <- i8042 (return) [0]
i8042.c: 60 -> i8042 (command) [0]
i8042.c: 56 -> i8042 (parameter) [0]
i8042.c: d3 -> i8042 (command) [0]
i8042.c: 5a -> i8042 (parameter) [0]
i8042.c: a5 <- i8042 (return) [0]
i8042.c: a9 -> i8042 (command) [1]
i8042.c: 00 <- i8042 (return) [1]
i8042.c: a7 -> i8042 (command) [1]
i8042.c: 20 -> i8042 (command) [1]
i8042.c: 76 <- i8042 (return) [1]
i8042.c: a9 -> i8042 (command) [1]
i8042.c: 00 <- i8042 (return) [1]
i8042.c: a8 -> i8042 (command) [1]
i8042.c: 20 -> i8042 (command) [1]
i8042.c: 56 <- i8042 (return) [1]
i8042.c: 60 -> i8042 (command) [2]
i8042.c: 74 -> i8042 (parameter) [2]
i8042.c: 60 -> i8042 (command) [2]
i8042.c: 54 -> i8042 (parameter) [2]
i8042.c: 60 -> i8042 (command) [2]
i8042.c: 56 -> i8042 (parameter) [2]
i8042.c: d4 -> i8042 (command) [2]
i8042.c: f6 -> i8042 (parameter) [2]
i8042.c: 60 -> i8042 (command) [3]
i8042.c: 56 -> i8042 (parameter) [3]
i8042.c: 60 -> i8042 (command) [92]
i8042.c: 54 -> i8042 (parameter) [92]
i8042.c: 60 -> i8042 (command) [93]
i8042.c: 56 -> i8042 (parameter) [93]
i8042.c: d4 -> i8042 (command) [93]
i8042.c: f5 -> i8042 (parameter) [93]
i8042.c: 60 -> i8042 (command) [93]
i8042.c: 56 -> i8042 (parameter) [93]
i8042.c: 60 -> i8042 (command) [182]
i8042.c: 54 -> i8042 (parameter) [182]
serio: i8042 AUX port at 0x60,0x64 irq 12
i8042.c: 60 -> i8042 (command) [182]
i8042.c: 44 -> i8042 (parameter) [182]
i8042.c: 60 -> i8042 (command) [182]
i8042.c: 45 -> i8042 (parameter) [182]
i8042.c: f6 -> i8042 (kbd-data) [182]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [185]
i8042.c: f2 -> i8042 (kbd-data) [185]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [188]
i8042.c: ab <- i8042 (interrupt, kbd, 1) [194]
i8042.c: 60 -> i8042 (command) [194]
i8042.c: 44 -> i8042 (parameter) [194]
i8042.c: 60 -> i8042 (command) [194]
i8042.c: 45 -> i8042 (parameter) [194]
i8042.c: f5 -> i8042 (kbd-data) [194]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [197]
i8042.c: f2 -> i8042 (kbd-data) [197]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [200]
i8042.c: ab <- i8042 (interrupt, kbd, 1) [205]
i8042.c: 41 <- i8042 (interrupt, kbd, 1) [210]
i8042.c: ea -> i8042 (kbd-data) [210]
i8042.c: fe <- i8042 (interrupt, kbd, 1) [213]
i8042.c: f0 -> i8042 (kbd-data) [213]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [216]
i8042.c: 02 -> i8042 (kbd-data) [216]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [219]
i8042.c: f0 -> i8042 (kbd-data) [219]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [221]
i8042.c: 00 -> i8042 (kbd-data) [221]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [224]
i8042.c: 41 <- i8042 (interrupt, kbd, 1) [226]
input.c: calling /sbin/hotplug input [HOME=/ PATH=/sbin:/bin:/usr/sbin:/usr/bin ACTION=add PRODUCT=11/1/2/ab02 NAME=AT Set 2 keyboard]
input.c: hotplug returned -2
input: AT Set 2 keyboard on isa0060/serio0
i8042.c: f8 -> i8042 (kbd-data) [230]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [232]
i8042.c: ed -> i8042 (kbd-data) [233]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [236]
i8042.c: 00 -> i8042 (kbd-data) [236]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [242]
i8042.c: f4 -> i8042 (kbd-data) [242]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [245]
serio: i8042 KBD port at 0x60,0x64 irq 1
NET4: Linux TCP/IP 1.0 for NET4.0
...

> if it doesn't work, we'll have to try more changes, like
> trying to skip the AUX port detection that might confuse the chip ....

I should enhance however that it works with the old pc_keyb driver.
I don't know the internals but it may give you a hint...

> Btw, what's the exact chipset involved?

It's a Sony VAIO Picturebook C1VE, lspci:
00:00.0 Host bridge: Transmeta Corporation LongRun Northbridge
00:00.1 RAM memory: Transmeta Corporation SDRAM controller
00:00.2 RAM memory: Transmeta Corporation BIOS scratchpad
00:07.0 ISA bridge: Intel Corp. 82371AB/EB/MB PIIX4 ISA (rev 02)
00:07.1 IDE interface: Intel Corp. 82371AB/EB/MB PIIX4 IDE (rev 01)
00:07.2 USB Controller: Intel Corp. 82371AB/EB/MB PIIX4 USB (rev 01)
00:07.3 Bridge: Intel Corp. 82371AB/EB/MB PIIX4 ACPI (rev 03)
00:08.0 FireWire (IEEE 1394): Texas Instruments TSB43AA22 IEEE-1394 Controller (PHY/Link Integrated) (rev 02)
00:09.0 Multimedia audio controller: Yamaha Corporation YMF-754 [DS-1E Audio Controller]
00:0b.0 Multimedia controller: Kawasaki Steel Corporation: Unknown device ff01 (rev 01)
00:0c.0 CardBus bridge: Ricoh Co Ltd RL5c475 (rev 80)
00:0d.0 VGA compatible controller: ATI Technologies Inc Rage Mobility P/M (rev 64)

Stelian.
--
Stelian Pop <[email protected]>
Alcove - http://www.alcove.com

2002-07-17 14:26:12

by Vojtech Pavlik

[permalink] [raw]
Subject: Re: input subsystem config ?

On Wed, Jul 17, 2002 at 03:58:23PM +0200, Stelian Pop wrote:
> On Wed, Jul 17, 2002 at 03:44:48PM +0200, Vojtech Pavlik wrote:
>
> > Try this patch,
>
> It doesn't change anything:
>
> > if it doesn't work, we'll have to try more changes, like
> > trying to skip the AUX port detection that might confuse the chip ....
>
> I should enhance however that it works with the old pc_keyb driver.

Yes, I know. That's why I suggested skipping the detection, as the
pc_keyb driver doesn't do that.

Try this:

--- i8042.c.old Wed Jul 17 16:05:57 2002
+++ i8042.c Wed Jul 17 16:27:54 2002
@@ -571,6 +571,8 @@

i8042_flush();

+#if 0
+
/*
* Internal loopback test - filters out AT-type i8042's
*/
@@ -621,6 +625,11 @@
i8042_ctr &= ~I8042_CTR_AUXINT;

if (i8042_command(&i8042_ctr, I8042_CMD_CTL_WCTR))
+ return -1;
+
+#endif
+
+ if (i8042_command(&param, I8042_CMD_AUX_ENABLE))
return -1;

return 0;

> I don't know the internals but it may give you a hint...
>
> > Btw, what's the exact chipset involved?
>
> It's a Sony VAIO Picturebook C1VE, lspci:
> 00:00.0 Host bridge: Transmeta Corporation LongRun Northbridge
> 00:00.1 RAM memory: Transmeta Corporation SDRAM controller
> 00:00.2 RAM memory: Transmeta Corporation BIOS scratchpad
> 00:07.0 ISA bridge: Intel Corp. 82371AB/EB/MB PIIX4 ISA (rev 02)
> 00:07.1 IDE interface: Intel Corp. 82371AB/EB/MB PIIX4 IDE (rev 01)
> 00:07.2 USB Controller: Intel Corp. 82371AB/EB/MB PIIX4 USB (rev 01)
> 00:07.3 Bridge: Intel Corp. 82371AB/EB/MB PIIX4 ACPI (rev 03)
> 00:08.0 FireWire (IEEE 1394): Texas Instruments TSB43AA22 IEEE-1394 Controller (PHY/Link Integrated) (rev 02)
> 00:09.0 Multimedia audio controller: Yamaha Corporation YMF-754 [DS-1E Audio Controller]
> 00:0b.0 Multimedia controller: Kawasaki Steel Corporation: Unknown device ff01 (rev 01)
> 00:0c.0 CardBus bridge: Ricoh Co Ltd RL5c475 (rev 80)
> 00:0d.0 VGA compatible controller: ATI Technologies Inc Rage Mobility P/M (rev 64)

Oh my. So likely there the i8042 chip is implemented in software
entirely ...

--
Vojtech Pavlik
SuSE Labs

2002-07-17 14:52:28

by Stelian Pop

[permalink] [raw]
Subject: Re: input subsystem config ?

On Wed, Jul 17, 2002 at 04:29:04PM +0200, Vojtech Pavlik wrote:

> > I should enhance however that it works with the old pc_keyb driver.
>
> Yes, I know. That's why I suggested skipping the detection, as the
> pc_keyb driver doesn't do that.
>
> Try this:
>
> --- i8042.c.old Wed Jul 17 16:05:57 2002
> +++ i8042.c Wed Jul 17 16:27:54 2002
> @@ -571,6 +571,8 @@
>
> i8042_flush();
>
> +#if 0
[...]

Argh, with this patch, the mouse still doesn't work but I also
lose the keyboard (but keyboard press/release events are
however present in the logs...)!

[...]
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
hda: 23579136 sectors w/512KiB Cache, CHS=23392/16/63, UDMA(33)
hda: [PTBL] [1467/255/63] hda1 hda2 hda3 < hda5 hda6 >
mice: PS/2 mouse device common for all mice
i8042.c: fa <- i8042 (flush, kbd) [0]
i8042.c: 20 -> i8042 (command) [0]
i8042.c: 47 <- i8042 (return) [0]
i8042.c: 60 -> i8042 (command) [1]
i8042.c: 56 -> i8042 (parameter) [1]
i8042.c: a8 -> i8042 (command) [1]
i8042.c: 60 -> i8042 (command) [1]
i8042.c: 56 -> i8042 (parameter) [1]
serio: i8042 AUX port at 0x60,0x64 irq 12
i8042.c: 60 -> i8042 (command) [1]
i8042.c: 46 -> i8042 (parameter) [1]
serio: i8042 KBD port at 0x60,0x64 irq 1
NET4: Linux TCP/IP 1.0 for NET4.0
[...]
i8042.c: 39 <- i8042 (interrupt, kbd, 0) [96160]
i8042.c: b9 <- i8042 (interrupt, kbd, 0) [96260]
i8042.c: 39 <- i8042 (interrupt, kbd, 0) [97310]
i8042.c: b9 <- i8042 (interrupt, kbd, 0) [97410]
i8042.c: 39 <- i8042 (interrupt, kbd, 0) [102010]
i8042.c: b9 <- i8042 (interrupt, kbd, 0) [102110]

Stelian.
--
Stelian Pop <[email protected]>
Alcove - http://www.alcove.com

2002-07-17 15:19:45

by Vojtech Pavlik

[permalink] [raw]
Subject: Re: input subsystem config ?

On Wed, Jul 17, 2002 at 04:55:23PM +0200, Stelian Pop wrote:
> On Wed, Jul 17, 2002 at 04:29:04PM +0200, Vojtech Pavlik wrote:
>
> > > I should enhance however that it works with the old pc_keyb driver.
> >
> > Yes, I know. That's why I suggested skipping the detection, as the
> > pc_keyb driver doesn't do that.
> >
> > Try this:
> >
> > --- i8042.c.old Wed Jul 17 16:05:57 2002
> > +++ i8042.c Wed Jul 17 16:27:54 2002
> > @@ -571,6 +571,8 @@
> >
> > i8042_flush();
> >
> > +#if 0
> [...]
>
> Argh, with this patch, the mouse still doesn't work but I also
> lose the keyboard (but keyboard press/release events are
> however present in the logs...)!
>
> [...]
> ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
> hda: 23579136 sectors w/512KiB Cache, CHS=23392/16/63, UDMA(33)
> hda: [PTBL] [1467/255/63] hda1 hda2 hda3 < hda5 hda6 >
> mice: PS/2 mouse device common for all mice
> i8042.c: fa <- i8042 (flush, kbd) [0]
> i8042.c: 20 -> i8042 (command) [0]
> i8042.c: 47 <- i8042 (return) [0]
> i8042.c: 60 -> i8042 (command) [1]
> i8042.c: 56 -> i8042 (parameter) [1]
> i8042.c: a8 -> i8042 (command) [1]
> i8042.c: 60 -> i8042 (command) [1]
> i8042.c: 56 -> i8042 (parameter) [1]
> serio: i8042 AUX port at 0x60,0x64 irq 12
> i8042.c: 60 -> i8042 (command) [1]
> i8042.c: 46 -> i8042 (parameter) [1]
> serio: i8042 KBD port at 0x60,0x64 irq 1
> NET4: Linux TCP/IP 1.0 for NET4.0
> [...]
> i8042.c: 39 <- i8042 (interrupt, kbd, 0) [96160]
> i8042.c: b9 <- i8042 (interrupt, kbd, 0) [96260]
> i8042.c: 39 <- i8042 (interrupt, kbd, 0) [97310]
> i8042.c: b9 <- i8042 (interrupt, kbd, 0) [97410]
> i8042.c: 39 <- i8042 (interrupt, kbd, 0) [102010]
> i8042.c: b9 <- i8042 (interrupt, kbd, 0) [102110]

Are you sure you didn't change the config? Because this really looks
like if noone is actually even trying to probe. Which is quite
impossible, unless CONFIG_KEYBOARD_ATKBD and CONFIG_MOUSE_PS2 are
disabled.

--
Vojtech Pavlik
SuSE Labs

2002-07-17 15:30:42

by Stelian Pop

[permalink] [raw]
Subject: Re: input subsystem config ?

On Wed, Jul 17, 2002 at 05:22:35PM +0200, Vojtech Pavlik wrote:

> > Argh, with this patch, the mouse still doesn't work but I also
> > lose the keyboard (but keyboard press/release events are
> > however present in the logs...)!
[...]
> Are you sure you didn't change the config? Because this really looks
> like if noone is actually even trying to probe. Which is quite
> impossible, unless CONFIG_KEYBOARD_ATKBD and CONFIG_MOUSE_PS2 are
> disabled.

Of course you're correct, I must have toggled something in the input
section (the i8042 entry probably) from Y to M and that probably
turned off the other settings. Sorry for that.

Anyway, let's start over:
$ egrep "INPUT|MOUSE|KEYB|SERIO|8042" .config | grep -v ^#
CONFIG_INPUT=y
CONFIG_INPUT_KEYBDEV=y
CONFIG_INPUT_MOUSEDEV=y
CONFIG_INPUT_MOUSEDEV_PSAUX=y
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480
CONFIG_SERIO=y
CONFIG_SERIO_I8042=y
CONFIG_I8042_REG_BASE=60
CONFIG_I8042_KBD_IRQ=1
CONFIG_I8042_AUX_IRQ=12
CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_ATKBD=y
CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=y
CONFIG_USB_HIDINPUT=y

The i8042 version used is the one you send me, plus the #if 0 surrounding
the aux probe code.

Result: keyboard works, mouse still doesn't.
...
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
hda: 23579136 sectors w/512KiB Cache, CHS=23392/16/63, UDMA(33)
hda: [PTBL] [1467/255/63] hda1 hda2 hda3 < hda5 hda6 >
mice: PS/2 mouse device common for all mice
i8042.c: fa <- i8042 (flush, kbd) [0]
i8042.c: 20 -> i8042 (command) [0]
i8042.c: 47 <- i8042 (return) [0]
i8042.c: 60 -> i8042 (command) [0]
i8042.c: 56 -> i8042 (parameter) [0]
i8042.c: a8 -> i8042 (command) [0]
i8042.c: 60 -> i8042 (command) [0]
i8042.c: 56 -> i8042 (parameter) [0]
i8042.c: 60 -> i8042 (command) [1]
i8042.c: 56 -> i8042 (parameter) [1]
i8042.c: d4 -> i8042 (command) [1]
i8042.c: f6 -> i8042 (parameter) [1]
i8042.c: 60 -> i8042 (command) [1]
i8042.c: 56 -> i8042 (parameter) [1]
i8042.c: 60 -> i8042 (command) [73]
i8042.c: 54 -> i8042 (parameter) [73]
i8042.c: 60 -> i8042 (command) [73]
i8042.c: 56 -> i8042 (parameter) [73]
i8042.c: d4 -> i8042 (command) [73]
i8042.c: f5 -> i8042 (parameter) [73]
i8042.c: 60 -> i8042 (command) [74]
i8042.c: 56 -> i8042 (parameter) [74]
i8042.c: 60 -> i8042 (command) [145]
i8042.c: 54 -> i8042 (parameter) [145]
serio: i8042 AUX port at 0x60,0x64 irq 12
i8042.c: 60 -> i8042 (command) [145]
i8042.c: 44 -> i8042 (parameter) [145]
i8042.c: 60 -> i8042 (command) [145]
i8042.c: 45 -> i8042 (parameter) [145]
i8042.c: f6 -> i8042 (kbd-data) [146]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [148]
i8042.c: f2 -> i8042 (kbd-data) [149]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [151]
i8042.c: ab <- i8042 (interrupt, kbd, 1) [155]
i8042.c: 60 -> i8042 (command) [155]
i8042.c: 44 -> i8042 (parameter) [155]
i8042.c: 60 -> i8042 (command) [155]
i8042.c: 45 -> i8042 (parameter) [155]
i8042.c: f5 -> i8042 (kbd-data) [156]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [158]
i8042.c: f2 -> i8042 (kbd-data) [158]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [161]
i8042.c: ab <- i8042 (interrupt, kbd, 1) [166]
i8042.c: 41 <- i8042 (interrupt, kbd, 1) [171]
i8042.c: ea -> i8042 (kbd-data) [171]
i8042.c: fe <- i8042 (interrupt, kbd, 1) [174]
i8042.c: f0 -> i8042 (kbd-data) [174]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [177]
i8042.c: 02 -> i8042 (kbd-data) [177]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [180]
i8042.c: f0 -> i8042 (kbd-data) [180]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [182]
i8042.c: 00 -> i8042 (kbd-data) [183]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [185]
i8042.c: 41 <- i8042 (interrupt, kbd, 1) [188]
input.c: calling /sbin/hotplug input [HOME=/ PATH=/sbin:/bin:/usr/sbin:/usr/bin ACTION=add PRODUCT=11/1/2/ab02 NAME=AT Set 2 keyboard]
input.c: hotplug returned -2
input: AT Set 2 keyboard on isa0060/serio0
i8042.c: f8 -> i8042 (kbd-data) [191]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [194]
i8042.c: ed -> i8042 (kbd-data) [194]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [197]
i8042.c: 00 -> i8042 (kbd-data) [198]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [203]
i8042.c: f4 -> i8042 (kbd-data) [203]
i8042.c: fa <- i8042 (interrupt, kbd, 1) [206]
serio: i8042 KBD port at 0x60,0x64 irq 1
NET4: Linux TCP/IP 1.0 for NET4.0
...

Stelian.
--
Stelian Pop <[email protected]>
Alcove - http://www.alcove.com

2002-07-18 14:38:45

by Stelian Pop

[permalink] [raw]
Subject: Re: input subsystem config ?

On Wed, Jul 17, 2002 at 05:33:36PM +0200, Stelian Pop wrote:

> The i8042 version used is the one you send me, plus the #if 0 surrounding
> the aux probe code.
>
> Result: keyboard works, mouse still doesn't.
[...]

Ok, I've hacked a bit on the input drivers (trying to look at the
differences between the pc_keyb.c and the new initialisation sequences),
with some limited success.

What I found out is that the mouse is not responding to any of
the commands in psmouse.c:psmouse_probe. However, if I comment out
the 'return -1' statements from this function, the mouse will
be recognised as a default PS/2 mouse.

Later, in psmouse_initialise, the PSMOUSE_CMD_ENABLE will fail too
(no response from the mouse). But since the error is not propagated
to serio the device remains registered.

And later, the mouse will get enabled somehow and will function
perfectly. I didn't succed in finding out what exactly enables it,
even if I strongly suspect some interraction between the keyboard
enable and aux port enable...

Any further idea ?

What I also did, maybe you'll find this interesting, is recording
the events sent by the pc_keyb.c driver to the i8042 port (by tracing
the inb/outb in include/asm-i386/keyboard.h):

kbd_read_status: 1c
kbd_write_command: a7
kbd_read_status: 1e
kbd_read_status: 1c
kbd_write_command: 60
kbd_read_status: 1e
kbd_read_status: 1c
kbd_write_output: 65
kbd_read_status: 14
kbd_write_output: ed
kbd_read_status: 15
kbd_read_input: fa
kbd_read_status: 14
kbd_read_status: 14
kbd_write_output: 00
kbd_read_status: 15
kbd_read_input: fa
kbd_read_status: 14
kbd_read_status: 14
kbd_write_command: a8
kbd_read_status: 1c
kbd_write_command: d4
kbd_read_status: 1e
kbd_read_status: 1c
kbd_write_output: f4
kbd_read_status: 14
kbd_read_status: 14
kbd_write_command: 60
kbd_read_status: 1e
kbd_read_status: 3d
kbd_read_input: fa
kbd_read_status: 3c
kbd_write_output: 47
kbd_read_status: 34
kbd_write_output: f4
kbd_read_status: 15
kbd_read_input: fa
kbd_read_status: 14
kbd_read_status: 14
kbd_write_command: d4
kbd_read_status: 1e
kbd_read_status: 1c
kbd_write_output: ffffffff
kbd_read_status: 35
kbd_read_input: fa
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: aa
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 00
kbd_read_status: 34
kbd_read_status: 34
kbd_write_command: d4
kbd_read_status: 3e
kbd_read_status: 3c
kbd_write_output: fffffff4
kbd_read_status: 35
kbd_read_input: fa
kbd_read_status: 34
kbd_read_status: 34
kbd_write_command: d4
kbd_read_status: 3e
kbd_read_status: 3c
kbd_write_output: fffffff2
kbd_read_status: 35
kbd_read_input: fa
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 00
kbd_read_status: 34
kbd_read_status: 34
kbd_write_command: d4
kbd_read_status: 3e
kbd_read_status: 3c
kbd_write_output: fffffff3
kbd_read_status: 35
kbd_read_input: fa
kbd_read_status: 34
kbd_read_status: 34
kbd_write_command: d4
kbd_read_status: 3e
kbd_read_status: 3c
kbd_write_output: ffffffc8
kbd_read_status: 35
kbd_read_input: fa
kbd_read_status: 34
kbd_read_status: 34
kbd_write_command: d4
kbd_read_status: 3e
kbd_read_status: 3c
kbd_write_output: fffffff3
kbd_read_status: 35
kbd_read_input: fa
kbd_read_status: 34
kbd_read_status: 34
kbd_write_command: d4
kbd_read_status: 3e
kbd_read_status: 3c
kbd_write_output: 64
kbd_read_status: 35
kbd_read_input: fa
kbd_read_status: 34
kbd_read_status: 34
kbd_write_command: d4
kbd_read_status: 3e
kbd_read_status: 3c
kbd_write_output: fffffff3
kbd_read_status: 35
kbd_read_input: fa
kbd_read_status: 34
kbd_read_status: 34
kbd_write_command: d4
kbd_read_status: 3e
kbd_read_status: 3c
kbd_write_output: 50
kbd_read_status: 35
kbd_read_input: fa
kbd_read_status: 34
kbd_read_status: 34
kbd_write_command: d4
kbd_read_status: 3e
kbd_read_status: 3c
kbd_write_output: fffffff2
kbd_read_status: 35
kbd_read_input: fa
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 00
kbd_read_status: 34
kbd_read_status: 34
kbd_write_command: d4
kbd_read_status: 3e
kbd_read_status: 3c
kbd_write_output: ffffffff
kbd_read_status: 35
kbd_read_input: fa
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: aa
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 00
kbd_read_status: 34
kbd_read_status: 34
kbd_write_command: d4
kbd_read_status: 3e
kbd_read_status: 3c
kbd_write_output: fffffff4
kbd_read_status: 35
kbd_read_input: fa
kbd_read_status: 34
kbd_read_status: 34
kbd_write_command: d4
kbd_read_status: 3e
kbd_read_status: 3c
kbd_write_output: fffffff2
kbd_read_status: 35
kbd_read_input: fa
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 00
kbd_read_status: 34
kbd_read_status: 34
kbd_write_command: 60
kbd_read_status: 3e
kbd_read_status: 3c
kbd_write_output: 65
kbd_read_status: 34
kbd_write_command: a7
kbd_read_status: 3c
kbd_write_command: a8
kbd_read_status: 3e
kbd_read_status: 3c
kbd_write_command: d4
kbd_read_status: 3e
kbd_read_status: 3c
kbd_write_output: f4
kbd_read_status: 34
kbd_read_status: 34
kbd_write_command: 60
kbd_read_status: 3e
kbd_read_status: 3d
kbd_read_input: fa
kbd_read_status: 3c
kbd_write_output: 47
kbd_read_status: 34
kbd_write_output: f4
kbd_read_status: 15
kbd_read_input: fa
kbd_read_status: 14
kbd_read_status: 15
kbd_read_input: 22
kbd_read_status: 14
kbd_read_status: 15
kbd_read_input: a2
kbd_read_status: 14
kbd_read_status: 15
kbd_read_input: 22
kbd_read_status: 14
kbd_read_status: 15
kbd_read_input: a2
kbd_read_status: 14
kbd_read_status: 35
kbd_read_input: 08
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 02
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 00
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 08
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 01
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 01
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 08
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 03
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 00
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 08
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 05
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 01
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 08
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 06
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 00
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 08
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 05
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 00
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 08
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 08
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 00
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 08
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 09
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 00
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 08
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 08
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 00
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 08
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 08
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 00
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 08
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 09
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 00
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 28
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 08
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: ff
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 08
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 09
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 00
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 08
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 0a
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 00
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 08
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 0a
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 00
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 08
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 08
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 00
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 28
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 06
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: ff
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 08
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 05
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 00
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 08
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 04
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 00
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 08
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 01
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 00
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 08
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 05
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 00
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 08
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 04
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 01
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 08
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 01
kbd_read_status: 34
kbd_read_status: 35
kbd_read_input: 00
kbd_read_status: 34
Stelian.
--
Stelian Pop <[email protected]>
Alcove - http://www.alcove.com

2002-07-18 14:42:48

by Vojtech Pavlik

[permalink] [raw]
Subject: Re: input subsystem config ?

On Thu, Jul 18, 2002 at 04:41:30PM +0200, Stelian Pop wrote:
> On Wed, Jul 17, 2002 at 05:33:36PM +0200, Stelian Pop wrote:
>
> > The i8042 version used is the one you send me, plus the #if 0 surrounding
> > the aux probe code.
> >
> > Result: keyboard works, mouse still doesn't.
> [...]
>
> Ok, I've hacked a bit on the input drivers (trying to look at the
> differences between the pc_keyb.c and the new initialisation sequences),
> with some limited success.
>
> What I found out is that the mouse is not responding to any of
> the commands in psmouse.c:psmouse_probe. However, if I comment out
> the 'return -1' statements from this function, the mouse will
> be recognised as a default PS/2 mouse.
>
> Later, in psmouse_initialise, the PSMOUSE_CMD_ENABLE will fail too
> (no response from the mouse). But since the error is not propagated
> to serio the device remains registered.
>
> And later, the mouse will get enabled somehow and will function
> perfectly. I didn't succed in finding out what exactly enables it,
> even if I strongly suspect some interraction between the keyboard
> enable and aux port enable...
>
> Any further idea ?

Yes. Can you try, with i8042 debugging enabled, after the kernel boots,
moving the mouse? I suspect the data will appear in the log ...

>
> What I also did, maybe you'll find this interesting, is recording
> the events sent by the pc_keyb.c driver to the i8042 port (by tracing
> the inb/outb in include/asm-i386/keyboard.h):
>
> kbd_read_status: 1c
> kbd_write_command: a7
> kbd_read_status: 1e
> kbd_read_status: 1c
> kbd_write_command: 60
> kbd_read_status: 1e
> kbd_read_status: 1c
> kbd_write_output: 65
> kbd_read_status: 14
> kbd_write_output: ed
> kbd_read_status: 15
> kbd_read_input: fa
> kbd_read_status: 14
> kbd_read_status: 14
> kbd_write_output: 00
> kbd_read_status: 15
> kbd_read_input: fa
> kbd_read_status: 14
> kbd_read_status: 14
> kbd_write_command: a8
> kbd_read_status: 1c
> kbd_write_command: d4
> kbd_read_status: 1e
> kbd_read_status: 1c
> kbd_write_output: f4
> kbd_read_status: 14
> kbd_read_status: 14
> kbd_write_command: 60
> kbd_read_status: 1e
> kbd_read_status: 3d
> kbd_read_input: fa
> kbd_read_status: 3c
> kbd_write_output: 47
> kbd_read_status: 34
> kbd_write_output: f4
> kbd_read_status: 15
> kbd_read_input: fa
> kbd_read_status: 14
> kbd_read_status: 14
> kbd_write_command: d4
> kbd_read_status: 1e
> kbd_read_status: 1c
> kbd_write_output: ffffffff
> kbd_read_status: 35
> kbd_read_input: fa
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: aa
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 00
> kbd_read_status: 34
> kbd_read_status: 34
> kbd_write_command: d4
> kbd_read_status: 3e
> kbd_read_status: 3c
> kbd_write_output: fffffff4
> kbd_read_status: 35
> kbd_read_input: fa
> kbd_read_status: 34
> kbd_read_status: 34
> kbd_write_command: d4
> kbd_read_status: 3e
> kbd_read_status: 3c
> kbd_write_output: fffffff2
> kbd_read_status: 35
> kbd_read_input: fa
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 00
> kbd_read_status: 34
> kbd_read_status: 34
> kbd_write_command: d4
> kbd_read_status: 3e
> kbd_read_status: 3c
> kbd_write_output: fffffff3
> kbd_read_status: 35
> kbd_read_input: fa
> kbd_read_status: 34
> kbd_read_status: 34
> kbd_write_command: d4
> kbd_read_status: 3e
> kbd_read_status: 3c
> kbd_write_output: ffffffc8
> kbd_read_status: 35
> kbd_read_input: fa
> kbd_read_status: 34
> kbd_read_status: 34
> kbd_write_command: d4
> kbd_read_status: 3e
> kbd_read_status: 3c
> kbd_write_output: fffffff3
> kbd_read_status: 35
> kbd_read_input: fa
> kbd_read_status: 34
> kbd_read_status: 34
> kbd_write_command: d4
> kbd_read_status: 3e
> kbd_read_status: 3c
> kbd_write_output: 64
> kbd_read_status: 35
> kbd_read_input: fa
> kbd_read_status: 34
> kbd_read_status: 34
> kbd_write_command: d4
> kbd_read_status: 3e
> kbd_read_status: 3c
> kbd_write_output: fffffff3
> kbd_read_status: 35
> kbd_read_input: fa
> kbd_read_status: 34
> kbd_read_status: 34
> kbd_write_command: d4
> kbd_read_status: 3e
> kbd_read_status: 3c
> kbd_write_output: 50
> kbd_read_status: 35
> kbd_read_input: fa
> kbd_read_status: 34
> kbd_read_status: 34
> kbd_write_command: d4
> kbd_read_status: 3e
> kbd_read_status: 3c
> kbd_write_output: fffffff2
> kbd_read_status: 35
> kbd_read_input: fa
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 00
> kbd_read_status: 34
> kbd_read_status: 34
> kbd_write_command: d4
> kbd_read_status: 3e
> kbd_read_status: 3c
> kbd_write_output: ffffffff
> kbd_read_status: 35
> kbd_read_input: fa
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: aa
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 00
> kbd_read_status: 34
> kbd_read_status: 34
> kbd_write_command: d4
> kbd_read_status: 3e
> kbd_read_status: 3c
> kbd_write_output: fffffff4
> kbd_read_status: 35
> kbd_read_input: fa
> kbd_read_status: 34
> kbd_read_status: 34
> kbd_write_command: d4
> kbd_read_status: 3e
> kbd_read_status: 3c
> kbd_write_output: fffffff2
> kbd_read_status: 35
> kbd_read_input: fa
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 00
> kbd_read_status: 34
> kbd_read_status: 34
> kbd_write_command: 60
> kbd_read_status: 3e
> kbd_read_status: 3c
> kbd_write_output: 65
> kbd_read_status: 34
> kbd_write_command: a7
> kbd_read_status: 3c
> kbd_write_command: a8
> kbd_read_status: 3e
> kbd_read_status: 3c
> kbd_write_command: d4
> kbd_read_status: 3e
> kbd_read_status: 3c
> kbd_write_output: f4
> kbd_read_status: 34
> kbd_read_status: 34
> kbd_write_command: 60
> kbd_read_status: 3e
> kbd_read_status: 3d
> kbd_read_input: fa
> kbd_read_status: 3c
> kbd_write_output: 47
> kbd_read_status: 34
> kbd_write_output: f4
> kbd_read_status: 15
> kbd_read_input: fa
> kbd_read_status: 14
> kbd_read_status: 15
> kbd_read_input: 22
> kbd_read_status: 14
> kbd_read_status: 15
> kbd_read_input: a2
> kbd_read_status: 14
> kbd_read_status: 15
> kbd_read_input: 22
> kbd_read_status: 14
> kbd_read_status: 15
> kbd_read_input: a2
> kbd_read_status: 14
> kbd_read_status: 35
> kbd_read_input: 08
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 02
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 00
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 08
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 01
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 01
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 08
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 03
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 00
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 08
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 05
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 01
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 08
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 06
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 00
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 08
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 05
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 00
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 08
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 08
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 00
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 08
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 09
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 00
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 08
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 08
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 00
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 08
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 08
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 00
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 08
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 09
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 00
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 28
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 08
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: ff
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 08
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 09
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 00
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 08
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 0a
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 00
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 08
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 0a
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 00
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 08
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 08
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 00
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 28
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 06
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: ff
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 08
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 05
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 00
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 08
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 04
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 00
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 08
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 01
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 00
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 08
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 05
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 00
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 08
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 04
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 01
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 08
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 01
> kbd_read_status: 34
> kbd_read_status: 35
> kbd_read_input: 00
> kbd_read_status: 34
> Stelian.
> --
> Stelian Pop <[email protected]>
> Alcove - http://www.alcove.com

--
Vojtech Pavlik
SuSE Labs

2002-07-18 14:45:43

by Stelian Pop

[permalink] [raw]
Subject: Re: input subsystem config ?

On Thu, Jul 18, 2002 at 04:45:36PM +0200, Vojtech Pavlik wrote:

> On Thu, Jul 18, 2002 at 04:41:30PM +0200, Stelian Pop wrote:
> > On Wed, Jul 17, 2002 at 05:33:36PM +0200, Stelian Pop wrote:
> >
> > > The i8042 version used is the one you send me, plus the #if 0 surrounding
> > > the aux probe code.
> > >
> > > Result: keyboard works, mouse still doesn't.
> > [...]
> >
> > Ok, I've hacked a bit on the input drivers (trying to look at the
> > differences between the pc_keyb.c and the new initialisation sequences),
> > with some limited success.
> >
> > What I found out is that the mouse is not responding to any of
> > the commands in psmouse.c:psmouse_probe. However, if I comment out
> > the 'return -1' statements from this function, the mouse will
> > be recognised as a default PS/2 mouse.
> >
> > Later, in psmouse_initialise, the PSMOUSE_CMD_ENABLE will fail too
> > (no response from the mouse). But since the error is not propagated
> > to serio the device remains registered.
> >
> > And later, the mouse will get enabled somehow and will function
> > perfectly. I didn't succed in finding out what exactly enables it,
> > even if I strongly suspect some interraction between the keyboard
> > enable and aux port enable...
> >
> > Any further idea ?
>
> Yes. Can you try, with i8042 debugging enabled, after the kernel boots,
> moving the mouse? I suspect the data will appear in the log ...

Maybe I wasn't very clear, but if I disable the 'return -1', the mouse
will work, and the debugging data is like in:
...
i8042.c: 08 <- i8042 (interrupt, aux, 12) [627526]
i8042.c: 03 <- i8042 (interrupt, aux, 12) [627527]
i8042.c: 00 <- i8042 (interrupt, aux, 12) [627528]
...

If I do not disable the 'return -1', the mouse will not be found at
all, and moving it will get no messages in the logs...

Stelian.
--
Stelian Pop <[email protected]>
Alcove - http://www.alcove.com

2002-07-18 15:12:40

by Vojtech Pavlik

[permalink] [raw]
Subject: Re: input subsystem config ?

On Thu, Jul 18, 2002 at 04:48:38PM +0200, Stelian Pop wrote:

> > > Any further idea ?
> >
> > Yes. Can you try, with i8042 debugging enabled, after the kernel boots,
> > moving the mouse? I suspect the data will appear in the log ...
>
> Maybe I wasn't very clear, but if I disable the 'return -1', the mouse
> will work, and the debugging data is like in:
> ...
> i8042.c: 08 <- i8042 (interrupt, aux, 12) [627526]
> i8042.c: 03 <- i8042 (interrupt, aux, 12) [627527]
> i8042.c: 00 <- i8042 (interrupt, aux, 12) [627528]
> ...
>
> If I do not disable the 'return -1', the mouse will not be found at
> all, and moving it will get no messages in the logs...

Ok, that's what I wanted to know - I was wondering whether the mouse
would simply ignore all control commands. And it doesn't not. It needs
the commands, but doesn't send any replies.

Can you check what happens if you use an external mouse together with
the internal one?

I suspect both will work OK.

--
Vojtech Pavlik
SuSE Labs

2002-07-18 15:25:36

by Stelian Pop

[permalink] [raw]
Subject: Re: input subsystem config ?

On Thu, Jul 18, 2002 at 05:15:31PM +0200, Vojtech Pavlik wrote:

> > If I do not disable the 'return -1', the mouse will not be found at
> > all, and moving it will get no messages in the logs...
>
> Ok, that's what I wanted to know - I was wondering whether the mouse
> would simply ignore all control commands. And it doesn't not. It needs
> the commands,

I'm not sure about that. It will not work if I do not disable the
'return -1' because the irq will get freed, so the driver will have
no chance to get any mouse event.

> but doesn't send any replies.

Maybe I should put some debug statements in the pc_keyb.c interrupt
handler and see if the mouse does answer the control commands ?

> Can you check what happens if you use an external mouse together with
> the internal one?
>
> I suspect both will work OK.

External like in 'external PS/2' mouse ? Bad luck, this laptop
has no PS/2 (or serial) port. :-(

I can plug in a USB mouse, but I doubt it will show any useful
information...

Stelian.
--
Stelian Pop <[email protected]>
Alcove - http://www.alcove.com

2002-07-18 15:28:41

by Vojtech Pavlik

[permalink] [raw]
Subject: Re: input subsystem config ?

On Thu, Jul 18, 2002 at 05:28:29PM +0200, Stelian Pop wrote:
> On Thu, Jul 18, 2002 at 05:15:31PM +0200, Vojtech Pavlik wrote:
>
> > > If I do not disable the 'return -1', the mouse will not be found at
> > > all, and moving it will get no messages in the logs...
> >
> > Ok, that's what I wanted to know - I was wondering whether the mouse
> > would simply ignore all control commands. And it doesn't not. It needs
> > the commands,
>
> I'm not sure about that. It will not work if I do not disable the
> 'return -1' because the irq will get freed, so the driver will have
> no chance to get any mouse event.

Actually, no. It also polls the chip repeatedly without needing an irq,
so it can receive bytes even when no irq happens.

> > but doesn't send any replies.
>
> Maybe I should put some debug statements in the pc_keyb.c interrupt
> handler and see if the mouse does answer the control commands ?

That's a good idea, yes.

> > Can you check what happens if you use an external mouse together with
> > the internal one?
> >
> > I suspect both will work OK.
>
> External like in 'external PS/2' mouse ? Bad luck, this laptop
> has no PS/2 (or serial) port. :-(

Ok.

> I can plug in a USB mouse, but I doubt it will show any useful
> information...

No, it won't.

--
Vojtech Pavlik
SuSE Labs

2002-07-18 16:00:17

by Stelian Pop

[permalink] [raw]
Subject: Re: input subsystem config ?

On Thu, Jul 18, 2002 at 05:31:32PM +0200, Vojtech Pavlik wrote:

> > I'm not sure about that. It will not work if I do not disable the
> > 'return -1' because the irq will get freed, so the driver will have
> > no chance to get any mouse event.
>
> Actually, no. It also polls the chip repeatedly without needing an irq,
> so it can receive bytes even when no irq happens.

Ok, tried again and I confirm again, no events from the mouse.

> > Maybe I should put some debug statements in the pc_keyb.c interrupt
> > handler and see if the mouse does answer the control commands ?
>
> That's a good idea, yes.

Ok, the mouse seems to answer the control commands. See the
attached files:
DIFFS: the diffs I made to put tracing into
include/asm-i386/keyboard.h and drivers/char/pc_keyb.c
DMESG-INPUT: kernel logs when input drivers are activated
DMESG-NOINPUT: good old pc_keyb.c driver :-)

At the end of each DMESG files I tried to type on the keyboard and
move the mouse. In the first you have only the keyboard events, in
the second both of them.

Stelian.
--
Stelian Pop <[email protected]>
Alcove - http://www.alcove.com


Attachments:
(No filename) (1.11 kB)
DIFFS (2.94 kB)
DMESG-INPUT (10.97 kB)
DMESG-NOINPUT (18.10 kB)
Download all attachments

2002-07-19 14:33:03

by Stelian Pop

[permalink] [raw]
Subject: Re: input subsystem config ?

On Thu, Jul 18, 2002 at 05:31:32PM +0200, Vojtech Pavlik wrote:

> > > Ok, that's what I wanted to know - I was wondering whether the mouse
> > > would simply ignore all control commands. And it doesn't not. It needs
> > > the commands,
[...]

Ok, I've finally found out what's happenning: in i8042_aux_write()
you restore the CTR value each time. For some obscure reasons, my
laptop's controller does not like this at all. Disabling this
section makes the mouse function perfectly.

Is this CTR restore command really needed ? If it is, we should
probably add an option like "i8042_noctrrestore=1" to the i8042
driver...

Or maybe you have a better idea...

Stelian.

===== drivers/input/serio/i8042.c 1.5 vs edited =====
--- 1.5/drivers/input/serio/i8042.c Sat Jul 13 20:31:00 2002
+++ edited/drivers/input/serio/i8042.c Fri Jul 19 15:36:09 2002
@@ -221,12 +221,16 @@

retval = i8042_command(&c, I8042_CMD_AUX_SEND);

+#if 0
/*
* Here we restore the CTR value. I don't know why, but i8042's in half-AT
* mode tend to trash their CTR when doing the AUX_SEND command.
+ *
+ * However, for some reasons this breaks (at least) my Sony VAIO C1VE
+ * aux interface.
*/
-
retval |= i8042_command(&i8042_ctr, I8042_CMD_CTL_WCTR);
+#endif

/*
* Make sure the interrupt happens and the character is received even
--
Stelian Pop <[email protected]>
Alcove - http://www.alcove.com

2002-07-19 19:29:21

by Vojtech Pavlik

[permalink] [raw]
Subject: Re: input subsystem config ?

On Fri, Jul 19, 2002 at 04:36:02PM +0200, Stelian Pop wrote:
> On Thu, Jul 18, 2002 at 05:31:32PM +0200, Vojtech Pavlik wrote:
>
> > > > Ok, that's what I wanted to know - I was wondering whether the mouse
> > > > would simply ignore all control commands. And it doesn't not. It needs
> > > > the commands,
> [...]
>
> Ok, I've finally found out what's happenning: in i8042_aux_write()
> you restore the CTR value each time. For some obscure reasons, my
> laptop's controller does not like this at all. Disabling this
> section makes the mouse function perfectly.
>
> Is this CTR restore command really needed ? If it is, we should
> probably add an option like "i8042_noctrrestore=1" to the i8042
> driver...

Thanks a lot for finding this! I thnk we can remove it for now, or
actually add a reverse option to force the restore only if needed - most
machines don't need it.

I'm doing the change immediately.

> Or maybe you have a better idea...
>
> Stelian.
>
> ===== drivers/input/serio/i8042.c 1.5 vs edited =====
> --- 1.5/drivers/input/serio/i8042.c Sat Jul 13 20:31:00 2002
> +++ edited/drivers/input/serio/i8042.c Fri Jul 19 15:36:09 2002
> @@ -221,12 +221,16 @@
>
> retval = i8042_command(&c, I8042_CMD_AUX_SEND);
>
> +#if 0
> /*
> * Here we restore the CTR value. I don't know why, but i8042's in half-AT
> * mode tend to trash their CTR when doing the AUX_SEND command.
> + *
> + * However, for some reasons this breaks (at least) my Sony VAIO C1VE
> + * aux interface.
> */
> -
> retval |= i8042_command(&i8042_ctr, I8042_CMD_CTL_WCTR);
> +#endif
>
> /*
> * Make sure the interrupt happens and the character is received even
> --
> Stelian Pop <[email protected]>
> Alcove - http://www.alcove.com

--
Vojtech Pavlik
SuSE Labs