From: Andries Brouwer <aebr@win.tue.nl>
To: Pete Zaitcev <zaitcev@redhat.com>
Cc: Chris Heath <chris@heathens.co.nz>, linux-kernel@vger.kernel.org
Subject: Re: i8042 problem
Date: Sun, 27 Jul 2003 12:47:26 +0200 [thread overview]
Message-ID: <20030727104726.GA1313@win.tue.nl> (raw)
In-Reply-To: <20030727020621.A11637@devserv.devel.redhat.com>
On Sun, Jul 27, 2003 at 02:06:21AM -0400, Pete Zaitcev wrote:
> > Date: Sat, 26 Jul 2003 21:41:32 -0400
> > From: Chris Heath <chris@heathens.co.nz>
>
> > > > drivers/input/serio/i8042.c: 00 -> i8042 (kbd-data) [40]
> > > > drivers/input/serio/i8042.c: 60 -> i8042 (command) [50]
> > > > drivers/input/serio/i8042.c: 44 -> i8042 (parameter) [50]
> > > > drivers/input/serio/i8042.c: fa <- i8042 (interrupt, kbd, 1) [51]
> > > > serio: i8042 KBD port at 0x60,0x64 irq 1
> > > > <------------- This is it, keyboard is dead.
> > >
> > > Writing 44 to the command byte disables IRQ1.
> >
> > It looks like a timeout problem. The ack (fa) arrived 11 ticks after
> > the byte (00) was sent, but it looks like the timeout is only 10 ticks.
> >
> > Try playing with the timeout in atkbd_sendbyte (line 217 of
> > drivers/input/keyboard/atkbd.c).
>
> Playing with timeout does not help, but on second thought
> I suspect that atkbd fails to open the port for some reason,
> that's why interrupts stay disabled.
Well, Chris is right, of course.
As I said, writing 44 to the command byte disables IRQ1.
So, the question is, who does that. Read the code:
We do i8042_init, detect a PS/2 keyboard/mouse controller, and call
i8042_port_register() first for mouse, then for keyboard.
This i8042_port_register() does
serio_register_port(port);
and then happily reports
printk(KERN_INFO "serio: i8042 %s port at %#lx,%#lx irq %d\n"
This serio_register_port(port) probes connected devices.
It calls atkbd_connect(), which calls atkbd_probe(), and
the latter fails.
Now atkbd_connect() does serio_close() which does
i8042_close() and we see
i8042_ctr &= ~values->irqen;
i8042_command(&i8042_ctr, I8042_CMD_CTL_WCTR);
that the IRQ is disabled.
So the culprit is the failing of atkbd_probe().
It does a ATKBD_CMD_GETID, but gets no answer, then a
ATKBD_CMD_SETLEDS, and that command fails.
It sends the 0xed, gets an ACK, sends the 0x00 and times out.
And it times out because atkbd_sendbyte has a timeout of 10 msec
while the reply came after 11 msec.
So, apart from other things you might try, it seems to me that
changing the timeout in atkbd_sendbyte from the 10000 that is
there to the 100000 that the comment implies, should help.
Andries
- int timeout = 10000; /* 100 msec */
+ int timeout = 100000; /* 100 msec */
next prev parent reply other threads:[~2003-07-27 10:32 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-07-26 6:11 i8042 problem Pete Zaitcev
2003-07-26 9:36 ` Andries Brouwer
2003-07-27 1:41 ` Chris Heath
2003-07-27 6:06 ` Pete Zaitcev
2003-07-27 10:47 ` Andries Brouwer [this message]
2003-07-28 1:55 ` Pete Zaitcev
2003-07-28 11:25 ` Alan Cox
2003-07-28 11:59 ` Andries Brouwer
2003-07-28 14:01 ` Maciej W. Rozycki
2003-07-28 14:54 ` Andries Brouwer
2003-07-28 15:43 ` Maciej W. Rozycki
2003-07-28 15:51 ` Andries Brouwer
2003-07-29 18:29 ` Maciej W. Rozycki
2003-08-12 20:46 ` Vojtech Pavlik
2003-08-13 13:44 ` Maciej W. Rozycki
2003-07-28 16:07 ` Pete Zaitcev
2003-08-12 20:47 ` Vojtech Pavlik
2003-08-12 20:42 ` Vojtech Pavlik
2003-08-12 23:06 ` Andries Brouwer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20030727104726.GA1313@win.tue.nl \
--to=aebr@win.tue.nl \
--cc=chris@heathens.co.nz \
--cc=linux-kernel@vger.kernel.org \
--cc=zaitcev@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).