RTEMS
6.3
Toggle main menu visibility
Loading...
Searching...
No Matches
bsps
m68k
mrm332
console
sci.h
1
/****************************************************************************
2
* File: sci.h
3
*
4
* Desc: This is the include file for the serial communications interface.
5
*
6
* Note: See bsp.h,confdefs.h,system.h for installing drivers into RTEMS.
7
*
8
****************************************************************************/
9
10
#ifndef _sci_h_
11
#define _sci_h_
12
13
/*******************************************************************************
14
IOCTL commands for the sci driver.
15
I'm still working on these...
16
*******************************************************************************/
17
18
#define SCI_IOCTL_PARITY_NONE 0x00
/* no parity bit after the data bits */
19
#define SCI_IOCTL_PARITY_ODD 0x01
/* parity bit added after data bits */
20
#define SCI_IOCTL_PARITY_EVEN 0x02
/* parity bit added after data bits */
21
#define SCI_IOCTL_PARITY_MARK 0x03
/* parity bit is lo, -12 volts, logical 1 */
22
#define SCI_IOCTL_PARITY_SPACE 0x04
/* parity bit is hi, +12 volts, logical 0 */
23
#define SCI_IOCTL_PARITY_FORCED_ON 0x03
/* parity bit is forced hi or lo */
24
#define SCI_IOCTL_PARITY_FORCED_OFF 0x04
/* parity bit is forced hi or lo */
25
26
#define SCI_IOCTL_BAUD_RATE 0x20
/* set the baud rate, arg is baud */
27
28
#define SCI_IOCTL_DATA_BITS 0x30
/* set the data bits, arg is # bits */
29
30
#define SCI_IOCTL_STOP_BITS_1 0x40
/* 1 stop bit after char frame */
31
#define SCI_IOCTL_STOP_BITS_2 0x41
/* 2 stop bit after char frame */
32
33
#define SCI_IOCTL_MODE_NORMAL 0x50
/* normal operating mode */
34
#define SCI_IOCTL_MODE_LOOP 0x51
/* internal loopback mode */
35
36
#define SCI_IOCTL_FLOW_NONE 0x60
/* no flow control */
37
#define SCI_IOCTL_FLOW_RTS_CTS 0x61
/* hardware flow control */
38
39
#define SCI_IOCTL_SEND_BREAK 0x70
/* send an rs-232 break */
40
41
#define SCI_IOCTL_MODE_1200 0x80
/* 1200,n,8,1 download mode */
42
#define SCI_IOCTL_MODE_9600 0x81
/* 9600,n,8,1 download mode */
43
#define SCI_IOCTL_MODE_9_BIT 0x82
/* 9600,forced,8,1 command mode */
44
45
46
/*******************************************************************************
47
SCI Registers
48
*******************************************************************************/
49
50
/* SCI Control Register 0 (SCCR0) $FFFC08
51
52
8 4 2 1 - 8 4 2 1 - 8 4 2 1 - 8 4 2 1
53
^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
54
| | | | | | | | | | | | | | | |
55
| | | | | | | | | | | | | | | +----- 0 baud rate divisor
56
| | | | | | | | | | | | | | +------- 1 baud rate divisor
57
| | | | | | | | | | | | | +--------- 2 baud rate divisor
58
| | | | | | | | | | | | +----------- 3 baud rate divisor
59
| | | | | | | | | | | |
60
| | | | | | | | | | | +--------------- 4 baud rate divisor
61
| | | | | | | | | | +----------------- 5 baud rate divisor
62
| | | | | | | | | +------------------- 6 baud rate divisor
63
| | | | | | | | +--------------------- 7 baud rate divisor
64
| | | | | | | |
65
| | | | | | | +------------------------- 8 baud rate divisor
66
| | | | | | +--------------------------- 9 baud rate divisor
67
| | | | | +----------------------------- 10 baud rate divisor
68
| | | | +------------------------------- 11 baud rate divisor
69
| | | |
70
| | | +----------------------------------- 12 baud rate divisor
71
| | +------------------------------------- 13 unused
72
| +--------------------------------------- 14 unused
73
+----------------------------------------- 15 unused
74
75
0 0 0 0 - 0 0 0 0 - 0 0 0 0 - 0 1 0 0 reset value - (64k baud?)
76
*/
77
78
#define SCI_BAUD_57_6K 9
79
#define SCI_BAUD_38_4K 14
80
#define SCI_BAUD_19_2K 27
81
#define SCI_BAUD_9600 55
82
#define SCI_BAUD_4800 109
83
#define SCI_BAUD_2400 218
84
#define SCI_BAUD_1200 437
85
86
87
/* SCI Control Register 1 (SCCR1) $FFFC0A
88
89
8 4 2 1 - 8 4 2 1 - 8 4 2 1 - 8 4 2 1
90
^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
91
| | | | | | | | | | | | | | | |
92
| | | | | | | | | | | | | | | +----- 0 send a break
93
| | | | | | | | | | | | | | +------- 1 rcvr wakeup mode
94
| | | | | | | | | | | | | +--------- 2 rcvr enable
95
| | | | | | | | | | | | +----------- 3 xmtr enable
96
| | | | | | | | | | | |
97
| | | | | | | | | | | +--------------- 4 idle line intr enable
98
| | | | | | | | | | +----------------- 5 rcvr intr enable
99
| | | | | | | | | +------------------- 6 xmit complete intr enable
100
| | | | | | | | +--------------------- 7 xmtr intr enable
101
| | | | | | | |
102
| | | | | | | +------------------------- 8 wakeup on address mark
103
| | | | | | +--------------------------- 9 mode 1=9 bits, 0=8 bits
104
| | | | | +----------------------------- 10 parity enable 1=on, 0=off
105
| | | | +------------------------------- 11 parity type 1=odd, 0=even
106
| | | |
107
| | | +----------------------------------- 12 idle line select
108
| | +------------------------------------- 13 wired-or mode
109
| +--------------------------------------- 14 loop mode
110
+----------------------------------------- 15 unused
111
112
0 0 0 0 - 0 0 0 0 - 0 0 0 0 - 0 0 0 0 reset value
113
*/
114
115
#define SCI_SEND_BREAK 0x0001
/* 0000-0000-0000-0001 */
116
#define SCI_RCVR_WAKEUP 0x0002
/* 0000-0000-0000-0010 */
117
#define SCI_ENABLE_RCVR 0x0004
/* 0000-0000-0000-0100 */
118
#define SCI_ENABLE_XMTR 0x0008
/* 0000-0000-0000-1000 */
119
120
#define SCI_DISABLE_RCVR 0xFFFB
/* 1111-1111-1111-1011 */
121
#define SCI_DISABLE_XMTR 0xFFF7
/* 1111-1111-1111-0111 */
122
123
#define SCI_ENABLE_INT_IDLE 0x0010
/* 0000-0000-0001-0000 */
124
#define SCI_ENABLE_INT_RX 0x0020
/* 0000-0000-0010-0000 */
125
#define SCI_ENABLE_INT_TX_DONE 0x0040
/* 0000-0000-0100-0000 */
126
#define SCI_ENABLE_INT_TX 0x0080
/* 0000-0000-1000-0000 */
127
128
#define SCI_DISABLE_INT_ALL 0xFF00
/* 1111-1111-0000-0000 ??? */
129
130
#define SCI_DISABLE_INT_RX 0xFFDF
/* 1111-1111-1101-1111 */
131
#define SCI_CLEAR_RX_INT 0xFFBF
/* 1111-1111-1011-1111 */
132
#define SCI_DISABLE_INT_TX 0xFF7F
/* 1111-1111-0111-1111 */
133
#define SCI_CLEAR_TDRE 0xFEFF
/* 1111-1110-1111-1111 */
134
135
#define SCI_RCVR_WAKE_ON_MARK 0x0100
/* 0000-0001-0000-0000 */
136
#define SCI_9_DATA_BITS 0x0200
/* 0000-0010-0000-0000 */
137
#define SCI_PARITY_ENABLE 0x0400
/* 0000-0100-0000-0000 */
138
#define SCI_PARITY_ODD 0x0800
/* 0000-1000-0000-0000 */
139
140
#define SCI_RCVR_WAKE_ON_IDLE 0xFEFF
/* 1111-1110-1111-1111 */
141
#define SCI_8_DATA_BITS 0xFDFF
/* 1111-1101-1111-1111 */
142
#define SCI_PARITY_DISABLE 0xFBFF
/* 1111-1011-1111-1111 */
143
#define SCI_PARITY_EVEN 0xF7FF
/* 1111-0111-1111-1111 */
144
145
#define SCI_PARITY_NONE 0xF3FF
/* 1111-0011-1111-1111 */
146
147
#define SCI_IDLE_LINE_LONG 0x1000
/* 0001-0000-0000-0000 */
148
#define SCI_TXD_OPEN_DRAIN 0x2000
/* 0010-0000-0000-0000 */
149
#define SCI_LOOPBACK_MODE 0x4000
/* 0100-0000-0000-0000 */
150
#define SCI_SCCR1_UNUSED 0x8000
/* 1000-0000-0000-0000 */
151
152
153
/* SCI Status Register (SCSR) $FFFC0C
154
155
8 4 2 1 - 8 4 2 1 - 8 4 2 1 - 8 4 2 1
156
^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
157
| | | | | | | | | | | | | | | |
158
| | | | | | | | | | | | | | | +----- 0 PF - parity error
159
| | | | | | | | | | | | | | +------- 1 FE - framing error
160
| | | | | | | | | | | | | +--------- 2 NF - noise flag
161
| | | | | | | | | | | | +----------- 3 OR - overrun flag
162
| | | | | | | | | | | |
163
| | | | | | | | | | | +--------------- 4 IDLE - idle line detected
164
| | | | | | | | | | +----------------- 5 RAF - rcvr active flag
165
| | | | | | | | | +------------------- 6 RDRF - rcv data reg full
166
| | | | | | | | +--------------------- 7 TC - xmt complete flag
167
| | | | | | | |
168
| | | | | | | +------------------------- 8 TDRE - xmt data reg empty
169
| | | | | | +--------------------------- 9 always zero
170
| | | | | +----------------------------- 10 always zero
171
| | | | +------------------------------- 11 always zero
172
| | | |
173
| | | +----------------------------------- 12 always zero
174
| | +------------------------------------- 13 always zero
175
| +--------------------------------------- 14 always zero
176
+----------------------------------------- 15 always zero
177
178
0 0 0 0 - 0 0 0 1 - 1 0 0 0 - 0 0 0 0 reset value
179
*/
180
181
#define SCI_ERROR_PARITY 0x0001
/* 0000-0000-0000-0001 */
182
#define SCI_ERROR_FRAMING 0x0002
/* 0000-0000-0000-0010 */
183
#define SCI_ERROR_NOISE 0x0004
/* 0000-0000-0000-0100 */
184
#define SCI_ERROR_OVERRUN 0x0008
/* 0000-0000-0000-1000 */
185
186
#define SCI_IDLE_LINE 0x0010
/* 0000-0000-0001-0000 */
187
#define SCI_RCVR_ACTIVE 0x0020
/* 0000-0000-0010-0000 */
188
#define SCI_RCVR_READY 0x0040
/* 0000-0000-0100-0000 */
189
#define SCI_XMTR_IDLE 0x0080
/* 0000-0000-1000-0000 */
190
191
#define SCI_CLEAR_RX_INT 0xFFBF
/* 1111-1111-1011-1111 */
192
193
#define SCI_XMTR_READY 0x0100
/* 0000-0001-0000-0000 */
194
195
#define SCI_CLEAR_TDRE 0xFEFF
/* 1111-1110-1111-1111 */
196
197
#define SCI_XMTR_AVAILABLE 0x0180
/* 0000-0001-1000-0000 */
198
199
200
201
/*******************************************************************************
202
Function prototypes
203
*******************************************************************************/
204
205
#ifdef __cplusplus
206
extern
"C"
{
207
#endif
208
209
/* look at console_open to see how this is called */
210
211
const
rtems_termios_callbacks
* SciGetTermiosHandlers( int32_t polled );
212
213
/* SCI interrupt */
214
215
/*rtems_isr SciIsr( rtems_vector_number vector ); */
216
217
/*int32_t SciOpenPolled ( int32_t major, int32_t minor, void *arg ); */
218
/*int32_t SciOpenInterrupt ( int32_t major, int32_t minor, void *arg ); */
219
220
/*int32_t SciClose ( int32_t major, int32_t minor, void *arg ); */
221
222
/*int32_t SciWritePolled ( int32_t minor, const char *buf, int32_t len ); */
223
/*int32_t SciWriteInterrupt( int32_t minor, const char *buf, int32_t len ); */
224
225
/*int32_t SciReadPolled ( int32_t minor ); */
226
227
/*int32_t SciSetAttributes ( int32_t minor, const struct termios *t ); */
228
229
#ifdef __cplusplus
230
}
231
#endif
232
233
#endif
/* _sci_h_ */
rtems_termios_callbacks
Definition
libio.h:1986
Generated by
1.18.0