Lines Matching refs:port

184     struct dos_ttystate *port;  member
248 dos_getc (volatile struct dos_ttystate *port) in dos_getc() argument
252 if (port->count == 0) in dos_getc()
255 c = port->cbuf[port->first]; in dos_getc()
257 port->first = (port->first + 1) & (CBSIZE - 1); in dos_getc()
258 port->count--; in dos_getc()
265 dos_putc (int c, struct dos_ttystate *port) in dos_putc() argument
267 if (port->count >= CBSIZE - 1) in dos_putc()
269 port->cbuf[(port->first + port->count) & (CBSIZE - 1)] = c; in dos_putc()
270 port->count++; in dos_putc()
279 struct dos_ttystate *port; in dos_comisr() local
288 port = intrupts[irq].port; in dos_comisr()
289 if (!port) in dos_comisr()
297 iir = inb (port, com_iir) & IIR_IMASK; in dos_comisr()
302 lsr = inb (port, com_lsr); in dos_comisr()
312 c = inb (port, com_data); in dos_comisr()
316 port->ferr++; in dos_comisr()
318 port->perr++; in dos_comisr()
320 port->oflo++; in dos_comisr()
323 if (dos_putc (c, port) < 0) in dos_comisr()
332 while ((lsr = inb (port, com_lsr)) & LSR_RXRDY); in dos_comisr()
337 port->msr = inb (port, com_msr); in dos_comisr()
341 port->txbusy = 0; in dos_comisr()
458 struct dos_ttystate *port; in dos_open() local
483 port = &ports[fd]; in dos_open()
484 if (port->refcnt++ > 0) in dos_open()
492 outb (port, com_cfcr, 0); in dos_open()
493 outb (port, com_iir, 0); in dos_open()
496 if ((inb (port, com_iir) & 0x38) == 0) in dos_open()
498 (void) inb (port, com_data); /* clear recv */ in dos_open()
505 outb (port, com_ier, 0); in dos_open()
508 outb (port, com_fifo, in dos_open()
511 port->fifo = ((inb (port, com_iir) & IIR_FIFO_MASK) == IIR_FIFO_MASK); in dos_open()
514 (void) inb (port, com_lsr); in dos_open()
515 (void) inb (port, com_msr); in dos_open()
518 outb (port, com_mcr, MCR_IENABLE); in dos_open()
521 port->intrupt = dos_hookirq (port->irq); in dos_open()
522 if (!port->intrupt) in dos_open()
524 outb (port, com_mcr, 0); in dos_open()
525 outb (port, com_fifo, 0); in dos_open()
533 port->intrupt->port = port; in dos_open()
537 port->first = port->count = 0; in dos_open()
538 port->txbusy = 0; in dos_open()
539 port->oflo = 0; in dos_open()
542 i = dos_baudconv (port->baudrate = 9600); in dos_open()
543 outb (port, com_cfcr, CFCR_DLAB); in dos_open()
544 outb (port, com_dlbl, i & 0xff); in dos_open()
545 outb (port, com_dlbh, i >> 8); in dos_open()
546 outb (port, com_cfcr, CFCR_8BITS); in dos_open()
549 outb (port, com_ier, IER_ETXRDY | IER_ERXRDY | IER_ERLS | IER_EMSC); in dos_open()
552 outb (port, com_mcr, MCR_DTR | MCR_RTS | MCR_IENABLE); in dos_open()
563 struct dos_ttystate *port; in dos_close() local
569 port = &ports[scb->fd]; in dos_close()
571 if (port->refcnt-- > 1) in dos_close()
574 if (!(intrupt = port->intrupt)) in dos_close()
579 port->intrupt = 0; in dos_close()
580 intrupt->port = 0; in dos_close()
581 outb (port, com_fifo, 0); in dos_close()
582 outb (port, com_ier, 0); in dos_close()
587 outb (port, com_mcr, 0); in dos_close()
590 if (port->oflo) in dos_close()
595 port->fifo ? "cannot" : "needs a 16550 to", in dos_close()
596 port->baudrate); in dos_close()
617 struct dos_ttystate *port = &ports[scb->fd]; in dos_readchar() local
622 while ((c = dos_getc (port)) < 0) in dos_readchar()
635 struct dos_ttystate *port = &ports[scb->fd]; in dos_get_tty_state() local
639 if (port->refcnt <= 0) in dos_get_tty_state()
652 *state = *port; in dos_get_tty_state()
680 struct dos_ttystate *port = &ports[scb->fd]; in dos_flush_input() local
682 port->first = port->count = 0; in dos_flush_input()
683 if (port->fifo) in dos_flush_input()
684 outb (port, com_fifo, FIFO_ENABLE | FIFO_RCV_RST | FIFO_TRIGGER); in dos_flush_input()
723 struct dos_ttystate *port = &ports[scb->fd]; in dos_setbaudrate() local
725 if (port->baudrate != rate) in dos_setbaudrate()
739 cfcr = inb (port, com_cfcr); in dos_setbaudrate()
741 outb (port, com_cfcr, CFCR_DLAB); in dos_setbaudrate()
742 outb (port, com_dlbl, x & 0xff); in dos_setbaudrate()
743 outb (port, com_dlbh, x >> 8); in dos_setbaudrate()
744 outb (port, com_cfcr, cfcr); in dos_setbaudrate()
745 port->baudrate = rate; in dos_setbaudrate()
755 struct dos_ttystate *port = &ports[scb->fd]; in dos_setstopbits() local
759 cfcr = inb (port, com_cfcr); in dos_setstopbits()
764 outb (port, com_cfcr, cfcr & ~CFCR_STOPB); in dos_setstopbits()
768 outb (port, com_cfcr, cfcr | CFCR_STOPB); in dos_setstopbits()
782 volatile struct dos_ttystate *port = &ports[scb->fd]; in dos_write() local
783 int fifosize = port->fifo ? 16 : 1; in dos_write()
791 port->txbusy = 1; in dos_write()
795 outportsb (port->base + com_data, str, cnt); in dos_write()
800 outportb (port->base + com_data, *str++); in dos_write()
807 while (port->txbusy) in dos_write()
823 volatile struct dos_ttystate *port = &ports[scb->fd]; in dos_sendbreak() local
827 cfcr = inb (port, com_cfcr); in dos_sendbreak()
828 outb (port, com_cfcr, cfcr | CFCR_SBREAK); in dos_sendbreak()
835 outb (port, com_cfcr, cfcr); in dos_sendbreak()
866 struct dos_ttystate *port; in dos_info() local
871 for (port = ports; port < &ports[4]; port++) in dos_info()
873 if (port->baudrate == 0) in dos_info()
875 printf_filtered ("Port:\tCOM%ld (%sactive)\n", (long)(port - ports) + 1, in dos_info()
876 port->intrupt ? "" : "not "); in dos_info()
877 printf_filtered ("Addr:\t0x%03x (irq %d)\n", port->base, port->irq); in dos_info()
878 printf_filtered ("16550:\t%s\n", port->fifo ? "yes" : "no"); in dos_info()
879 printf_filtered ("Speed:\t%d baud\n", port->baudrate); in dos_info()
881 port->ferr, port->perr, port->oflo); in dos_info()