summaryrefslogtreecommitdiff
path: root/sysdeps/unix/sysv/linux/sys/serial.h
blob: 1844ef6032004266f6b35a22d63dcdb9fce04b46 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
/* Copyright (C) 1996 Free Software Foundation, Inc.
   This file is part of the GNU C Library.

   The GNU C Library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Library General Public License as
   published by the Free Software Foundation; either version 2 of the
   License, or (at your option) any later version.

   The GNU C Library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Library General Public License for more details.

   You should have received a copy of the GNU Library General Public
   License along with the GNU C Library; see the file COPYING.LIB.  If not,
   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
   Boston, MA 02111-1307, USA.  */

#ifndef _SYS_SERIAL_H
#define _SYS_SERIAL_H	1
/* 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 */