Put the delay in a macro, and implement it differently.
This commit is contained in:
parent
cbe87dbb9c
commit
cce04a7aa1
@ -35,7 +35,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* from: @(#)pccons.c 5.11 (Berkeley) 5/21/91
|
||||
* $Id: pccons.c,v 1.66 1994/08/17 19:14:53 mycroft Exp $
|
||||
* $Id: pccons.c,v 1.67 1994/10/09 09:28:54 mycroft Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -149,6 +149,12 @@ char partab[];
|
||||
|
||||
extern pcopen(dev_t, int, int, struct proc *);
|
||||
|
||||
#define KBD_DELAY \
|
||||
{ u_char x = inb(0x84); } \
|
||||
{ u_char x = inb(0x84); } \
|
||||
{ u_char x = inb(0x84); } \
|
||||
{ u_char x = inb(0x84); }
|
||||
|
||||
static inline int
|
||||
kbd_wait()
|
||||
{
|
||||
@ -156,7 +162,7 @@ kbd_wait()
|
||||
|
||||
for (i = 100000; i; i--)
|
||||
if ((inb(KBSTATP) & KBS_IBF) == 0) {
|
||||
delay(6);
|
||||
KBD_DELAY;
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
@ -216,7 +222,8 @@ kbd_cmd(val, polling)
|
||||
for (i = 100000; i; i--) {
|
||||
if (inb(KBSTATP) & KBS_DIB) {
|
||||
register u_char c;
|
||||
delay(6);
|
||||
|
||||
KBD_DELAY;
|
||||
c = inb(KBDATAP);
|
||||
if (c == KBR_ACK || c == KBR_ECHO) {
|
||||
ack = 1;
|
||||
@ -233,6 +240,7 @@ kbd_cmd(val, polling)
|
||||
}
|
||||
else
|
||||
for (i = 100000; i; i--) {
|
||||
inb(KBSTATP);
|
||||
if (ack)
|
||||
return 1;
|
||||
if (nak)
|
||||
@ -334,7 +342,7 @@ pcprobe(parent, self, aux)
|
||||
#if 1
|
||||
/* Flush any garbage. */
|
||||
while (inb(KBSTATP) & KBS_DIB) {
|
||||
delay(6);
|
||||
KBD_DELAY;
|
||||
(void) inb(KBDATAP);
|
||||
}
|
||||
/* Reset the keyboard. */
|
||||
@ -343,7 +351,7 @@ pcprobe(parent, self, aux)
|
||||
goto lose;
|
||||
}
|
||||
while ((inb(KBSTATP) & KBS_DIB) == 0);
|
||||
delay(6);
|
||||
KBD_DELAY;
|
||||
if (inb(KBDATAP) != KBR_RSTDONE) {
|
||||
printf("pcprobe: reset error %d\n", 2);
|
||||
goto lose;
|
||||
@ -354,7 +362,7 @@ pcprobe(parent, self, aux)
|
||||
* flushing the buffer.
|
||||
*/
|
||||
while (inb(KBSTATP) & KBS_DIB) {
|
||||
delay(6);
|
||||
KBD_DELAY;
|
||||
(void) inb(KBDATAP);
|
||||
}
|
||||
/* Just to be sure. */
|
||||
@ -666,13 +674,13 @@ pccnputc(dev, c)
|
||||
pccngetc(dev)
|
||||
dev_t dev;
|
||||
{
|
||||
register int s;
|
||||
u_char oldpolling;
|
||||
register char *cp;
|
||||
u_char oldpolling = polling;
|
||||
|
||||
if (pc_xmode > 0)
|
||||
return 0;
|
||||
|
||||
oldpolling = polling;
|
||||
polling = 1;
|
||||
do {
|
||||
/* wait for byte */
|
||||
@ -1328,6 +1336,7 @@ sget()
|
||||
static u_char capchar[2];
|
||||
|
||||
top:
|
||||
KBD_DELAY;
|
||||
dt = inb(KBDATAP);
|
||||
|
||||
switch (dt) {
|
||||
|
Loading…
Reference in New Issue
Block a user