|
8 | 8 |
|
9 | 9 | #include <stdint.h>
|
10 | 10 |
|
| 11 | +#include <plat/platform.h> |
| 12 | +#ifndef PL011_PAGE_OFFSET |
| 13 | +#define PL011_PAGE_OFFSET (0x000) /**< offset in range of 0-0xFFF */ |
| 14 | +#endif |
| 15 | + |
11 | 16 | /* UART Base Address (PL011) */
|
12 | 17 |
|
13 |
| -#define UART_BASE_0 0xFDF02000 |
14 |
| -#define UART_BASE_1 0xFDF00000 |
15 |
| -#define UART_BASE_2 0xFDF03000 |
16 |
| -#define UART_BASE_4 0xFDF01000 |
17 |
| -#define UART_BASE_5 0xFDF05000 |
18 |
| -#define UART_BASE_6 0xFFF32000 |
| 18 | +#define UART_BASE_0 0xFDF02000 |
| 19 | +#define UART_BASE_1 0xFDF00000 |
| 20 | +#define UART_BASE_2 0xFDF03000 |
| 21 | +#define UART_BASE_4 0xFDF01000 |
| 22 | +#define UART_BASE_5 0xFDF05000 |
| 23 | +#define UART_BASE_6 0xFFF32000 |
19 | 24 |
|
20 | 25 | /* UART Interrupts */
|
21 | 26 |
|
22 |
| -#define UART_0_INTERRUPT 106 |
23 |
| -#define UART_1_INTERRUPT 107 |
24 |
| -#define UART_2_INTERRUPT 108 |
25 |
| -#define UART_4_INTERRUPT 109 |
26 |
| -#define UART_5_INTERRUPT 110 |
27 |
| -#define UART_6_INTERRUPT 111 |
| 27 | +#define UART_0_INTERRUPT 106 |
| 28 | +#define UART_1_INTERRUPT 107 |
| 29 | +#define UART_2_INTERRUPT 108 |
| 30 | +#define UART_4_INTERRUPT 109 |
| 31 | +#define UART_5_INTERRUPT 110 |
| 32 | +#define UART_6_INTERRUPT 111 |
28 | 33 |
|
29 |
| -#define NUM_UART 6 |
| 34 | +#define NUM_UART 6 |
30 | 35 |
|
31 |
| -#define UART_CLK 19200000 |
| 36 | +#ifndef UART_CLK |
| 37 | +#define UART_CLK 19200000 |
| 38 | +#endif |
32 | 39 | #define UART_BAUD_RATE 115200
|
33 | 40 |
|
34 | 41 | /* UART Data Register */
|
|
177 | 184 | /* UART (PL011) register structure */
|
178 | 185 |
|
179 | 186 | struct Pl011_Uart_hw {
|
180 |
| - volatile uint32_t data; // UART Data Register |
181 |
| - volatile uint32_t status_error; // UART Receive Status Register/Error Clear |
182 |
| - // Register |
183 |
| - const uint32_t reserved1[4]; // Reserved: 4(0x4) bytes |
184 |
| - volatile uint32_t flag; // UART Flag Register |
185 |
| - const uint32_t reserved2[1]; // Reserved: 1(0x1) bytes |
186 |
| - volatile uint32_t lp_counter; // UART Low-power Counter Register |
187 |
| - volatile uint32_t integer_br; // UART Integer Baud Rate Register |
188 |
| - volatile uint32_t fractional_br; // UART Fractional Baud Rate Register |
189 |
| - volatile uint32_t line_control; // UART Line Control Register |
190 |
| - volatile uint32_t control; // UART Control Register |
191 |
| - volatile uint32_t isr_fifo_level_sel; // UART Interrupt FIFO level Select |
192 |
| - // Register |
193 |
| - volatile uint32_t isr_mask; // UART Interrupt Mask Set/Clear Register |
194 |
| - volatile uint32_t raw_isr_status; // UART Raw Interrupt Status Register |
195 |
| - volatile uint32_t masked_isr_status; // UART Masked Interrupt Status |
196 |
| - // Register |
197 |
| - volatile uint32_t isr_clear; // UART Interrupt Clear Register |
198 |
| - volatile uint32_t DMA_control; // UART DMA control Register |
| 187 | + const uint8_t offset[PL011_PAGE_OFFSET]; // Offset for page alignment |
| 188 | + volatile uint32_t data; // UART Data Register |
| 189 | + volatile uint32_t status_error; // UART Receive Status Register/Error Clear |
| 190 | + // Register |
| 191 | + const uint32_t reserved1[4]; // Reserved: 4(0x4) bytes |
| 192 | + volatile uint32_t flag; // UART Flag Register |
| 193 | + const uint32_t reserved2[1]; // Reserved: 1(0x1) bytes |
| 194 | + volatile uint32_t lp_counter; // UART Low-power Counter Register |
| 195 | + volatile uint32_t integer_br; // UART Integer Baud Rate Register |
| 196 | + volatile uint32_t fractional_br; // UART Fractional Baud Rate Register |
| 197 | + volatile uint32_t line_control; // UART Line Control Register |
| 198 | + volatile uint32_t control; // UART Control Register |
| 199 | + volatile uint32_t isr_fifo_level_sel; // UART Interrupt FIFO level Select |
| 200 | + // Register |
| 201 | + volatile uint32_t isr_mask; // UART Interrupt Mask Set/Clear Register |
| 202 | + volatile uint32_t raw_isr_status; // UART Raw Interrupt Status Register |
| 203 | + volatile uint32_t masked_isr_status; // UART Masked Interrupt Status |
| 204 | + // Register |
| 205 | + volatile uint32_t isr_clear; // UART Interrupt Clear Register |
| 206 | + volatile uint32_t DMA_control; // UART DMA control Register |
199 | 207 | };
|
200 | 208 |
|
201 | 209 | typedef struct Pl011_Uart_hw bao_uart_t;
|
|
0 commit comments