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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
|
/*
* Copyright (c) 2003 Marcel Moolenaar
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* $FreeBSD$
*/
#ifndef _DEV_UART_DEV_NS8250_H_
#define _DEV_UART_DEV_NS8250_H_
/* Enhanced Feature Register. */
#define EFR_CTS 0x80
#define EFR_RTS 0x40
#define EFR_SCD 0x20 /* Special Character Detect. */
#define EFR_EFC 0x10 /* Enhanced Function Control. */
#define EFR_SFC_MASK 0x0f /* Software Flow Control. */
#define EFR_SFC_TX12 0x0c /* BIT: Transmit XON1+2/XOFF1+2. */
#define EFR_SFC_TX1 0x08 /* BIT: Transmit XON1/XOFF1. */
#define EFR_SFC_TX2 0x04 /* BIT: Transmit XON2/XOFF2. */
#define EFR_SFC_RX1 0x02 /* BIT: Receive XON1/XOFF1. */
#define EFR_SFC_RX2 0x01 /* BIT: Receive XON2/XOFF2. */
#define EFR_SFC_T12R12 0x0f /* VAL: TX 1+2, RX 1+2. */
#define EFR_SFC_T1R12 0x0b /* VAL: TX 1, RX 1+2. */
#define EFR_SFC_T2R12 0x07 /* VAL: TX 2, RX 1+2. */
/* FIFO Control Register. */
#define FCR_RX_HIGH 0xc0
#define FCR_RX_MEDH 0x80
#define FCR_RX_MEDL 0x40
#define FCR_RX_LOW 0x00
#define FCR_TX_HIGH 0x30
#define FCR_TX_MEDH 0x20
#define FCR_TX_LOW 0x10
#define FCR_TX_MEDL 0x00
#define FCR_DMA 0x08
#define FCR_XMT_RST 0x04
#define FCR_RCV_RST 0x02
#define FCR_ENABLE 0x01
/* Interrupt Enable Register. */
#define IER_CTS 0x80
#define IER_RTS 0x40
#define IER_XOFF 0x20
#define IER_SLEEP 0x10
#define IER_EMSC 0x08
#define IER_ERLS 0x04
#define IER_ETXRDY 0x02
#define IER_ERXRDY 0x01
/* Interrupt Identification Register. */
#define IIR_FIFO_MASK 0xc0
#define IIR_RTSCTS 0x20
#define IIR_XOFF 0x10
#define IIR_IMASK 0x0f
#define IIR_RXTOUT 0x0c
#define IIR_RLS 0x06
#define IIR_RXRDY 0x04
#define IIR_TXRDY 0x02
#define IIR_MLSC 0x00
#define IIR_NOPEND 0x01
/* Line Control Register. */
#define LCR_DLAB 0x80
#define LCR_SBREAK 0x40
#define LCR_PZERO 0x30
#define LCR_PONE 0x20
#define LCR_PEVEN 0x10
#define LCR_PODD 0x00
#define LCR_PENAB 0x08
#define LCR_STOPB 0x04
#define LCR_8BITS 0x03
#define LCR_7BITS 0x02
#define LCR_6BITS 0x01
#define LCR_5BITS 0x00
/* Line Status Register. */
#define LSR_DERR 0x80
#define LSR_TEMT 0x40 /* Transmitter Empty. */
#define LSR_THRE 0x20 /* Transmitter Holding Register Empty. */
#define LSR_BI 0x10
#define LSR_FE 0x08
#define LSR_PE 0x04
#define LSR_OE 0x02
#define LSR_RXRDY 0x01
/* Modem Control Register. */
#define MCR_CS 0x80
#define MCR_IRE 0x40
#define MCR_ISEL 0x20
#define MCR_LOOPBACK 0x10
#define MCR_IE 0x08
#define MCR_LBDCD MCR_IE
#define MCR_LBRI 0x04
#define MCR_RTS 0x02
#define MCR_DTR 0x01
/* Modem Status Register. */
#define MSR_DCD 0x80
#define MSR_RI 0x40
#define MSR_DSR 0x20
#define MSR_CTS 0x10
#define MSR_DDCD 0x08
#define MSR_TERI 0x04
#define MSR_DDSR 0x02
#define MSR_DCTS 0x01
/* General registers. */
#define REG_DATA 0 /* Data Register. */
#define REG_RBR REG_DATA /* Receiver Buffer Register (R). */
#define REG_THR REG_DATA /* Transmitter Holding Register (W). */
#define REG_IER 1 /* Interrupt Enable Register */
#define REG_IIR 2 /* Interrupt Ident. Register (R). */
#define REG_FCR 2 /* FIFO Control Register (W). */
#define REG_LCR 3 /* Line Control Register. */
#define REG_MCR 4 /* Modem Control Register. */
#define REG_LSR 5 /* Line Status Register. */
#define REG_MSR 6 /* Modem Status Register. */
#define REG_SPR 7 /* Scratch Pad Register. */
/* Baudrate registers (LCR[7] = 1). */
#define REG_DLBL 0 /* Divisor Latch (LSB). */
#define REG_DLBH 1 /* Divisor Latch (MSB). */
#define REG_DL REG_DLBL /* Divisor Latch (16-bit I/O). */
/* Enhanced registers (LCR = 0xBF). */
#define REG_EFR 2 /* Enhanced Feature Register. */
#define REG_XON1 4 /* XON character 1. */
#define REG_XON2 5 /* XON character 2. */
#define REG_XOFF1 6 /* XOFF character 1. */
#define REG_XOFF2 7 /* XOFF character 2. */
#endif /* _DEV_UART_DEV_NS8250_H_ */
|