diff options
| author | Bruce Evans <bde@FreeBSD.org> | 1997-02-01 16:04:16 +0000 |
|---|---|---|
| committer | Bruce Evans <bde@FreeBSD.org> | 1997-02-01 16:04:16 +0000 |
| commit | d1adf9f099898a2e086021b89bc8c9eba17ea16b (patch) | |
| tree | 0d3f41352023e51833df7384f209fc0f32f16b70 /sys/dev | |
| parent | acf217b342b9f532920350b81960c235f9ccd9c3 (diff) | |
Notes
Diffstat (limited to 'sys/dev')
| -rw-r--r-- | sys/dev/sio/sio.c | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/sys/dev/sio/sio.c b/sys/dev/sio/sio.c index 1f091682bba4..a9de446416dd 100644 --- a/sys/dev/sio/sio.c +++ b/sys/dev/sio/sio.c @@ -1078,11 +1078,22 @@ open_top: 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); } } @@ -1188,7 +1199,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; outb(iobase + com_cfcr, com->cfcr_image &= ~CFCR_SBREAK); { outb(iobase + com_ier, 0); |
