1  /*******************************************************************************
2  * Copyright 2019-2020 Microchip FPGA Embedded Systems Solutions.
3  *
4  * SPDX-License-Identifier: MIT
5  *
6  * Register bit offsets and masks definitions for PolarFire SoC MSS MMUART
7  *
8  */
9 
10 #ifndef MSS_UART_REGS_H_
11 #define MSS_UART_REGS_H_
12 
13 #ifdef __cplusplus
14 extern "C" {
15 #endif
16 
17 /*******************************************************************************
18  Register Bit definitions
19  */
20 
21 /* Line Control register bit definitions */
22 #define SB                          6u                  /* Set break */
23 #define DLAB                        7u                  /* Divisor latch access bit */
24 
25 /* Line Control register bit masks */
26 #define SB_MASK                     (0x01u << SB)        /* Set break */
27 #define DLAB_MASK                   (0x01u << DLAB)      /* Divisor latch access bit */
28 
29 /* FIFO Control register bit definitions */
30 #define RXRDY_TXRDYN_EN             0u                  /* Enable TXRDY and RXRDY signals */
31 #define CLEAR_RX_FIFO               1u                  /* Clear receiver FIFO */
32 #define CLEAR_TX_FIFO               2u                  /* Clear transmitter FIFO */
33 #define RDYMODE                     3u                  /* Mode 0 or Mode 1 for TXRDY and RXRDY */
34 
35 /* FIFO Control register bit MASKS */
36 #define RXRDY_TXRDYN_EN_MASK        (0x01u << 0u)      /* Enable TXRDY and RXRDY signals */
37 #define CLEAR_RX_FIFO_MASK          (0x01u << 1u)      /* Clear receiver FIFO */
38 #define CLEAR_TX_FIFO_MASK          (0x01u << 2u)      /* Clear transmitter FIFO */
39 #define RDYMODE_MASK                (0x01u << 3u)      /* Mode 0 or Mode 1 for TXRDY and RXRDY */
40 
41 /* Modem Control register bit definitions */
42 #define LOOP                        4u                  /* Local loopback */
43 #define RLOOP                       5u                  /* Remote loopback */
44 #define ECHO                        6u                  /* Automatic echo */
45 
46 /* Modem Control register bit MASKS */
47 #define LOOP_MASK                   (0x01u << 4u)        /* Local loopback */
48 #define RLOOP_MASK                  (0x01u << 5u)        /* Remote loopback & Automatic echo*/
49 #define ECHO_MASK                   (0x01u << 6u)        /* Automatic echo */
50 
51 /* Line Status register bit definitions   */
52 #define DR                          0u                  /* Data ready */
53 #define THRE                        5u                  /* Transmitter holding register empty */
54 #define TEMT                        6u                  /* Transmitter empty */
55 
56 /* Line Status register bit MASKS   */
57 #define DR_MASK                     (0x01u << 0u)        /* Data ready */
58 #define THRE_MASK                   (0x01u << 5u)        /* Transmitter holding register empty */
59 #define TEMT_MASK                   (0x01u << 6u)        /* Transmitter empty */
60 
61 /* Interrupt Enable register bit definitions */
62 #define ERBFI                       0u                  /* Enable receiver buffer full interrupt */
63 #define ETBEI                       1u                  /* Enable transmitter buffer empty interrupt */
64 #define ELSI                        2u                  /* Enable line status interrupt */
65 #define EDSSI                       3u                  /* Enable modem status interrupt */
66 
67 /* Interrupt Enable register bit MASKS */
68 #define ERBFI_MASK                  (0x01u << 0u)      /* Enable receiver buffer full interrupt */
69 #define ETBEI_MASK                  (0x01u << 1u)      /* Enable transmitter buffer empty interrupt */
70 #define ELSI_MASK                   (0x01u << 2u)      /* Enable line status interrupt */
71 #define EDSSI_MASK                  (0x01u << 3u)      /* Enable modem status interrupt */
72 
73 /* Multimode register 0 bit definitions */
74 #define ELIN                        3u                  /* Enable LIN header detection */
75 #define ETTG                        5u                  /* Enable transmitter time guard */
76 #define ERTO                        6u                  /* Enable receiver time-out */
77 #define EFBR                        7u                  /* Enable fractional baud rate mode */
78 
79 /* Multimode register 0 bit MASKS */
80 #define ELIN_MASK                   (0x01u << 3u)      /* Enable LIN header detection */
81 #define ETTG_MASK                   (0x01u << 5u)      /* Enable transmitter time guard */
82 #define ERTO_MASK                   (0x01u << 6u)      /* Enable receiver time-out */
83 #define EFBR_MASK                   (0x01u << 7u)      /* Enable fractional baud rate mode */
84 
85 /* Multimode register 1 bit definitions */
86 #define E_MSB_RX                    0u                  /* MSB / LSB first for receiver */
87 #define E_MSB_TX                    1u                  /* MSB / LSB first for transmitter */
88 #define EIRD                        2u                  /* Enable IrDA modem */
89 #define EIRX                        3u                  /* Input polarity for IrDA modem */
90 #define EITX                        4u                  /* Output polarity for IrDA modem */
91 #define EITP                        5u                  /* Output pulse width for IrDA modem */
92 
93 /* Multimode register 1 bit MASKS */
94 #define E_MSB_RX_MASK               (0x01u << 0u)      /* MSB / LSB first for receiver */
95 #define E_MSB_TX_MASK               (0x01u << 1u)      /* MSB / LSB first for transmitter */
96 #define EIRD_MASK                   (0x01u << 2u)      /* Enable IrDA modem */
97 #define EIRX_MASK                   (0x01u << 3u)      /* Input polarity for IrDA modem */
98 #define EITX_MASK                   (0x01u << 4u)      /* Output polarity for IrDA modem */
99 #define EITP_MASK                   (0x01u << 5u)      /* Output pulse width for IrDA modem */
100 
101 /* Multimode register 2 bit definitions */
102 #define EERR                        0u                  /* Enable ERR / NACK during stop time */
103 #define EAFM                        1u                  /* Enable 9-bit address flag mode */
104 #define EAFC                        2u                  /* Enable address flag clear */
105 #define ESWM                        3u                  /* Enable single wire half-duplex mode */
106 
107 /* Multimode register 2 bit MASKS */
108 #define EERR_MASK                   (0x01u << 0u)      /* Enable ERR / NACK during stop time */
109 #define EAFM_MASK                   (0x01u << 1u)      /* Enable 9-bit address flag mode */
110 #define EAFC_MASK                   (0x01u << 2u)      /* Enable address flag clear */
111 #define ESWM_MASK                   (0x01u << 3u)      /* Enable single wire half-duplex mode */
112 
113 /* Multimode Interrupt Enable register and
114    Multimode Interrupt Identification register definitions */
115 #define ERTOI                       0u                  /* Enable receiver timeout interrupt */
116 #define ENACKI                      1u                  /* Enable NACK / ERR interrupt */
117 #define EPID_PEI                    2u                  /* Enable PID parity error interrupt */
118 #define ELINBI                      3u                  /* Enable LIN break interrupt */
119 #define ELINSI                      4u                  /* Enable LIN sync detection interrupt */
120 
121 /* Multimode Interrupt Enable register and
122    Multimode Interrupt Identification register MASKS */
123 #define ERTOI_MASK                  (0x01u << 0u)      /* Enable receiver timeout interrupt */
124 #define ENACKI_MASK                 (0x01u << 1u)      /* Enable NACK / ERR interrupt */
125 #define EPID_PEI_MASK               (0x01u << 2u)      /* Enable PID parity error interrupt */
126 #define ELINBI_MASK                 (0x01u << 3u)      /* Enable LIN break interrupt */
127 #define ELINSI_MASK                 (0x01u << 4u)      /* Enable LIN sync detection interrupt */
128 
129 #ifdef __cplusplus
130 }
131 #endif
132 
133 #endif /* MSS_UART_REGS_H_ */
134