HPM SDK
HPMicro Software Development Kit
hpm_uart_regs.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2021-2025 HPMicro
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 
8 
9 #ifndef HPM_UART_H
10 #define HPM_UART_H
11 
12 typedef struct {
13  __R uint8_t RESERVED0[4]; /* 0x0 - 0x3: Reserved */
14  __RW uint32_t IDLE_CFG; /* 0x4: Idle Configuration Register */
15  __R uint8_t RESERVED1[8]; /* 0x8 - 0xF: Reserved */
16  __RW uint32_t CFG; /* 0x10: Configuration Register */
17  __RW uint32_t OSCR; /* 0x14: Over Sample Control Register */
18  __R uint8_t RESERVED2[8]; /* 0x18 - 0x1F: Reserved */
19  union {
20  __R uint32_t RBR; /* 0x20: Receiver Buffer Register (when DLAB = 0) */
21  __W uint32_t THR; /* 0x20: Transmitter Holding Register (when DLAB = 0) */
22  __RW uint32_t DLL; /* 0x20: Divisor Latch LSB (when DLAB = 1) */
23  };
24  union {
25  __RW uint32_t IER; /* 0x24: Interrupt Enable Register (when DLAB = 0) */
26  __RW uint32_t DLM; /* 0x24: Divisor Latch MSB (when DLAB = 1) */
27  };
28  union {
29  __RW uint32_t IIR; /* 0x28: Interrupt Identification Register */
30  __W uint32_t FCR; /* 0x28: FIFO Control Register */
31  };
32  __RW uint32_t LCR; /* 0x2C: Line Control Register */
33  __RW uint32_t MCR; /* 0x30: Modem Control Register ( */
34  __R uint32_t LSR; /* 0x34: Line Status Register */
35  __R uint32_t MSR; /* 0x38: Modem Status Register */
36  __RW uint32_t GPR; /* 0x3C: GPR Register */
37 } UART_Type;
38 
39 
40 /* Bitfield definition for register: IDLE_CFG */
41 /*
42  * RX_IDLE_COND (RW)
43  *
44  * IDLE Detection Condition
45  * 0 - Treat as idle if RX pin is logic one
46  * 1 - Treat as idle if UART state machine state is idle
47  */
48 #define UART_IDLE_CFG_RX_IDLE_COND_MASK (0x200U)
49 #define UART_IDLE_CFG_RX_IDLE_COND_SHIFT (9U)
50 #define UART_IDLE_CFG_RX_IDLE_COND_SET(x) (((uint32_t)(x) << UART_IDLE_CFG_RX_IDLE_COND_SHIFT) & UART_IDLE_CFG_RX_IDLE_COND_MASK)
51 #define UART_IDLE_CFG_RX_IDLE_COND_GET(x) (((uint32_t)(x) & UART_IDLE_CFG_RX_IDLE_COND_MASK) >> UART_IDLE_CFG_RX_IDLE_COND_SHIFT)
52 
53 /*
54  * RX_IDLE_EN (RW)
55  *
56  * UART Idle Detect Enable
57  * 0 - Disable
58  * 1 - Enable
59  * it should be enabled if enable address match feature
60  */
61 #define UART_IDLE_CFG_RX_IDLE_EN_MASK (0x100U)
62 #define UART_IDLE_CFG_RX_IDLE_EN_SHIFT (8U)
63 #define UART_IDLE_CFG_RX_IDLE_EN_SET(x) (((uint32_t)(x) << UART_IDLE_CFG_RX_IDLE_EN_SHIFT) & UART_IDLE_CFG_RX_IDLE_EN_MASK)
64 #define UART_IDLE_CFG_RX_IDLE_EN_GET(x) (((uint32_t)(x) & UART_IDLE_CFG_RX_IDLE_EN_MASK) >> UART_IDLE_CFG_RX_IDLE_EN_SHIFT)
65 
66 /*
67  * RX_IDLE_THR (RW)
68  *
69  * Threshold for UART Receive Idle detection (in terms of bits)
70  */
71 #define UART_IDLE_CFG_RX_IDLE_THR_MASK (0xFFU)
72 #define UART_IDLE_CFG_RX_IDLE_THR_SHIFT (0U)
73 #define UART_IDLE_CFG_RX_IDLE_THR_SET(x) (((uint32_t)(x) << UART_IDLE_CFG_RX_IDLE_THR_SHIFT) & UART_IDLE_CFG_RX_IDLE_THR_MASK)
74 #define UART_IDLE_CFG_RX_IDLE_THR_GET(x) (((uint32_t)(x) & UART_IDLE_CFG_RX_IDLE_THR_MASK) >> UART_IDLE_CFG_RX_IDLE_THR_SHIFT)
75 
76 /* Bitfield definition for register: CFG */
77 /*
78  * FIFOSIZE (RO)
79  *
80  * The depth of RXFIFO and TXFIFO
81  * 0: 16-byte FIFO
82  * 1: 32-byte FIFO
83  * 2: 64-byte FIFO
84  * 3: 128-byte FIFO
85  */
86 #define UART_CFG_FIFOSIZE_MASK (0x3U)
87 #define UART_CFG_FIFOSIZE_SHIFT (0U)
88 #define UART_CFG_FIFOSIZE_GET(x) (((uint32_t)(x) & UART_CFG_FIFOSIZE_MASK) >> UART_CFG_FIFOSIZE_SHIFT)
89 
90 /* Bitfield definition for register: OSCR */
91 /*
92  * OSC (RW)
93  *
94  * Over-sample control
95  * The value must be an even number; any odd value
96  * writes to this field will be converted to an even value.
97  * OSC=0: reserved
98  * OSC<=8: The over-sample ratio is 8
99  * 8 < OSC< 32: The over sample ratio is OSC
100  */
101 #define UART_OSCR_OSC_MASK (0x1FU)
102 #define UART_OSCR_OSC_SHIFT (0U)
103 #define UART_OSCR_OSC_SET(x) (((uint32_t)(x) << UART_OSCR_OSC_SHIFT) & UART_OSCR_OSC_MASK)
104 #define UART_OSCR_OSC_GET(x) (((uint32_t)(x) & UART_OSCR_OSC_MASK) >> UART_OSCR_OSC_SHIFT)
105 
106 /* Bitfield definition for register: RBR */
107 /*
108  * RBR (RO)
109  *
110  * Receive data read port
111  */
112 #define UART_RBR_RBR_MASK (0xFFU)
113 #define UART_RBR_RBR_SHIFT (0U)
114 #define UART_RBR_RBR_GET(x) (((uint32_t)(x) & UART_RBR_RBR_MASK) >> UART_RBR_RBR_SHIFT)
115 
116 /* Bitfield definition for register: THR */
117 /*
118  * THR (WO)
119  *
120  * Transmit data write port
121  */
122 #define UART_THR_THR_MASK (0xFFU)
123 #define UART_THR_THR_SHIFT (0U)
124 #define UART_THR_THR_SET(x) (((uint32_t)(x) << UART_THR_THR_SHIFT) & UART_THR_THR_MASK)
125 #define UART_THR_THR_GET(x) (((uint32_t)(x) & UART_THR_THR_MASK) >> UART_THR_THR_SHIFT)
126 
127 /* Bitfield definition for register: DLL */
128 /*
129  * DLL (RW)
130  *
131  * Least significant byte of the Divisor Latch
132  */
133 #define UART_DLL_DLL_MASK (0xFFU)
134 #define UART_DLL_DLL_SHIFT (0U)
135 #define UART_DLL_DLL_SET(x) (((uint32_t)(x) << UART_DLL_DLL_SHIFT) & UART_DLL_DLL_MASK)
136 #define UART_DLL_DLL_GET(x) (((uint32_t)(x) & UART_DLL_DLL_MASK) >> UART_DLL_DLL_SHIFT)
137 
138 /* Bitfield definition for register: IER */
139 /*
140  * ERXIDLE (RW)
141  *
142  * Enable Receive Idle interrupt
143  * 0 - Disable Idle interrupt
144  * 1 - Enable Idle interrupt
145  */
146 #define UART_IER_ERXIDLE_MASK (0x80000000UL)
147 #define UART_IER_ERXIDLE_SHIFT (31U)
148 #define UART_IER_ERXIDLE_SET(x) (((uint32_t)(x) << UART_IER_ERXIDLE_SHIFT) & UART_IER_ERXIDLE_MASK)
149 #define UART_IER_ERXIDLE_GET(x) (((uint32_t)(x) & UART_IER_ERXIDLE_MASK) >> UART_IER_ERXIDLE_SHIFT)
150 
151 /*
152  * EMSI (RW)
153  *
154  * Enable modem status interrupt
155  * The interrupt asserts when the status of one of the
156  * following occurs:
157  * The status of modem_rin, modem_dcdn,
158  * modem_dsrn or modem_ctsn (If the auto-cts mode is
159  * disabled) has been changed.
160  * If the auto-cts mode is enabled (MCR bit4 (AFE) = 1),
161  * modem_ctsn would be used to control the transmitter.
162  */
163 #define UART_IER_EMSI_MASK (0x8U)
164 #define UART_IER_EMSI_SHIFT (3U)
165 #define UART_IER_EMSI_SET(x) (((uint32_t)(x) << UART_IER_EMSI_SHIFT) & UART_IER_EMSI_MASK)
166 #define UART_IER_EMSI_GET(x) (((uint32_t)(x) & UART_IER_EMSI_MASK) >> UART_IER_EMSI_SHIFT)
167 
168 /*
169  * ELSI (RW)
170  *
171  * Enable receiver line status interrupt
172  */
173 #define UART_IER_ELSI_MASK (0x4U)
174 #define UART_IER_ELSI_SHIFT (2U)
175 #define UART_IER_ELSI_SET(x) (((uint32_t)(x) << UART_IER_ELSI_SHIFT) & UART_IER_ELSI_MASK)
176 #define UART_IER_ELSI_GET(x) (((uint32_t)(x) & UART_IER_ELSI_MASK) >> UART_IER_ELSI_SHIFT)
177 
178 /*
179  * ETHEI (RW)
180  *
181  * Enable transmitter holding register interrupt
182  */
183 #define UART_IER_ETHEI_MASK (0x2U)
184 #define UART_IER_ETHEI_SHIFT (1U)
185 #define UART_IER_ETHEI_SET(x) (((uint32_t)(x) << UART_IER_ETHEI_SHIFT) & UART_IER_ETHEI_MASK)
186 #define UART_IER_ETHEI_GET(x) (((uint32_t)(x) & UART_IER_ETHEI_MASK) >> UART_IER_ETHEI_SHIFT)
187 
188 /*
189  * ERBI (RW)
190  *
191  * Enable received data available interrupt and the
192  * character timeout interrupt
193  * 0: Disable
194  * 1: Enable
195  */
196 #define UART_IER_ERBI_MASK (0x1U)
197 #define UART_IER_ERBI_SHIFT (0U)
198 #define UART_IER_ERBI_SET(x) (((uint32_t)(x) << UART_IER_ERBI_SHIFT) & UART_IER_ERBI_MASK)
199 #define UART_IER_ERBI_GET(x) (((uint32_t)(x) & UART_IER_ERBI_MASK) >> UART_IER_ERBI_SHIFT)
200 
201 /* Bitfield definition for register: DLM */
202 /*
203  * DLM (RW)
204  *
205  * Most significant byte of the Divisor Latch
206  */
207 #define UART_DLM_DLM_MASK (0xFFU)
208 #define UART_DLM_DLM_SHIFT (0U)
209 #define UART_DLM_DLM_SET(x) (((uint32_t)(x) << UART_DLM_DLM_SHIFT) & UART_DLM_DLM_MASK)
210 #define UART_DLM_DLM_GET(x) (((uint32_t)(x) & UART_DLM_DLM_MASK) >> UART_DLM_DLM_SHIFT)
211 
212 /* Bitfield definition for register: IIR */
213 /*
214  * RXIDLE_FLAG (W1C)
215  *
216  * UART IDLE Flag
217  * 0 - UART is busy
218  * 1 - UART is idle
219  * NOTE: when write one to clear this bit, avoid changging FCR register since it's same address as IIR
220  */
221 #define UART_IIR_RXIDLE_FLAG_MASK (0x80000000UL)
222 #define UART_IIR_RXIDLE_FLAG_SHIFT (31U)
223 #define UART_IIR_RXIDLE_FLAG_SET(x) (((uint32_t)(x) << UART_IIR_RXIDLE_FLAG_SHIFT) & UART_IIR_RXIDLE_FLAG_MASK)
224 #define UART_IIR_RXIDLE_FLAG_GET(x) (((uint32_t)(x) & UART_IIR_RXIDLE_FLAG_MASK) >> UART_IIR_RXIDLE_FLAG_SHIFT)
225 
226 /*
227  * FIFOED (RO)
228  *
229  * FIFOs enabled
230  * These two bits are 1 when bit 0 of the FIFO Control
231  * Register (FIFOE) is set to 1.
232  */
233 #define UART_IIR_FIFOED_MASK (0xC0U)
234 #define UART_IIR_FIFOED_SHIFT (6U)
235 #define UART_IIR_FIFOED_GET(x) (((uint32_t)(x) & UART_IIR_FIFOED_MASK) >> UART_IIR_FIFOED_SHIFT)
236 
237 /*
238  * INTRID (RO)
239  *
240  * Interrupt ID, see IIR2 for detail decoding
241  */
242 #define UART_IIR_INTRID_MASK (0xFU)
243 #define UART_IIR_INTRID_SHIFT (0U)
244 #define UART_IIR_INTRID_GET(x) (((uint32_t)(x) & UART_IIR_INTRID_MASK) >> UART_IIR_INTRID_SHIFT)
245 
246 /* Bitfield definition for register: FCR */
247 /*
248  * RFIFOT (WO)
249  *
250  * Receiver FIFO trigger level(0 for 1byte, 0x3 for 4bytes). Uart will send rx_dma_req if data in fifo reachs the threshold
251  */
252 #define UART_FCR_RFIFOT_MASK (0xC0U)
253 #define UART_FCR_RFIFOT_SHIFT (6U)
254 #define UART_FCR_RFIFOT_SET(x) (((uint32_t)(x) << UART_FCR_RFIFOT_SHIFT) & UART_FCR_RFIFOT_MASK)
255 #define UART_FCR_RFIFOT_GET(x) (((uint32_t)(x) & UART_FCR_RFIFOT_MASK) >> UART_FCR_RFIFOT_SHIFT)
256 
257 /*
258  * TFIFOT (WO)
259  *
260  * Transmitter FIFO trigger level(0 for 1byte, 0x3 for 4bytes), uart will send tx_dma_req when data in fifo is less than threshold.
261  */
262 #define UART_FCR_TFIFOT_MASK (0x30U)
263 #define UART_FCR_TFIFOT_SHIFT (4U)
264 #define UART_FCR_TFIFOT_SET(x) (((uint32_t)(x) << UART_FCR_TFIFOT_SHIFT) & UART_FCR_TFIFOT_MASK)
265 #define UART_FCR_TFIFOT_GET(x) (((uint32_t)(x) & UART_FCR_TFIFOT_MASK) >> UART_FCR_TFIFOT_SHIFT)
266 
267 /*
268  * DMAE (WO)
269  *
270  * DMA enable
271  * 0: Disable
272  * 1: Enable
273  */
274 #define UART_FCR_DMAE_MASK (0x8U)
275 #define UART_FCR_DMAE_SHIFT (3U)
276 #define UART_FCR_DMAE_SET(x) (((uint32_t)(x) << UART_FCR_DMAE_SHIFT) & UART_FCR_DMAE_MASK)
277 #define UART_FCR_DMAE_GET(x) (((uint32_t)(x) & UART_FCR_DMAE_MASK) >> UART_FCR_DMAE_SHIFT)
278 
279 /*
280  * TFIFORST (WO)
281  *
282  * Transmitter FIFO reset
283  * Write 1 to clear all bytes in the TXFIFO and resets its
284  * counter. The Transmitter Shift Register is not cleared.
285  * This bit will automatically be cleared.
286  */
287 #define UART_FCR_TFIFORST_MASK (0x4U)
288 #define UART_FCR_TFIFORST_SHIFT (2U)
289 #define UART_FCR_TFIFORST_SET(x) (((uint32_t)(x) << UART_FCR_TFIFORST_SHIFT) & UART_FCR_TFIFORST_MASK)
290 #define UART_FCR_TFIFORST_GET(x) (((uint32_t)(x) & UART_FCR_TFIFORST_MASK) >> UART_FCR_TFIFORST_SHIFT)
291 
292 /*
293  * RFIFORST (WO)
294  *
295  * Receiver FIFO reset
296  * Write 1 to clear all bytes in the RXFIFO and resets its
297  * counter. The Receiver Shift Register is not cleared.
298  * This bit will automatically be cleared.
299  */
300 #define UART_FCR_RFIFORST_MASK (0x2U)
301 #define UART_FCR_RFIFORST_SHIFT (1U)
302 #define UART_FCR_RFIFORST_SET(x) (((uint32_t)(x) << UART_FCR_RFIFORST_SHIFT) & UART_FCR_RFIFORST_MASK)
303 #define UART_FCR_RFIFORST_GET(x) (((uint32_t)(x) & UART_FCR_RFIFORST_MASK) >> UART_FCR_RFIFORST_SHIFT)
304 
305 /*
306  * FIFOE (WO)
307  *
308  * FIFO enable
309  * Write 1 to enable both the transmitter and receiver
310  * FIFOs.
311  * The FIFOs are reset when the value of this bit toggles.
312  */
313 #define UART_FCR_FIFOE_MASK (0x1U)
314 #define UART_FCR_FIFOE_SHIFT (0U)
315 #define UART_FCR_FIFOE_SET(x) (((uint32_t)(x) << UART_FCR_FIFOE_SHIFT) & UART_FCR_FIFOE_MASK)
316 #define UART_FCR_FIFOE_GET(x) (((uint32_t)(x) & UART_FCR_FIFOE_MASK) >> UART_FCR_FIFOE_SHIFT)
317 
318 /* Bitfield definition for register: LCR */
319 /*
320  * DLAB (RW)
321  *
322  * Divisor latch access bit
323  */
324 #define UART_LCR_DLAB_MASK (0x80U)
325 #define UART_LCR_DLAB_SHIFT (7U)
326 #define UART_LCR_DLAB_SET(x) (((uint32_t)(x) << UART_LCR_DLAB_SHIFT) & UART_LCR_DLAB_MASK)
327 #define UART_LCR_DLAB_GET(x) (((uint32_t)(x) & UART_LCR_DLAB_MASK) >> UART_LCR_DLAB_SHIFT)
328 
329 /*
330  * BC (RW)
331  *
332  * Break control
333  */
334 #define UART_LCR_BC_MASK (0x40U)
335 #define UART_LCR_BC_SHIFT (6U)
336 #define UART_LCR_BC_SET(x) (((uint32_t)(x) << UART_LCR_BC_SHIFT) & UART_LCR_BC_MASK)
337 #define UART_LCR_BC_GET(x) (((uint32_t)(x) & UART_LCR_BC_MASK) >> UART_LCR_BC_SHIFT)
338 
339 /*
340  * SPS (RW)
341  *
342  * Stick parity
343  * 1: Parity bit is constant 0 or 1, depending on bit4 (EPS).
344  * 0: Disable the sticky bit parity.
345  */
346 #define UART_LCR_SPS_MASK (0x20U)
347 #define UART_LCR_SPS_SHIFT (5U)
348 #define UART_LCR_SPS_SET(x) (((uint32_t)(x) << UART_LCR_SPS_SHIFT) & UART_LCR_SPS_MASK)
349 #define UART_LCR_SPS_GET(x) (((uint32_t)(x) & UART_LCR_SPS_MASK) >> UART_LCR_SPS_SHIFT)
350 
351 /*
352  * EPS (RW)
353  *
354  * Even parity select
355  * 1: Even parity (an even number of logic-1 is in the data
356  * and parity bits)
357  * 0: Old parity.
358  */
359 #define UART_LCR_EPS_MASK (0x10U)
360 #define UART_LCR_EPS_SHIFT (4U)
361 #define UART_LCR_EPS_SET(x) (((uint32_t)(x) << UART_LCR_EPS_SHIFT) & UART_LCR_EPS_MASK)
362 #define UART_LCR_EPS_GET(x) (((uint32_t)(x) & UART_LCR_EPS_MASK) >> UART_LCR_EPS_SHIFT)
363 
364 /*
365  * PEN (RW)
366  *
367  * Parity enable
368  * When this bit is set, a parity bit is generated in
369  * transmitted data before the first STOP bit and the parity
370  * bit would be checked for the received data.
371  */
372 #define UART_LCR_PEN_MASK (0x8U)
373 #define UART_LCR_PEN_SHIFT (3U)
374 #define UART_LCR_PEN_SET(x) (((uint32_t)(x) << UART_LCR_PEN_SHIFT) & UART_LCR_PEN_MASK)
375 #define UART_LCR_PEN_GET(x) (((uint32_t)(x) & UART_LCR_PEN_MASK) >> UART_LCR_PEN_SHIFT)
376 
377 /*
378  * STB (RW)
379  *
380  * Number of STOP bits
381  * 0: 1 bits
382  * 1: The number of STOP bit is based on the WLS setting
383  * When WLS = 0, STOP bit is 1.5 bits
384  * When WLS = 1, 2, 3, STOP bit is 2 bits
385  */
386 #define UART_LCR_STB_MASK (0x4U)
387 #define UART_LCR_STB_SHIFT (2U)
388 #define UART_LCR_STB_SET(x) (((uint32_t)(x) << UART_LCR_STB_SHIFT) & UART_LCR_STB_MASK)
389 #define UART_LCR_STB_GET(x) (((uint32_t)(x) & UART_LCR_STB_MASK) >> UART_LCR_STB_SHIFT)
390 
391 /*
392  * WLS (RW)
393  *
394  * Word length setting
395  * 0: 5 bits
396  * 1: 6 bits
397  * 2: 7 bits
398  * 3: 8 bits
399  */
400 #define UART_LCR_WLS_MASK (0x3U)
401 #define UART_LCR_WLS_SHIFT (0U)
402 #define UART_LCR_WLS_SET(x) (((uint32_t)(x) << UART_LCR_WLS_SHIFT) & UART_LCR_WLS_MASK)
403 #define UART_LCR_WLS_GET(x) (((uint32_t)(x) & UART_LCR_WLS_MASK) >> UART_LCR_WLS_SHIFT)
404 
405 /* Bitfield definition for register: MCR */
406 /*
407  * AFE (RW)
408  *
409  * Auto flow control enable
410  * 0: Disable
411  * 1: The auto-CTS and auto-RTS setting is based on the
412  * RTS bit setting:
413  * When RTS = 0, auto-CTS only
414  * When RTS = 1, auto-CTS and auto-RTS
415  */
416 #define UART_MCR_AFE_MASK (0x20U)
417 #define UART_MCR_AFE_SHIFT (5U)
418 #define UART_MCR_AFE_SET(x) (((uint32_t)(x) << UART_MCR_AFE_SHIFT) & UART_MCR_AFE_MASK)
419 #define UART_MCR_AFE_GET(x) (((uint32_t)(x) & UART_MCR_AFE_MASK) >> UART_MCR_AFE_SHIFT)
420 
421 /*
422  * LOOP (RW)
423  *
424  * Enable loopback mode
425  * 0: Disable
426  * 1: Enable
427  */
428 #define UART_MCR_LOOP_MASK (0x10U)
429 #define UART_MCR_LOOP_SHIFT (4U)
430 #define UART_MCR_LOOP_SET(x) (((uint32_t)(x) << UART_MCR_LOOP_SHIFT) & UART_MCR_LOOP_MASK)
431 #define UART_MCR_LOOP_GET(x) (((uint32_t)(x) & UART_MCR_LOOP_MASK) >> UART_MCR_LOOP_SHIFT)
432 
433 /*
434  * RTS (RW)
435  *
436  * Request to send
437  * This bit controls the modem_rtsn output.
438  * 0: The modem_rtsn output signal will be driven HIGH
439  * 1: The modem_rtsn output signal will be driven LOW
440  */
441 #define UART_MCR_RTS_MASK (0x2U)
442 #define UART_MCR_RTS_SHIFT (1U)
443 #define UART_MCR_RTS_SET(x) (((uint32_t)(x) << UART_MCR_RTS_SHIFT) & UART_MCR_RTS_MASK)
444 #define UART_MCR_RTS_GET(x) (((uint32_t)(x) & UART_MCR_RTS_MASK) >> UART_MCR_RTS_SHIFT)
445 
446 /* Bitfield definition for register: LSR */
447 /*
448  * ERRF (RO)
449  *
450  * Error in RXFIFO
451  * In the FIFO mode, this bit is set when there is at least
452  * one parity error, framing error, or line break
453  * associated with data in the RXFIFO. It is cleared when
454  * this register is read and there is no more error for the
455  * rest of data in the RXFIFO.
456  */
457 #define UART_LSR_ERRF_MASK (0x80U)
458 #define UART_LSR_ERRF_SHIFT (7U)
459 #define UART_LSR_ERRF_GET(x) (((uint32_t)(x) & UART_LSR_ERRF_MASK) >> UART_LSR_ERRF_SHIFT)
460 
461 /*
462  * TEMT (RO)
463  *
464  * Transmitter empty
465  * This bit is 1 when the THR (TXFIFO in the FIFO
466  * mode) and the Transmitter Shift Register (TSR) are
467  * both empty. Otherwise, it is zero.
468  */
469 #define UART_LSR_TEMT_MASK (0x40U)
470 #define UART_LSR_TEMT_SHIFT (6U)
471 #define UART_LSR_TEMT_GET(x) (((uint32_t)(x) & UART_LSR_TEMT_MASK) >> UART_LSR_TEMT_SHIFT)
472 
473 /*
474  * THRE (RO)
475  *
476  * Transmitter Holding Register empty
477  * This bit is 1 when the THR (TXFIFO in the FIFO
478  * mode) is empty. Otherwise, it is zero.
479  * If the THRE interrupt is enabled, an interrupt is
480  * triggered when THRE becomes 1.
481  */
482 #define UART_LSR_THRE_MASK (0x20U)
483 #define UART_LSR_THRE_SHIFT (5U)
484 #define UART_LSR_THRE_GET(x) (((uint32_t)(x) & UART_LSR_THRE_MASK) >> UART_LSR_THRE_SHIFT)
485 
486 /*
487  * LBREAK (RO)
488  *
489  * Line break
490  * This bit is set when the uart_sin input signal was held
491  * LOWfor longer than the time for a full-word
492  * transmission. A full-word transmission is the
493  * transmission of the START, data, parity, and STOP
494  * bits. It is cleared when this register is read.
495  * In the FIFO mode, this bit indicates the line break for
496  * the received data at the top of the RXFIFO.
497  */
498 #define UART_LSR_LBREAK_MASK (0x10U)
499 #define UART_LSR_LBREAK_SHIFT (4U)
500 #define UART_LSR_LBREAK_GET(x) (((uint32_t)(x) & UART_LSR_LBREAK_MASK) >> UART_LSR_LBREAK_SHIFT)
501 
502 /*
503  * FE (RO)
504  *
505  * Framing error
506  * This bit is set when the received STOP bit is not
507  * HIGH. It is cleared when this register is read.
508  * In the FIFO mode, this bit indicates the framing error
509  * for the received data at the top of the RXFIFO.
510  */
511 #define UART_LSR_FE_MASK (0x8U)
512 #define UART_LSR_FE_SHIFT (3U)
513 #define UART_LSR_FE_GET(x) (((uint32_t)(x) & UART_LSR_FE_MASK) >> UART_LSR_FE_SHIFT)
514 
515 /*
516  * PE (RO)
517  *
518  * Parity error
519  * This bit is set when the received parity does not match
520  * with the parity selected in the LCR[5:4]. It is cleared
521  * when this register is read.
522  * In the FIFO mode, this bit indicates the parity error
523  * for the received data at the top of the RXFIFO.
524  */
525 #define UART_LSR_PE_MASK (0x4U)
526 #define UART_LSR_PE_SHIFT (2U)
527 #define UART_LSR_PE_GET(x) (((uint32_t)(x) & UART_LSR_PE_MASK) >> UART_LSR_PE_SHIFT)
528 
529 /*
530  * OE (RO)
531  *
532  * Overrun error
533  * This bit indicates that data in the Receiver Buffer
534  * Register (RBR) is overrun.
535  */
536 #define UART_LSR_OE_MASK (0x2U)
537 #define UART_LSR_OE_SHIFT (1U)
538 #define UART_LSR_OE_GET(x) (((uint32_t)(x) & UART_LSR_OE_MASK) >> UART_LSR_OE_SHIFT)
539 
540 /*
541  * DR (RO)
542  *
543  * Data ready.
544  * This bit is set when there are incoming received data
545  * in the Receiver Buffer Register (RBR). It is cleared
546  * when all of the received data are read.
547  */
548 #define UART_LSR_DR_MASK (0x1U)
549 #define UART_LSR_DR_SHIFT (0U)
550 #define UART_LSR_DR_GET(x) (((uint32_t)(x) & UART_LSR_DR_MASK) >> UART_LSR_DR_SHIFT)
551 
552 /* Bitfield definition for register: MSR */
553 /*
554  * CTS (RO)
555  *
556  * Clear to send
557  * 0: The modem_ctsn input signal is HIGH.
558  * 1: The modem_ctsn input signal is LOW.
559  */
560 #define UART_MSR_CTS_MASK (0x10U)
561 #define UART_MSR_CTS_SHIFT (4U)
562 #define UART_MSR_CTS_GET(x) (((uint32_t)(x) & UART_MSR_CTS_MASK) >> UART_MSR_CTS_SHIFT)
563 
564 /*
565  * DCTS (RC)
566  *
567  * Delta clear to send
568  * This bit is set when the state of the modem_ctsn input
569  * signal has been changed since the last time this
570  * register is read.
571  */
572 #define UART_MSR_DCTS_MASK (0x1U)
573 #define UART_MSR_DCTS_SHIFT (0U)
574 #define UART_MSR_DCTS_GET(x) (((uint32_t)(x) & UART_MSR_DCTS_MASK) >> UART_MSR_DCTS_SHIFT)
575 
576 /* Bitfield definition for register: GPR */
577 /*
578  * DATA (RW)
579  *
580  * A one-byte storage register
581  */
582 #define UART_GPR_DATA_MASK (0xFFU)
583 #define UART_GPR_DATA_SHIFT (0U)
584 #define UART_GPR_DATA_SET(x) (((uint32_t)(x) << UART_GPR_DATA_SHIFT) & UART_GPR_DATA_MASK)
585 #define UART_GPR_DATA_GET(x) (((uint32_t)(x) & UART_GPR_DATA_MASK) >> UART_GPR_DATA_SHIFT)
586 
587 
588 
589 
590 #endif /* HPM_UART_H */
Definition: hpm_uart_regs.h:12