comparison gsm-fw/lldbg/ns16550.h @ 865:f5affe83ba2d

lldbg hack (poor girl's substitute for JTAG) implemented
author Space Falcon <falcon@ivan.Harhan.ORG>
date Fri, 15 May 2015 00:02:03 +0000
parents
children
comparison
equal deleted inserted replaced
864:4fa939eada22 865:f5affe83ba2d
1 #ifndef __NS16550_H
2 #define __NS16550_H
3
4 /* NS16550 registers */
5 #define NS16550_RBR 0
6 #define NS16550_THR 0
7 #define NS16550_IER 1
8 #define NS16550_IIR 2
9 #define NS16550_FCR 2
10 #define NS16550_LCR 3
11 #define NS16550_MCR 4
12 #define NS16550_LSR 5
13 #define NS16550_MSR 6
14 #define NS16550_SCR 7
15 #define NS16550_DLL 0
16 #define NS16550_DLM 1
17
18 #ifndef __ASSEMBLER__
19 #include "types.h"
20
21 struct ns16550_regs {
22 u8 datareg;
23 u8 ier;
24 u8 iir_fcr;
25 u8 lcr;
26 u8 mcr;
27 u8 lsr;
28 u8 msr;
29 u8 scr;
30 };
31 #endif
32
33 /* IER bits */
34 #define NS16550_IER_EDSSI 0x08
35 #define NS16550_IER_ELSI 0x04
36 #define NS16550_IER_ETBEI 0x02
37 #define NS16550_IER_ERBFI 0x01
38
39 /* IIR bits */
40 #define NS16550_IIR_FIFOEN 0xC0
41 #define NS16550_IIR_INTID 0x0E
42 #define NS16550_IIR_INT_RLS 0x06
43 #define NS16550_IIR_INT_RDA 0x04
44 #define NS16550_IIR_INT_CTO 0x0C
45 #define NS16550_IIR_INT_THRE 0x02
46 #define NS16550_IIR_INT_MODEM 0x00
47 #define NS16550_IIR_INTPEND 0x01
48
49 /* FCR bits */
50
51 #define NS16550_FCR_RXTR 0xC0
52 #define NS16550_FCR_RXTR_1 0x00
53 #define NS16550_FCR_RXTR_4 0x40
54 #define NS16550_FCR_RXTR_8 0x80
55 #define NS16550_FCR_RXTR_14 0xC0
56 #define NS16550_FCR_DMAMODE 0x08
57 #define NS16550_FCR_TXRST 0x04
58 #define NS16550_FCR_RXRST 0x02
59 #define NS16550_FCR_FIFOEN 0x01
60
61 /* LCR bits */
62 #define NS16550_LCR_DLAB 0x80
63 #define NS16550_LCR_BREAK 0x40
64 #define NS16550_LCR_STICK 0x20
65 #define NS16550_LCR_EPS 0x10
66 #define NS16550_LCR_PEN 0x08
67 #define NS16550_LCR_STB 0x04
68 #define NS16550_LCR_WLS 0x03
69 #define NS16550_LCR_WLS_5 0x00
70 #define NS16550_LCR_WLS_6 0x01
71 #define NS16550_LCR_WLS_7 0x02
72 #define NS16550_LCR_WLS_8 0x03
73
74 /* MCR bits */
75 #define NS16550_MCR_LOOP 0x10
76 #define NS16550_MCR_OUT2 0x08
77 #define NS16550_MCR_OUT1 0x04
78 #define NS16550_MCR_RTS 0x02
79 #define NS16550_MCR_DTR 0x01
80
81 /* LSR bits */
82 #define NS16550_LSR_ERR 0x80
83 #define NS16550_LSR_TEMP 0x40
84 #define NS16550_LSR_THRE 0x20
85 #define NS16550_LSR_BI 0x10
86 #define NS16550_LSR_FE 0x08
87 #define NS16550_LSR_PE 0x04
88 #define NS16550_LSR_OE 0x02
89 #define NS16550_LSR_DR 0x01
90
91 /* MSR bits */
92 #define NS16550_MSR_DCD 0x80
93 #define NS16550_MSR_RI 0x40
94 #define NS16550_MSR_DSR 0x20
95 #define NS16550_MSR_CTS 0x10
96 #define NS16550_MSR_DDCD 0x08
97 #define NS16550_MSR_TERI 0x04
98 #define NS16550_MSR_DDSR 0x02
99 #define NS16550_MSR_DCTS 0x01
100
101 #endif /* __NS16550_H */