forgotten files
[rpikern] / src / uart.h
1 #ifndef UART_PL011_H_
2 #define UART_PL011_H_
3
4 #define UART0_BASE              0x3f201000
5 #define UART0_REG(x)    *(volatile uint32_t*)(UART0_BASE | (x))
6
7 #define REG_DR          UART0_REG(0x00) /* data register */
8 #define REG_RSRECR      UART0_REG(0x04) /* receive status & error clear */
9 #define REG_FR          UART0_REG(0x18) /* flag register */
10 #define REG_IBRD        UART0_REG(0x24) /* integer baud rate divisor (low 16 bits) */
11 #define REG_FBRD        UART0_REG(0x28) /* fractional baud rate divisor (low 6 (six) bits) */
12 #define REG_LCRH        UART0_REG(0x2c) /* line control */
13 #define REG_CR          UART0_REG(0x30) /* control register */
14 #define REG_IFLS        UART0_REG(0x34) /* interrupt FIFO level select */
15 #define REG_IMSC        UART0_REG(0x38) /* interrupt mask set clear */
16 #define REG_RIS         UART0_REG(0x3c) /* raw interrupt status */
17 #define REG_MIS         UART0_REG(0x40) /* masked interrupt status */
18 #define REG_ICR         UART0_REG(0x44) /* interrupt clear */
19
20 /* error bits in REG_DR */
21 #define DR_FRM  0x0100
22 #define DR_PAR  0x0200
23 #define DR_BRK  0x0400
24 #define DR_OVR  0x0800
25
26 /* receive status error bits */
27 #define RCR_FRM 0x01
28 #define RCR_PAR 0x02
29 #define RCR_BRK 0x04
30 #define RCR_OVR 0x08
31
32 /* flag register bits */
33 #define FR_CTS  0x01
34 #define FR_BUSY 0x08
35 #define FR_RXFE 0x10    /* receive FIFO empty */
36 #define FR_TXFF 0x20    /* transmit FIFO full */
37 #define FR_RXFF 0x40    /* receive FIFO full */
38 #define FR_TXFE 0x80    /* transmit FIFO empty */
39
40 /* line control register bits */
41 #define LCRH_BRK                0x01    /* send break */
42 #define LCRH_PAREN              0x02
43 #define LCRH_PAREVEN    0x04
44 #define LCRH_STOP2              0x08
45 #define LCRH_FIFOEN             0x10
46 #define LCRH_8BITS              0x60
47 #define LCRH_7BITS              0x40
48 #define LCRH_STICKPAR   0x80    /* ? */
49
50 /* control register bits */
51 #define CR_UARTEN               0x0001
52 #define CR_LOOPEN               0x0080
53 #define CR_TXEN                 0x0100
54 #define CR_RXEN                 0x0200
55 #define CR_RTS                  0x0800
56 #define CR_RTSEN                0x4000
57 #define CR_CTSEN                0x8000
58
59 /* interrupt bits for IMSC, RIS, ICR */
60 #define I_CTS           0x0002
61 #define I_RX            0x0010
62 #define I_TX            0x0020
63 #define I_RTIME         0x0040
64 #define I_FRM           0x0080
65 #define I_PAR           0x0100
66 #define I_BRK           0x0200
67 #define I_OVR           0x0400
68
69 #endif  /* UART_PL011_H_ */