QDNix
Quick’n’dirty *NIX
uart.c
1
#include "arch.h"
2
3
#define UART0_BASE_ADDR 0x01C28000
4
#define UART1_BASE_ADDR 0x01C28400
5
#define UART2_BASE_ADDR 0x01C28800
6
#define UART3_BASE_ADDR 0x01C28C00
7
#define R_UART_BASE_ADDR 0x01F02800
8
9
#define UART0(x) (UART0_BASE_ADDR + x)
10
#define UART1(x) (UART1_BASE_ADDR + x)
11
#define UART2(x) (UART2_BASE_ADDR + x)
12
#define UART3(x) (UART3_BASE_ADDR + x)
13
#define R_UART(x) (R_UART_BASE_ADDR + x)
14
15
#define UART_RECV_BUFF_REG 0x00
16
#define UART_TRANSMIT_HOLDING_REG 0x00
17
#define UART_DIV_LATCH_LOW_REG 0x00
18
#define UART_DIV_LATCH_HIGH_REG 0x04
19
#define UART_INT_ENABLE_REG 0x04
20
#define UART_INT_ID_REG 0x08
21
#define UART_FIFO_CONTROL_REG 0x08
22
#define UART_LINE_CONTROL_REG 0x0C
23
#define UART_MODEM_CONTROL_REG 0x10
24
#define UART_LINE_STATUS_REG 0x14
25
#define UART_MODEM_STATUS_REG 0x18
26
#define UART_SCRATCH_REG 0x1C
27
#define UART_STATUS_REG 0x7C
28
#define UART_TRANSMIT_FIFO_LEVEL 0x80
29
#define UART_RFL 0x84
30
#define UART_HALT_TX_REG 0xA4
31
32
void
33
uart_init(
void
)
34
{
35
36
}
37
38
void
39
uart_putchar(uint8_t c)
40
{
41
while
((mmio_read32(UART0(UART_LINE_STATUS_REG)) & (1 << 5)) > 0)
42
{}
43
mmio_write32(UART0(UART_TRANSMIT_HOLDING_REG), c);
44
}
sys
arm
soc
cortex-a7
uart.c
Generated by
1.9.1