Coverage Report

Created: 2017-10-25 09:10

/root/src/xen/xen/include/xen/8250-uart.h
Line
Count
Source (jump to first uncovered line)
1
/*
2
 * xen/include/xen/8250-uart.h
3
 *
4
 * This header is extracted from driver/char/ns16550.c
5
 *
6
 * Common constant definition between early printk and the UART driver
7
 * for the 16550-series UART
8
 *
9
 * Copyright (c) 2003-2005, K A Fraser
10
 *
11
 * This program is free software; you can redistribute it and/or modify
12
 * it under the terms of the GNU General Public License as published by
13
 * the Free Software Foundation; either version 2 of the License, or
14
 * (at your option) any later version.
15
 *
16
 * This program is distributed in the hope that it will be useful,
17
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19
 * GNU General Public License for more details.
20
 */
21
22
#ifndef __XEN_8250_UART_H__
23
#define __XEN_8250_UART_H__
24
25
/* Register offsets */
26
0
#define UART_RBR          0x00    /* receive buffer       */
27
141k
#define UART_THR          0x00    /* transmit holding     */
28
3.57M
#define UART_IER          0x01    /* interrupt enable     */
29
14.3k
#define UART_IIR          0x02    /* interrupt identity   */
30
2
#define UART_FCR          0x02    /* FIFO control         */
31
2
#define UART_LCR          0x03    /* line control         */
32
3
#define UART_MCR          0x04    /* Modem control        */
33
3.42M
#define UART_LSR          0x05    /* line status          */
34
1
#define UART_MSR          0x06    /* Modem status         */
35
0
#define UART_USR          0x1f    /* Status register (DW) */
36
1
#define UART_DLL          0x00    /* divisor latch (ls) (DLAB=1) */
37
1
#define UART_DLM          0x01    /* divisor latch (ms) (DLAB=1) */
38
39
/* Interrupt Enable Register */
40
1
#define UART_IER_ERDAI    0x01    /* rx data recv'd       */
41
157k
#define UART_IER_ETHREI   0x02    /* tx reg. empty        */
42
#define UART_IER_ELSI     0x04    /* rx line status       */
43
#define UART_IER_EMSI     0x08    /* MODEM status         */
44
45
/* Interrupt Identification Register */
46
14.3k
#define UART_IIR_NOINT    0x01    /* no interrupt pending */
47
#define UART_IIR_IMA      0x06    /* interrupt identity:  */
48
#define UART_IIR_LSI      0x06    /*  - rx line status    */
49
#define UART_IIR_RDA      0x04    /*  - rx data recv'd    */
50
#define UART_IIR_THR      0x02    /*  - tx reg. empty     */
51
#define UART_IIR_MSI      0x00    /*  - MODEM status      */
52
0
#define UART_IIR_BSY      0x07    /*  - busy detect (DW) */
53
54
/* FIFO Control Register */
55
1
#define UART_FCR_ENABLE   0x01    /* enable FIFO          */
56
1
#define UART_FCR_CLRX     0x02    /* clear Rx FIFO        */
57
1
#define UART_FCR_CLTX     0x04    /* clear Tx FIFO        */
58
#define UART_FCR_DMA      0x10    /* enter DMA mode       */
59
#define UART_FCR_TRG1     0x00    /* Rx FIFO trig lev 1   */
60
#define UART_FCR_TRG4     0x40    /* Rx FIFO trig lev 4   */
61
#define UART_FCR_TRG8     0x80    /* Rx FIFO trig lev 8   */
62
3
#define UART_FCR_TRG14    0xc0    /* Rx FIFO trig lev 14  */
63
64
/*
65
 * Note: The FIFO trigger levels are chip specific:
66
 *  RX:76 = 00  01  10  11  TX:54 = 00  01  10  11
67
 * PC16550D:   1   4   8  14    xx  xx  xx  xx
68
 * TI16C550A:  1   4   8  14          xx  xx  xx  xx
69
 * TI16C550C:  1   4   8  14          xx  xx  xx  xx
70
 * ST16C550:   1   4   8  14    xx  xx  xx  xx
71
 * ST16C650:   8  16  24  28    16   8  24  30  PORT_16650V2
72
 * NS16C552:   1   4   8  14    xx  xx  xx  xx
73
 * ST16C654:   8  16  56  60     8  16  32  56  PORT_16654
74
 * TI16C750:   1  16  32  56    xx  xx  xx  xx  PORT_16750
75
 * TI16C752:   8  16  56  60     8  16  32  56
76
 * Tegra:  1   4   8  14    16   8   4   1  PORT_TEGRA
77
 */
78
#define UART_FCR_R_TRIG_00 0x00
79
#define UART_FCR_R_TRIG_01 0x40
80
#define UART_FCR_R_TRIG_10 0x80
81
#define UART_FCR_R_TRIG_11 0xc0
82
#define UART_FCR_T_TRIG_00 0x00
83
#define UART_FCR_T_TRIG_01 0x10
84
#define UART_FCR_T_TRIG_10 0x20
85
#define UART_FCR_T_TRIG_11 0x30
86
87
/* Line Control Register */
88
1
#define UART_LCR_DLAB     0x80    /* Divisor Latch Access */
89
90
/*
91
 * Access to some registers depends on register access / configuration
92
 * mode.
93
 */
94
#define UART_LCR_CONF_MODE_A  UART_LCR_DLAB /* Configuration mode A */
95
#define UART_LCR_CONF_MODE_B  0xBF    /* Configuration mode B */
96
97
/* Modem Control Register */
98
2
#define UART_MCR_DTR      0x01    /* Data Terminal Ready  */
99
2
#define UART_MCR_RTS      0x02    /* Request to Send      */
100
1
#define UART_MCR_OUT2     0x08    /* OUT2: interrupt mask */
101
1
#define UART_MCR_LOOP     0x10    /* Enable loopback test mode */
102
#define UART_MCR_TCRTLR   0x40    /* Access TCR/TLR (TI16C752, EFR[4]=1) */
103
104
/* Line Status Register */
105
5.32k
#define UART_LSR_DR       0x01    /* Data ready           */
106
#define UART_LSR_OE       0x02    /* Overrun              */
107
#define UART_LSR_PE       0x04    /* Parity error         */
108
#define UART_LSR_FE       0x08    /* Framing error        */
109
#define UART_LSR_BI       0x10    /* Break                */
110
2
#define UART_LSR_THRE     0x20    /* Xmit hold reg empty  */
111
#define UART_LSR_TEMT     0x40    /* Xmitter empty        */
112
#define UART_LSR_ERR      0x80    /* Error                */
113
114
/* These parity settings can be ORed directly into the LCR. */
115
3
#define UART_PARITY_NONE  (0<<3)
116
0
#define UART_PARITY_ODD   (1<<3)
117
0
#define UART_PARITY_EVEN  (3<<3)
118
0
#define UART_PARITY_MARK  (5<<3)
119
0
#define UART_PARITY_SPACE (7<<3)
120
121
/* Frequency of external clock source. This definition assumes PC platform. */
122
2
#define UART_CLOCK_HZ     1843200
123
124
/* Resume retry settings */
125
0
#define RESUME_DELAY      MILLISECS(10)
126
0
#define RESUME_RETRIES    100
127
128
#endif /* __XEN_8250_UART_H__ */
129
130
/*
131
 * Local variables:
132
 * mode: C
133
 * c-file-style: "BSD"
134
 * c-basic-offset: 4
135
 * indent-tabs-mode: nil
136
 * End:
137
 */