RTEMS
6.3
Toggle main menu visibility
Loading...
Searching...
No Matches
bsps
include
dev
serial
zynq-uart-regs.h
Go to the documentation of this file.
1
8
9
/*
10
* SPDX-License-Identifier: BSD-2-Clause
11
*
12
* Copyright (C) 2013 embedded brains GmbH & Co. KG
13
*
14
* Redistribution and use in source and binary forms, with or without
15
* modification, are permitted provided that the following conditions
16
* are met:
17
* 1. Redistributions of source code must retain the above copyright
18
* notice, this list of conditions and the following disclaimer.
19
* 2. Redistributions in binary form must reproduce the above copyright
20
* notice, this list of conditions and the following disclaimer in the
21
* documentation and/or other materials provided with the distribution.
22
*
23
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
24
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
27
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
28
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
29
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
30
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
31
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
32
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
33
* POSSIBILITY OF SUCH DAMAGE.
34
*/
35
45
46
#ifndef LIBBSP_ARM_XILINX_ZYNQ_UART_REGS_H
47
#define LIBBSP_ARM_XILINX_ZYNQ_UART_REGS_H
48
49
#include <
bsp/utility.h
>
50
51
#define ZYNQ_UART_DEFAULT_BAUD 115200
52
53
#define ZYNQ_UART_FIFO_DEPTH 64
54
55
typedef
struct
zynq_uart
{
56
uint32_t control;
57
#define ZYNQ_UART_CONTROL_STPBRK BSP_BIT32(8)
58
#define ZYNQ_UART_CONTROL_STTBRK BSP_BIT32(7)
59
#define ZYNQ_UART_CONTROL_RSTTO BSP_BIT32(6)
60
#define ZYNQ_UART_CONTROL_TXDIS BSP_BIT32(5)
61
#define ZYNQ_UART_CONTROL_TXEN BSP_BIT32(4)
62
#define ZYNQ_UART_CONTROL_RXDIS BSP_BIT32(3)
63
#define ZYNQ_UART_CONTROL_RXEN BSP_BIT32(2)
64
#define ZYNQ_UART_CONTROL_TXRES BSP_BIT32(1)
65
#define ZYNQ_UART_CONTROL_RXRES BSP_BIT32(0)
66
uint32_t mode;
67
#define ZYNQ_UART_MODE_CHMODE(val) BSP_FLD32(val, 8, 9)
68
#define ZYNQ_UART_MODE_CHMODE_GET(reg) BSP_FLD32GET(reg, 8, 9)
69
#define ZYNQ_UART_MODE_CHMODE_SET(reg, val) BSP_FLD32SET(reg, val, 8, 9)
70
#define ZYNQ_UART_MODE_CHMODE_NORMAL 0x00U
71
#define ZYNQ_UART_MODE_CHMODE_AUTO_ECHO 0x01U
72
#define ZYNQ_UART_MODE_CHMODE_LOCAL_LOOPBACK 0x02U
73
#define ZYNQ_UART_MODE_CHMODE_REMOTE_LOOPBACK 0x03U
74
#define ZYNQ_UART_MODE_NBSTOP(val) BSP_FLD32(val, 6, 7)
75
#define ZYNQ_UART_MODE_NBSTOP_GET(reg) BSP_FLD32GET(reg, 6, 7)
76
#define ZYNQ_UART_MODE_NBSTOP_SET(reg, val) BSP_FLD32SET(reg, val, 6, 7)
77
#define ZYNQ_UART_MODE_NBSTOP_STOP_1 0x00U
78
#define ZYNQ_UART_MODE_NBSTOP_STOP_1_5 0x01U
79
#define ZYNQ_UART_MODE_NBSTOP_STOP_2 0x02U
80
#define ZYNQ_UART_MODE_PAR(val) BSP_FLD32(val, 3, 5)
81
#define ZYNQ_UART_MODE_PAR_GET(reg) BSP_FLD32GET(reg, 3, 5)
82
#define ZYNQ_UART_MODE_PAR_SET(reg, val) BSP_FLD32SET(reg, val, 3, 5)
83
#define ZYNQ_UART_MODE_PAR_EVEN 0x00U
84
#define ZYNQ_UART_MODE_PAR_ODD 0x01U
85
#define ZYNQ_UART_MODE_PAR_SPACE 0x02U
86
#define ZYNQ_UART_MODE_PAR_MARK 0x03U
87
#define ZYNQ_UART_MODE_PAR_MASK ZYNQ_UART_MODE_PAR(7)
88
#define ZYNQ_UART_MODE_PAR_NONE 0x04U
89
#define ZYNQ_UART_MODE_CHRL(val) BSP_FLD32(val, 1, 2)
90
#define ZYNQ_UART_MODE_CHRL_GET(reg) BSP_FLD32GET(reg, 1, 2)
91
#define ZYNQ_UART_MODE_CHRL_SET(reg, val) BSP_FLD32SET(reg, val, 1, 2)
92
#define ZYNQ_UART_MODE_CHRL_8 0x00U
93
#define ZYNQ_UART_MODE_CHRL_7 0x02U
94
#define ZYNQ_UART_MODE_CHRL_6 0x03U
95
#define ZYNQ_UART_MODE_CLKS BSP_BIT32(0)
96
uint32_t irq_en;
97
uint32_t irq_dis;
98
uint32_t irq_mask;
99
uint32_t irq_sts;
100
#define ZYNQ_UART_TOVR BSP_BIT32(12)
101
#define ZYNQ_UART_TNFUL BSP_BIT32(11)
102
#define ZYNQ_UART_TTRIG BSP_BIT32(10)
103
#define ZYNQ_UART_DMSI BSP_BIT32(9)
104
#define ZYNQ_UART_TIMEOUT BSP_BIT32(8)
105
#define ZYNQ_UART_PARE BSP_BIT32(7)
106
#define ZYNQ_UART_FRAME BSP_BIT32(6)
107
#define ZYNQ_UART_ROVR BSP_BIT32(5)
108
#define ZYNQ_UART_TFUL BSP_BIT32(4)
109
#define ZYNQ_UART_TEMPTY BSP_BIT32(3)
110
#define ZYNQ_UART_RFUL BSP_BIT32(2)
111
#define ZYNQ_UART_REMPTY BSP_BIT32(1)
112
#define ZYNQ_UART_RTRIG BSP_BIT32(0)
113
uint32_t baud_rate_gen;
114
#define ZYNQ_UART_BAUD_RATE_GEN_CD(val) BSP_FLD32(val, 0, 15)
115
#define ZYNQ_UART_BAUD_RATE_GEN_CD_GET(reg) BSP_FLD32GET(reg, 0, 15)
116
#define ZYNQ_UART_BAUD_RATE_GEN_CD_SET(reg, val) BSP_FLD32SET(reg, val, 0, 15)
117
uint32_t rx_timeout;
118
#define ZYNQ_UART_RX_TIMEOUT_RTO(val) BSP_FLD32(val, 0, 7)
119
#define ZYNQ_UART_RX_TIMEOUT_RTO_GET(reg) BSP_FLD32GET(reg, 0, 7)
120
#define ZYNQ_UART_RX_TIMEOUT_RTO_SET(reg, val) BSP_FLD32SET(reg, val, 0, 7)
121
uint32_t rx_fifo_trg_lvl;
122
#define ZYNQ_UART_RX_FIFO_TRG_LVL_RTRIG(val) BSP_FLD32(val, 0, 5)
123
#define ZYNQ_UART_RX_FIFO_TRG_LVL_RTRIG_GET(reg) BSP_FLD32GET(reg, 0, 5)
124
#define ZYNQ_UART_RX_FIFO_TRG_LVL_RTRIG_SET(reg, val) BSP_FLD32SET(reg, val, 0, 5)
125
uint32_t modem_ctrl;
126
#define ZYNQ_UART_MODEM_CTRL_FCM BSP_BIT32(5)
127
#define ZYNQ_UART_MODEM_CTRL_RTS BSP_BIT32(1)
128
#define ZYNQ_UART_MODEM_CTRL_DTR BSP_BIT32(0)
129
uint32_t modem_sts;
130
#define ZYNQ_UART_MODEM_STS_FCMS BSP_BIT32(8)
131
#define ZYNQ_UART_MODEM_STS_DCD BSP_BIT32(7)
132
#define ZYNQ_UART_MODEM_STS_RI BSP_BIT32(6)
133
#define ZYNQ_UART_MODEM_STS_DSR BSP_BIT32(5)
134
#define ZYNQ_UART_MODEM_STS_CTS BSP_BIT32(4)
135
#define ZYNQ_UART_MODEM_STS_DDCD BSP_BIT32(3)
136
#define ZYNQ_UART_MODEM_STS_TERI BSP_BIT32(2)
137
#define ZYNQ_UART_MODEM_STS_DDSR BSP_BIT32(1)
138
#define ZYNQ_UART_MODEM_STS_DCTS BSP_BIT32(0)
139
uint32_t channel_sts;
140
#define ZYNQ_UART_CHANNEL_STS_TNFUL BSP_BIT32(14)
141
#define ZYNQ_UART_CHANNEL_STS_TTRIG BSP_BIT32(13)
142
#define ZYNQ_UART_CHANNEL_STS_FDELT BSP_BIT32(12)
143
#define ZYNQ_UART_CHANNEL_STS_TACTIVE BSP_BIT32(11)
144
#define ZYNQ_UART_CHANNEL_STS_RACTIVE BSP_BIT32(10)
145
#define ZYNQ_UART_CHANNEL_STS_TFUL BSP_BIT32(4)
146
#define ZYNQ_UART_CHANNEL_STS_TEMPTY BSP_BIT32(3)
147
#define ZYNQ_UART_CHANNEL_STS_RFUL BSP_BIT32(2)
148
#define ZYNQ_UART_CHANNEL_STS_REMPTY BSP_BIT32(1)
149
#define ZYNQ_UART_CHANNEL_STS_RTRIG BSP_BIT32(0)
150
uint32_t tx_rx_fifo;
151
#define ZYNQ_UART_TX_RX_FIFO_FIFO(val) BSP_FLD32(val, 0, 7)
152
#define ZYNQ_UART_TX_RX_FIFO_FIFO_GET(reg) BSP_FLD32GET(reg, 0, 7)
153
#define ZYNQ_UART_TX_RX_FIFO_FIFO_SET(reg, val) BSP_FLD32SET(reg, val, 0, 7)
154
uint32_t baud_rate_div;
155
#define ZYNQ_UART_BAUD_RATE_DIV_BDIV(val) BSP_FLD32(val, 0, 7)
156
#define ZYNQ_UART_BAUD_RATE_DIV_BDIV_GET(reg) BSP_FLD32GET(reg, 0, 7)
157
#define ZYNQ_UART_BAUD_RATE_DIV_BDIV_SET(reg, val) BSP_FLD32SET(reg, val, 0, 7)
158
uint32_t flow_delay;
159
#define ZYNQ_UART_FLOW_DELAY_FDEL(val) BSP_FLD32(val, 0, 5)
160
#define ZYNQ_UART_FLOW_DELAY_FDEL_GET(reg) BSP_FLD32GET(reg, 0, 5)
161
#define ZYNQ_UART_FLOW_DELAY_FDEL_SET(reg, val) BSP_FLD32SET(reg, val, 0, 5)
162
uint32_t reserved_3c[2];
163
uint32_t tx_fifo_trg_lvl;
164
#define ZYNQ_UART_TX_FIFO_TRG_LVL_TTRIG(val) BSP_FLD32(val, 0, 5)
165
#define ZYNQ_UART_TX_FIFO_TRG_LVL_TTRIG_GET(reg) BSP_FLD32GET(reg, 0, 5)
166
#define ZYNQ_UART_TX_FIFO_TRG_LVL_TTRIG_SET(reg, val) BSP_FLD32SET(reg, val, 0, 5)
167
}
zynq_uart
;
168
169
void
zynq_uart_initialize(
volatile
zynq_uart
*regs);
170
171
int
zynq_uart_read_char_polled(
volatile
zynq_uart
*regs);
172
173
void
zynq_uart_write_char_polled(
volatile
zynq_uart
*regs,
char
c);
174
178
void
zynq_uart_reset_tx_flush
(
volatile
zynq_uart
*regs);
179
183
uint32_t
zynq_uart_input_clock
(
void
);
184
204
uint32_t
zynq_uart_calculate_baud
(
205
uint32_t desired_baud,
206
uint32_t mode_clks,
207
uint32_t *cd_ptr,
208
uint32_t *bdiv_ptr
209
);
210
212
213
#endif
/* LIBBSP_ARM_XILINX_ZYNQ_UART_REGS_H */
zynq_uart_reset_tx_flush
void zynq_uart_reset_tx_flush(volatile zynq_uart *regs)
Definition
zynq-uart-polled.c:160
zynq_uart_input_clock
uint32_t zynq_uart_input_clock(void)
Returns the Zynq UART input clock frequency in Hz.
Definition
zynq-uart-input-clock.c:41
zynq_uart_calculate_baud
uint32_t zynq_uart_calculate_baud(uint32_t desired_baud, uint32_t mode_clks, uint32_t *cd_ptr, uint32_t *bdiv_ptr)
Calculates the clock and baud divisor of the best approximation of the desired baud.
Definition
zynq-uart-polled.c:60
utility.h
This header file provides utility macros for BSPs.
zynq_uart
Definition
zynq-uart-regs.h:55
Generated by
1.18.0