Synchronize with sys/i386/isa/sio.c revision 1.158.

This commit is contained in:
KATO Takenori 1997-02-02 08:09:41 +00:00
parent e91c4f7cc3
commit 59e8efa110
2 changed files with 30 additions and 6 deletions

View File

@ -1444,11 +1444,22 @@ sioopen(dev, flag, mode, p)
outb(iobase + com_fifo,
FIFO_RCV_RST | FIFO_XMT_RST
| com->fifo_image);
DELAY(100);
/*
* XXX the delays are for superstitious
* historical reasons. It must be less than
* the character time at the maximum
* supported speed (87 usec at 115200 bps
* 8N1). Otherwise we might loop endlessly
* if data is streaming in. We used to use
* delays of 100. That usually worked
* because DELAY(100) used to usually delay
* for about 85 usec instead of 100.
*/
DELAY(50);
if (!(inb(com->line_status_port) & LSR_RXRDY))
break;
outb(iobase + com_fifo, 0);
DELAY(100);
DELAY(50);
(void) inb(com->data_port);
}
}
@ -1576,7 +1587,8 @@ comhardclose(com)
s = spltty();
com->poll = FALSE;
com->poll_output = FALSE;
com->do_timestamp = 0;
com->do_timestamp = FALSE;
com->do_dcd_timestamp = FALSE;
#ifdef PC98
if(IS_8251(com->pc98_if_type))
com_send_break_off(com);

View File

@ -1444,11 +1444,22 @@ sioopen(dev, flag, mode, p)
outb(iobase + com_fifo,
FIFO_RCV_RST | FIFO_XMT_RST
| com->fifo_image);
DELAY(100);
/*
* XXX the delays are for superstitious
* historical reasons. It must be less than
* the character time at the maximum
* supported speed (87 usec at 115200 bps
* 8N1). Otherwise we might loop endlessly
* if data is streaming in. We used to use
* delays of 100. That usually worked
* because DELAY(100) used to usually delay
* for about 85 usec instead of 100.
*/
DELAY(50);
if (!(inb(com->line_status_port) & LSR_RXRDY))
break;
outb(iobase + com_fifo, 0);
DELAY(100);
DELAY(50);
(void) inb(com->data_port);
}
}
@ -1576,7 +1587,8 @@ comhardclose(com)
s = spltty();
com->poll = FALSE;
com->poll_output = FALSE;
com->do_timestamp = 0;
com->do_timestamp = FALSE;
com->do_dcd_timestamp = FALSE;
#ifdef PC98
if(IS_8251(com->pc98_if_type))
com_send_break_off(com);