* RE: [PATCH 24/44] Workaround i8042 chips with broken MUX mode
@ 2004-03-16 18:24 Dmitry Torokhov
2004-03-18 20:37 ` Vojtech Pavlik
` (2 more replies)
0 siblings, 3 replies; 12+ messages in thread
From: Dmitry Torokhov @ 2004-03-16 18:24 UTC (permalink / raw)
To: Vojtech Pavlik, torvalds, vojtech, linux-kernel
Vojtech Pavlik wrote:
> +
> + /* Workaround for broken chips which seem to
support MUX, but in reality don't. */
> + /* They all report version 12.10 */
> + if (mux_version == 0xCA)
> + return -1;
Hi,
I think it should be 0xAC (0xA4 with 4th bit flipped)
as the version reported is 10.12:
i8042.c: Detected active multiplexing controller, rev
10.12.
>From little debug info that I've been sent ThinkPad's
controllers seem to be flipping 4th bit sometimes, I
can't quite pinpoint the exact sequence.
Dmitry
P.S. Sorry for breaking the threading...
^ permalink raw reply [flat|nested] 12+ messages in thread* Re: [PATCH 24/44] Workaround i8042 chips with broken MUX mode
2004-03-16 18:24 [PATCH 24/44] Workaround i8042 chips with broken MUX mode Dmitry Torokhov
@ 2004-03-18 20:37 ` Vojtech Pavlik
[not found] ` <200403190005.36956.dtor_core@ameritech.net>
2004-03-19 13:56 ` Vojtech Pavlik
2004-03-28 0:29 ` Andries Brouwer
2 siblings, 1 reply; 12+ messages in thread
From: Vojtech Pavlik @ 2004-03-18 20:37 UTC (permalink / raw)
To: Dmitry Torokhov; +Cc: Vojtech Pavlik, torvalds, linux-kernel
On Tue, Mar 16, 2004 at 10:24:09AM -0800, Dmitry Torokhov wrote:
> Vojtech Pavlik wrote:
> > +
> > + /* Workaround for broken chips which seem to
> support MUX, but in reality don't. */
> > + /* They all report version 12.10 */
> > + if (mux_version == 0xCA)
> > + return -1;
>
> Hi,
>
> I think it should be 0xAC (0xA4 with 4th bit flipped)
> as the version reported is 10.12:
>
> i8042.c: Detected active multiplexing controller, rev
> 10.12.
>
> From little debug info that I've been sent ThinkPad's
> controllers seem to be flipping 4th bit sometimes, I
> can't quite pinpoint the exact sequence.
Could this be the bit that indicates whether the report is coming from
an internal or external device?
--
Vojtech Pavlik
SuSE Labs, SuSE CR
^ permalink raw reply [flat|nested] 12+ messages in thread* Re: [PATCH 24/44] Workaround i8042 chips with broken MUX mode
2004-03-16 18:24 [PATCH 24/44] Workaround i8042 chips with broken MUX mode Dmitry Torokhov
2004-03-18 20:37 ` Vojtech Pavlik
@ 2004-03-19 13:56 ` Vojtech Pavlik
2004-03-28 0:29 ` Andries Brouwer
2 siblings, 0 replies; 12+ messages in thread
From: Vojtech Pavlik @ 2004-03-19 13:56 UTC (permalink / raw)
To: Dmitry Torokhov; +Cc: Vojtech Pavlik, torvalds, linux-kernel
On Tue, Mar 16, 2004 at 10:24:09AM -0800, Dmitry Torokhov wrote:
> Vojtech Pavlik wrote:
> > +
> > + /* Workaround for broken chips which seem to
> support MUX, but in reality don't. */
> > + /* They all report version 12.10 */
> > + if (mux_version == 0xCA)
> > + return -1;
>
> Hi,
>
> I think it should be 0xAC (0xA4 with 4th bit flipped)
> as the version reported is 10.12:
>
> i8042.c: Detected active multiplexing controller, rev
> 10.12.
>
> From little debug info that I've been sent ThinkPad's
> controllers seem to be flipping 4th bit sometimes, I
> can't quite pinpoint the exact sequence.
Thanks, fixed.
--
Vojtech Pavlik
SuSE Labs, SuSE CR
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 24/44] Workaround i8042 chips with broken MUX mode
2004-03-16 18:24 [PATCH 24/44] Workaround i8042 chips with broken MUX mode Dmitry Torokhov
2004-03-18 20:37 ` Vojtech Pavlik
2004-03-19 13:56 ` Vojtech Pavlik
@ 2004-03-28 0:29 ` Andries Brouwer
2004-03-28 0:40 ` Dmitry Torokhov
2 siblings, 1 reply; 12+ messages in thread
From: Andries Brouwer @ 2004-03-28 0:29 UTC (permalink / raw)
To: Dmitry Torokhov; +Cc: Vojtech Pavlik, torvalds, vojtech, linux-kernel
On Tue, Mar 16, 2004 at 10:24:09AM -0800, Dmitry Torokhov wrote:
> Vojtech Pavlik wrote:
> > + /* Workaround for broken chips which seem to
> support MUX, but in reality don't. */
Why call them "broken"? Better to delete that word.
> > + /* They all report version 12.10 */
> > + if (mux_version == 0xCA)
> > + return -1;
>
> I think it should be 0xAC (0xA4 with 4th bit flipped)
> as the version reported is 10.12.
Yes. I have seen one such report. Have there been more?
The Synaptics multiplexing proposal uses 0xf0, 0x56, 0xa4
to activate and 0xf0, 0x56, 0xa5 to deactivate.
In both cases the replies must be 0xf0, 0x56, version.
Thus, I suppose one might get a more robust detection
by checking that both the activation and deactivation
sequences yield the same version.
Andries
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 24/44] Workaround i8042 chips with broken MUX mode
2004-03-28 0:29 ` Andries Brouwer
@ 2004-03-28 0:40 ` Dmitry Torokhov
2004-03-28 1:25 ` Andries Brouwer
2004-03-28 7:45 ` Stefan Smietanowski
0 siblings, 2 replies; 12+ messages in thread
From: Dmitry Torokhov @ 2004-03-28 0:40 UTC (permalink / raw)
To: Andries Brouwer; +Cc: Vojtech Pavlik, torvalds, vojtech, linux-kernel
On Saturday 27 March 2004 07:29 pm, Andries Brouwer wrote:
> On Tue, Mar 16, 2004 at 10:24:09AM -0800, Dmitry Torokhov wrote:
> > Vojtech Pavlik wrote:
>
> > > + /* Workaround for broken chips which seem to
> > support MUX, but in reality don't. */
>
> Why call them "broken"? Better to delete that word.
>
> > > + /* They all report version 12.10 */
> > > + if (mux_version == 0xCA)
> > > + return -1;
> >
> > I think it should be 0xAC (0xA4 with 4th bit flipped)
> > as the version reported is 10.12.
>
> Yes. I have seen one such report. Have there been more?
>
As it turned out its not the chip but USB legacy emulation that
gets in the way of synaptics query. Actually alot of problems were
linked to broken legacy emulation implementations, Vojtech mentioned
that PCI quirk to turn legacy emulation off may be appropriate.
> The Synaptics multiplexing proposal uses 0xf0, 0x56, 0xa4
> to activate and 0xf0, 0x56, 0xa5 to deactivate.
> In both cases the replies must be 0xf0, 0x56, version.
>
> Thus, I suppose one might get a more robust detection
> by checking that both the activation and deactivation
> sequences yield the same version.
>
Unfortunately in this particular case it looks like something flips
4th bit on some (but not all, like every 3rd) bytes, so it may very
well respond with 0xAC to both queries.
--
Dmitry
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 24/44] Workaround i8042 chips with broken MUX mode
2004-03-28 0:40 ` Dmitry Torokhov
@ 2004-03-28 1:25 ` Andries Brouwer
2004-03-28 3:11 ` Dmitry Torokhov
2004-03-28 7:45 ` Stefan Smietanowski
1 sibling, 1 reply; 12+ messages in thread
From: Andries Brouwer @ 2004-03-28 1:25 UTC (permalink / raw)
To: Dmitry Torokhov
Cc: Andries Brouwer, Vojtech Pavlik, torvalds, vojtech, linux-kernel
On Sat, Mar 27, 2004 at 07:40:39PM -0500, Dmitry Torokhov wrote:
> > The Synaptics multiplexing proposal uses 0xf0, 0x56, 0xa4
> > to activate and 0xf0, 0x56, 0xa5 to deactivate.
> > In both cases the replies must be 0xf0, 0x56, version.
> >
> > Thus, I suppose one might get a more robust detection
> > by checking that both the activation and deactivation
> > sequences yield the same version.
> >
>
> Unfortunately in this particular case it looks like something flips
> 4th bit on some (but not all, like every 3rd) bytes, so it may very
> well respond with 0xAC to both queries.
If one flips that bit on 0xa5 the result is 0xad, not 0xac.
That the bit is set is not strange.
The standard PS/2 protocol requires bit 3 in the first word of
every 3-byte packet to be 1.
Andries
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 24/44] Workaround i8042 chips with broken MUX mode
2004-03-28 1:25 ` Andries Brouwer
@ 2004-03-28 3:11 ` Dmitry Torokhov
0 siblings, 0 replies; 12+ messages in thread
From: Dmitry Torokhov @ 2004-03-28 3:11 UTC (permalink / raw)
To: Andries Brouwer; +Cc: Vojtech Pavlik, torvalds, vojtech, linux-kernel
On Saturday 27 March 2004 08:25 pm, Andries Brouwer wrote:
> On Sat, Mar 27, 2004 at 07:40:39PM -0500, Dmitry Torokhov wrote:
>
> > > The Synaptics multiplexing proposal uses 0xf0, 0x56, 0xa4
> > > to activate and 0xf0, 0x56, 0xa5 to deactivate.
> > > In both cases the replies must be 0xf0, 0x56, version.
> > >
> > > Thus, I suppose one might get a more robust detection
> > > by checking that both the activation and deactivation
> > > sequences yield the same version.
> > >
> >
> > Unfortunately in this particular case it looks like something flips
> > 4th bit on some (but not all, like every 3rd) bytes, so it may very
> > well respond with 0xAC to both queries.
>
> If one flips that bit on 0xa5 the result is 0xad, not 0xac.
Yes, you are right.
>
> That the bit is set is not strange.
> The standard PS/2 protocol requires bit 3 in the first word of
> every 3-byte packet to be 1.
If it did it in every 3rd byte and not in response to loopback requiest
but to real data stream coming from a device I would agree...
--
Dmitry
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 24/44] Workaround i8042 chips with broken MUX mode
2004-03-28 0:40 ` Dmitry Torokhov
2004-03-28 1:25 ` Andries Brouwer
@ 2004-03-28 7:45 ` Stefan Smietanowski
1 sibling, 0 replies; 12+ messages in thread
From: Stefan Smietanowski @ 2004-03-28 7:45 UTC (permalink / raw)
To: Dmitry Torokhov
Cc: Andries Brouwer, Vojtech Pavlik, torvalds, vojtech, linux-kernel
Hi.
> linked to broken legacy emulation implementations, Vojtech mentioned
> that PCI quirk to turn legacy emulation off may be appropriate.
Is there any code available that can do that as it is now?
This would be useful especially right now under x86-64.
As it is right now I either have the keyboard plugged into
both ps/2 and usb, plug it in only into usb (can't operate
grub) or plug it only into usb (enable emulation, can't
run linux ... ) and if the kernel could have a way of
disabling the emulation that would be good at least in
my case.
// Stefan
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 23/44] Use __obsolete_setup() in input drivers to warn about obsolete kernel params
@ 2004-03-16 14:19 Vojtech Pavlik
2004-03-16 14:19 ` [PATCH 24/44] Workaround i8042 chips with broken MUX mode Vojtech Pavlik
0 siblings, 1 reply; 12+ messages in thread
From: Vojtech Pavlik @ 2004-03-16 14:19 UTC (permalink / raw)
To: torvalds, vojtech, linux-kernel
You can pull this changeset from:
bk://kernel.bkbits.net/vojtech/input
===================================================================
ChangeSet@1.1608.54.9, 2004-03-03 00:36:59-05:00, dtor_core@ameritech.net
Input: use __obsolete_setup to document removed (renamed)
options so users will have a clue why the options
do not work anymore
joystick/amijoy.c | 2 ++
joystick/analog.c | 2 ++
joystick/db9.c | 4 ++++
joystick/gamecon.c | 6 ++++++
joystick/turbografx.c | 4 ++++
keyboard/atkbd.c | 4 ++++
mouse/98busmouse.c | 2 ++
mouse/inport.c | 2 ++
mouse/logibm.c | 2 ++
mouse/psmouse-base.c | 6 ++++++
serio/i8042.c | 7 +++++++
11 files changed, 41 insertions(+)
===================================================================
diff -Nru a/drivers/input/joystick/amijoy.c b/drivers/input/joystick/amijoy.c
--- a/drivers/input/joystick/amijoy.c Tue Mar 16 13:18:41 2004
+++ b/drivers/input/joystick/amijoy.c Tue Mar 16 13:18:41 2004
@@ -50,6 +50,8 @@
module_param_array_named(map, amijoy, uint, amijoy_nargs, 0);
MODULE_PARM_DESC(map, "Map of attached joysticks in form of <a>,<b> (default is 0,1)");
+__obsolete_setup("amijoy=");
+
static int amijoy_used[2] = { 0, 0 };
static struct input_dev amijoy_dev[2];
static char *amijoy_phys[2] = { "amijoy/input0", "amijoy/input1" };
diff -Nru a/drivers/input/joystick/analog.c b/drivers/input/joystick/analog.c
--- a/drivers/input/joystick/analog.c Tue Mar 16 13:18:41 2004
+++ b/drivers/input/joystick/analog.c Tue Mar 16 13:18:41 2004
@@ -56,6 +56,8 @@
module_param_array_named(map, js, charp, js_nargs, 0);
MODULE_PARM_DESC(map, "Describes analog joysticks type/capabilities");
+__obsolete_setup("js=");
+
/*
* Times, feature definitions.
*/
diff -Nru a/drivers/input/joystick/db9.c b/drivers/input/joystick/db9.c
--- a/drivers/input/joystick/db9.c Tue Mar 16 13:18:41 2004
+++ b/drivers/input/joystick/db9.c Tue Mar 16 13:18:41 2004
@@ -58,6 +58,10 @@
module_param_array_named(dev3, db9_3, int, db9_nargs_3, 0);
MODULE_PARM_DESC(dev3, "Describes third attached device (<parport#>,<type>)");
+__obsolete_setup("db9=");
+__obsolete_setup("db9_2=");
+__obsolete_setup("db9_3=");
+
#define DB9_MULTI_STICK 0x01
#define DB9_MULTI2_STICK 0x02
#define DB9_GENESIS_PAD 0x03
diff -Nru a/drivers/input/joystick/gamecon.c b/drivers/input/joystick/gamecon.c
--- a/drivers/input/joystick/gamecon.c Tue Mar 16 13:18:41 2004
+++ b/drivers/input/joystick/gamecon.c Tue Mar 16 13:18:41 2004
@@ -59,6 +59,10 @@
module_param_array_named(map3, gc_3, int, gc_nargs_3, 0);
MODULE_PARM_DESC(map3, "Describers third set of devices");
+__obsolete_setup("gc=");
+__obsolete_setup("gc_2=");
+__obsolete_setup("gc_3=");
+
/* see also gs_psx_delay parameter in PSX support section */
#define GC_SNES 1
@@ -243,6 +247,8 @@
static int gc_psx_delay = GC_PSX_DELAY;
module_param_named(psx_delay, gc_psx_delay, uint, 0);
MODULE_PARM_DESC(psx_delay, "Delay when accessing Sony PSX controller (usecs)");
+
+__obsolete_setup("gc_psx_delay=");
static short gc_psx_abs[] = { ABS_X, ABS_Y, ABS_RX, ABS_RY, ABS_HAT0X, ABS_HAT0Y };
static short gc_psx_btn[] = { BTN_TL, BTN_TR, BTN_TL2, BTN_TR2, BTN_A, BTN_B, BTN_X, BTN_Y,
diff -Nru a/drivers/input/joystick/turbografx.c b/drivers/input/joystick/turbografx.c
--- a/drivers/input/joystick/turbografx.c Tue Mar 16 13:18:41 2004
+++ b/drivers/input/joystick/turbografx.c Tue Mar 16 13:18:41 2004
@@ -57,6 +57,10 @@
module_param_array_named(map3, tgfx_3, int, tgfx_nargs_3, 0);
MODULE_PARM_DESC(map3, "Describes third set of devices");
+__obsolete_setup("tgfx=");
+__obsolete_setup("tgfx_2=");
+__obsolete_setup("tgfx_3=");
+
#define TGFX_REFRESH_TIME HZ/100 /* 10 ms */
#define TGFX_TRIGGER 0x08
diff -Nru a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c
--- a/drivers/input/keyboard/atkbd.c Tue Mar 16 13:18:41 2004
+++ b/drivers/input/keyboard/atkbd.c Tue Mar 16 13:18:41 2004
@@ -48,6 +48,10 @@
module_param_named(softrepeat, atkbd_softrepeat, bool, 0);
MODULE_PARM_DESC(softrepeat, "Use software keyboard repeat");
+__obsolete_setup("atkbd_set=");
+__obsolete_setup("atkbd_reset");
+__obsolete_setup("atkbd_softrepeat=");
+
/*
* Scancode to keycode tables. These are just the default setting, and
* are loadable via an userland utility.
diff -Nru a/drivers/input/mouse/98busmouse.c b/drivers/input/mouse/98busmouse.c
--- a/drivers/input/mouse/98busmouse.c Tue Mar 16 13:18:41 2004
+++ b/drivers/input/mouse/98busmouse.c Tue Mar 16 13:18:41 2004
@@ -74,6 +74,8 @@
module_param_named(irq, pc98bm_irq, uint, 0);
MODULE_PARM_DESC(irq, "IRQ number (13=default)");
+__obsolete_setup("pc98bm_irq=");
+
static int pc98bm_used = 0;
static irqreturn_t pc98bm_interrupt(int irq, void *dev_id, struct pt_regs *regs);
diff -Nru a/drivers/input/mouse/inport.c b/drivers/input/mouse/inport.c
--- a/drivers/input/mouse/inport.c Tue Mar 16 13:18:41 2004
+++ b/drivers/input/mouse/inport.c Tue Mar 16 13:18:41 2004
@@ -85,6 +85,8 @@
module_param_named(irq, inport_irq, uint, 0);
MODULE_PARM_DESC(irq, "IRQ number (5=default)");
+__obsolete_setup("inport_irq=");
+
static int inport_used;
static irqreturn_t inport_interrupt(int irq, void *dev_id, struct pt_regs *regs);
diff -Nru a/drivers/input/mouse/logibm.c b/drivers/input/mouse/logibm.c
--- a/drivers/input/mouse/logibm.c Tue Mar 16 13:18:41 2004
+++ b/drivers/input/mouse/logibm.c Tue Mar 16 13:18:41 2004
@@ -75,6 +75,8 @@
module_param_named(irq, logibm_irq, uint, 0);
MODULE_PARM_DESC(irq, "IRQ number (5=default)");
+__obsolete_setup("logibm_irq=");
+
static int logibm_used = 0;
static irqreturn_t logibm_interrupt(int irq, void *dev_id, struct pt_regs *regs);
diff -Nru a/drivers/input/mouse/psmouse-base.c b/drivers/input/mouse/psmouse-base.c
--- a/drivers/input/mouse/psmouse-base.c Tue Mar 16 13:18:41 2004
+++ b/drivers/input/mouse/psmouse-base.c Tue Mar 16 13:18:41 2004
@@ -47,6 +47,12 @@
module_param_named(resetafter, psmouse_resetafter, uint, 0);
MODULE_PARM_DESC(resetafter, "Reset Synaptics Touchpad after so many bad packets (0 = never).");
+__obsolete_setup("psmouse_noext");
+__obsolete_setup("psmouse_resolution=");
+__obsolete_setup("psmouse_smartscroll=");
+__obsolete_setup("psmouse_resetafter=");
+__obsolete_setup("psmouse_rate=");
+
static char *psmouse_protocols[] = { "None", "PS/2", "PS2++", "PS2T++", "GenPS/2", "ImPS/2", "ImExPS/2", "SynPS/2"};
/*
diff -Nru a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c
--- a/drivers/input/serio/i8042.c Tue Mar 16 13:18:41 2004
+++ b/drivers/input/serio/i8042.c Tue Mar 16 13:18:41 2004
@@ -52,6 +52,13 @@
module_param_named(dumbkbd, i8042_dumbkbd, bool, 0);
MODULE_PARM_DESC(dumbkbd, "Pretend that controller can only read data from keyboard");
+__obsolete_setup("i8042_noaux");
+__obsolete_setup("i8042_nomux");
+__obsolete_setup("i8042_unlock");
+__obsolete_setup("i8042_reset");
+__obsolete_setup("i8042_direct");
+__obsolete_setup("i8042_dumbkbd");
+
#undef DEBUG
#include "i8042.h"
^ permalink raw reply [flat|nested] 12+ messages in thread* [PATCH 24/44] Workaround i8042 chips with broken MUX mode
2004-03-16 14:19 [PATCH 23/44] Use __obsolete_setup() in input drivers to warn about obsolete kernel params Vojtech Pavlik
@ 2004-03-16 14:19 ` Vojtech Pavlik
0 siblings, 0 replies; 12+ messages in thread
From: Vojtech Pavlik @ 2004-03-16 14:19 UTC (permalink / raw)
To: torvalds, vojtech, linux-kernel
You can pull this changeset from:
bk://kernel.bkbits.net/vojtech/input
===================================================================
ChangeSet@1.1608.56.2, 2004-03-03 11:49:20+01:00, vojtech@suse.cz
input: Workaround i8042 chips with broken MUX mode.
i8042.c | 5 +++++
1 files changed, 5 insertions(+)
===================================================================
diff -Nru a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c
--- a/drivers/input/serio/i8042.c Tue Mar 16 13:18:37 2004
+++ b/drivers/input/serio/i8042.c Tue Mar 16 13:18:37 2004
@@ -530,6 +530,11 @@
if (i8042_enable_mux_mode(values, &mux_version))
return -1;
+
+ /* Workaround for broken chips which seem to support MUX, but in reality don't. */
+ /* They all report version 12.10 */
+ if (mux_version == 0xCA)
+ return -1;
printk(KERN_INFO "i8042.c: Detected active multiplexing controller, rev %d.%d.\n",
(mux_version >> 4) & 0xf, mux_version & 0xf);
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2004-03-28 7:46 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-03-16 18:24 [PATCH 24/44] Workaround i8042 chips with broken MUX mode Dmitry Torokhov
2004-03-18 20:37 ` Vojtech Pavlik
[not found] ` <200403190005.36956.dtor_core@ameritech.net>
2004-03-19 13:58 ` Vojtech Pavlik
2004-03-19 14:21 ` Stefan Smietanowski
2004-03-19 14:30 ` Vojtech Pavlik
2004-03-19 13:56 ` Vojtech Pavlik
2004-03-28 0:29 ` Andries Brouwer
2004-03-28 0:40 ` Dmitry Torokhov
2004-03-28 1:25 ` Andries Brouwer
2004-03-28 3:11 ` Dmitry Torokhov
2004-03-28 7:45 ` Stefan Smietanowski
-- strict thread matches above, loose matches on Subject: below --
2004-03-16 14:19 [PATCH 23/44] Use __obsolete_setup() in input drivers to warn about obsolete kernel params Vojtech Pavlik
2004-03-16 14:19 ` [PATCH 24/44] Workaround i8042 chips with broken MUX mode Vojtech Pavlik
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox