XINU
uart.h
Go to the documentation of this file.
1 /* uart.h - definintions for the NS16550 uart serial hardware */
2 
3 #define UART_BAUD 115200 /* Default console baud rate. */
4 #define UART_OUT_IDLE 0x0016 /* determine if transmit idle */
5 #define UART_FIFO_SIZE 64 /* chars in UART onboard output FIFO */
6  /* (16 for later UART chips) */
7 
8 /*
9  * Control and Status Register (CSR) definintions for the 16550 UART.
10  * The code maps the structure structure directly onto the base address
11  * CSR address for the device.
12  */
13 struct uart_csreg
14 {
15  volatile uint32 buffer; /* receive buffer (when read) */
16  /* OR transmit hold (when written) */
17  volatile uint32 ier; /* interrupt enable */
18  volatile uint32 iir; /* interrupt identification (when read) */
19  /* OR FIFO control (when written) */
20  volatile uint32 lcr; /* line control register */
21  volatile uint32 mcr; /* modem control register */
22  volatile uint32 lsr; /* line status register */
23  volatile uint32 msr; /* modem status register */
24  volatile uint32 spr; /* scratch register */
25  volatile uint32 mdr1;
26  volatile uint32 res[12];/* unused UART registers */
27  volatile uint32 sysc; /* system configuration register */
28  volatile uint32 syss; /* system status register */
29  volatile uint32 wer;
30  volatile uint32 res4;
31  volatile uint32 rxfifo_lvl;
32  volatile uint32 txfifo_lvl;
33  volatile uint32 ier2;
34  volatile uint32 isr2;
35  volatile uint32 freq_sel;
36  volatile uint32 res5[2];
37  volatile uint32 mdr3;
39 };
40 
41 /* Alternative names for control and status registers */
42 
43 #define rbr buffer /* receive buffer (when read) */
44 #define thr buffer /* transmit hold (when written) */
45 #define fcr iir /* FIFO control (when written) */
46 #define dll buffer /* divisor latch (low byte) */
47 #define dlm ier /* divisor latch (high byte) */
48 
49 /* Definintion of individual bits in control and status registers */
50 
51 /* Divisor values for baud rate */
52 
53 #define UART_DLL 26 /* value for low byte of divisor latch */
54  /* DLAB=0 */
55 #define UART_DLM 0 /* value for high byte of divisor latch */
56  /* DLAB=1 */
57 
58 /* Line control bits */
59 
60 #define UART_LCR_DLAB 0x80 /* Divisor latch access bit */
61 #define UART_LCR_8N1 0x03 /* 8 bits, no parity, 1 stop */
62 
63 /* Interrupt enable bits */
64 
65 #define UART_IER_ERBFI 0x01 /* Received data interrupt mask */
66 #define UART_IER_ETBEI 0x02 /* Transmitter buffer empty interrupt */
67 #define UART_IER_ELSI 0x04 /* Recv line status interrupt mask */
68 #define UART_IER_EMSI 0x08 /* Modem status interrupt mask */
69 
70 /* Interrupt identification masks */
71 
72 #define UART_IIR_IRQ 0x01 /* Interrupt pending bit */
73 #define UART_IIR_IDMASK 0x0E /* 3-bit field for interrupt ID */
74 #define UART_IIR_MSC 0x00 /* Modem status change */
75 #define UART_IIR_THRE 0x02 /* Transmitter holding register empty */
76 #define UART_IIR_RDA 0x04 /* Receiver data available */
77 #define UART_IIR_RLSI 0x06 /* Receiver line status interrupt */
78 #define UART_IIR_RTO 0x0C /* Receiver timed out */
79 
80 /* FIFO control bits */
81 
82 #define UART_FCR_EFIFO 0x01 /* Enable in and out hardware FIFOs */
83 #define UART_FCR_RRESET 0x02 /* Reset receiver FIFO */
84 #define UART_FCR_TRESET 0x04 /* Reset transmit FIFO */
85 #define UART_FCR_TRIG0 0x00 /* RCVR FIFO trigger level one char */
86 #define UART_FCR_TRIG1 0x40 /* RCVR FIFO trigger level 1/4 */
87 #define UART_FCR_TRIG2 0x80 /* RCVR FIFO trigger level 2/4 */
88 #define UART_FCR_TRIG3 0xC0 /* RCVR FIFO trigger level 3/4 */
89 
90 /* Modem control bits */
91 
92 #define UART_MCR_OUT2 0x08 /* User-defined OUT2 */
93 #define UART_MCR_RTS 0x02 /* RTS complement */
94 #define UART_MCR_DTR 0x01 /* DTR complement */
95 #define UART_MCR_LOOP 0x10 /* Enable loopback test mode */
96 
97 /* Line status bits */
98 
99 #define UART_LSR 5 /* Input" Line Status Register */
100 
101 #define UART_LSR_DR 0x01 /* Data ready */
102 #define UART_LSR_BI 0x10 /* Break interrupt indicator */
103 #define UART_LSR_THRE 0x20 /* Transmit-hold-register empty */
104 #define UART_LSR_TEMT 0x40 /* Transmitter empty */
105 
106 #define UART_TX 0 /* offset of transmit buffer */
107 
108 /* MDR1 bits */
109 #define UART_MDR1_16X 0x00000000
110 #define UART_MDR1_16XAB 0x00000002
111 #define UART_MDR1_13X 0x00000003
112 
113 /* SYSC register bits */
114 
115 #define UART_SYSC_SOFTRESET 0x00000002
116 
117 /* SYSS register bits */
118 
119 #define UART_SYSS_RESETDONE 0x00000001
120 
121 /* UART1 Clock control */
122 #define UART1_CLKCTRL_ADDR 0x44e0006c
123 #define UART1_CLKCTRL_EN 0x00000002
124 
125 /* Pad control addresses and modes */
126 #define UART0_PADRX_ADDR 0x44E10970
127 #define UART0_PADTX_ADDR 0x44E10974
128 #define UART0_PADRX_MODE 0
129 #define UART0_PADTX_MODE 0
130 #define UART1_PADRX_ADDR 0x44E10980
131 #define UART1_PADTX_ADDR 0x44E10984
132 #define UART1_PADRX_MODE 0
133 #define UART1_PADTX_MODE 0
volatile uint32 lsr
Definition: uart.h:22
volatile uint32 buffer
Definition: uart.h:15
volatile uint32 res[12]
Definition: uart.h:26
volatile uint32 txfifo_lvl
Definition: uart.h:32
volatile uint32 rxfifo_lvl
Definition: uart.h:31
volatile uint32 ier
Definition: uart.h:17
volatile uint32 mdr1
Definition: uart.h:25
volatile uint32 mdr3
Definition: uart.h:37
volatile uint32 res5[2]
Definition: uart.h:36
volatile uint32 msr
Definition: uart.h:23
volatile uint32 syss
Definition: uart.h:28
volatile uint32 mcr
Definition: uart.h:21
volatile uint32 lcr
Definition: uart.h:20
volatile uint32 freq_sel
Definition: uart.h:35
volatile uint32 spr
Definition: uart.h:24
volatile uint32 ier2
Definition: uart.h:33
volatile uint32 iir
Definition: uart.h:18
volatile uint32 tx_dma_thresh
Definition: uart.h:38
unsigned int uint32
符号なし32ビット整数(unsigned int)
Definition: kernel.h:15
volatile uint32 sysc
Definition: uart.h:27
volatile uint32 res4
Definition: uart.h:30
volatile uint32 isr2
Definition: uart.h:34
volatile uint32 wer
Definition: uart.h:29