#ifndef SYS_SERIAL_H #define SYS_SERIAL_H /* * Defines for PC AT serial port. */ /* * serial port addresses and IRQs */ #define PORT_0 0x03F8 #define PORT_1 0x02F8 #define IRQ_0 0x04 #define IRQ_1 0x03 /* * Definitions for INS8250 / 16550 chips */ /* defined as offsets from the port address (data port) */ #define DAT 0 /* receive/transmit data */ #define ICR 1 /* interrupt control register */ #define ISR 2 /* interrupt status register */ #define LCR 3 /* line control register */ #define MCR 4 /* modem control register */ #define LSR 5 /* line status register */ #define MSR 6 /* modem status register */ #define DLL 0 /* divisor latch (lsb) */ #define DLH 1 /* divisor latch (msb) */ /* ICR */ #define RIEN 0x01 /* enable receiver interrupt */ #define TIEN 0x02 /* enable transmitter interrupt */ #define SIEN 0x04 /* enable receiver line status interrupt */ #define MIEN 0x08 /* enable modem status interrupt */ /* ISR */ #define FFTMOUT 0x0c /* fifo rcvr timeout */ #define RSTATUS 0x06 /* change in receiver line status */ #define RxRDY 0x04 /* receiver data available */ #define TxRDY 0x02 /* transmitter holding register empty */ #define MSTATUS 0x00 /* change in modem status */ /* LCR 3 */ /* number of data bits per received/transmitted character */ #define RXLEN 0x03 #define STOP1 0x00 #define STOP2 0x04 #define PAREN 0x08 #define PAREVN 0x10 #define PARMARK 0x20 #define SNDBRK 0x40 #define DLAB 0x80 /* baud rate definitions */ #define ASY9600 12 /* definitions for character length (data bits) in RXLEN field */ #define BITS5 0x00 #define BITS6 0x01 #define BITS7 0x02 #define BITS8 0x03 /* MCR */ #define DTR 0x01 /* bring up DTR */ #define RTS 0x02 /* bring up RTS */ #define OUT1 0x04 #define OUT2 0x08 #define LOOP 0x10 /* put chip into loopback state */ /* LSR */ #define RCA 0x01 /* receive char available */ #define OVRRUN 0x02 /* receive overrun */ #define PARERR 0x04 /* parity error */ #define FRMERR 0x08 /* framing/CRC error */ #define BRKDET 0x10 /* break detected (null char + frame error) */ #define XHRE 0x20 /* transmit holding register empty */ #define XSRE 0x40 /* transmit shift register empty */ /* MSR */ #define DCTS 0x01 /* CTS has changed state */ #define DDSR 0x02 /* DSR has changed state */ #define DRI 0x04 /* RI has changed state */ #define DDCD 0x08 /* DCD has changed state */ #define CTS 0x10 /* state of CTS */ #define DSR 0x20 /* state of DSR */ #define RI 0x40 /* state of RI */ #define DCD 0x80 /* state of DCD */ #define DELTAS(x) ((x)&(DCTS|DDSR|DRI|DDCD)) #define STATES(x) ((x)(CTS|DSR|RI|DCD)) #endif /* SYS_SERIAL_H */