source: rtems/c/src/libchip/serial/mc68681_p.h @ efaf85fa

4.104.114.84.9
Last change on this file since efaf85fa was efaf85fa, checked in by Joel Sherrill <joel.sherrill@…>, on Jul 15, 1998 at 11:21:30 PM

Added interrupt mask and interrupt status register bit constants.

Added prototype for mc68681_build_imr(), mc68681_process(), and
mc68681_enable_interrupts().

  • Property mode set to 100644
File size: 10.3 KB
Line 
1/*
2 *
3 *  COPYRIGHT (c) 1989-1998.
4 *  On-Line Applications Research Corporation (OAR).
5 *  Copyright assigned to U.S. Government, 1994.
6 *
7 *  The license and distribution terms for this file may be
8 *  found in the file LICENSE in this distribution or at
9 *  http://www.OARcorp.com/rtems/license.html.
10 *
11 *  $Id$
12 */
13
14#ifndef _MC68681_P_H_
15#define _MC68681_P_H_
16
17#ifdef __cplusplus
18extern "C" {
19#endif
20
21/*
22 *  Define MC68681_STATIC to nothing while debugging so the entry points
23 *  will show up in the symbol table.
24 */
25
26#define MC68681_STATIC
27
28/* #define MC68681_STATIC static */
29
30/*
31 * mc68681 register offsets Read/Write Addresses
32 */
33
34#define MC68681_MODE_REG_1A  0  /* MR1A-MR Prior to Read */
35#define MC68681_MODE_REG_2A  0  /* MR2A-MR After Read    */
36
37#define MC68681_COUNT_MODE_CURRENT_MSB       6  /* CTU   */
38#define MC68681_COUNTER_TIMER_UPPER_REG      6  /* CTU   */
39#define MC68681_COUNT_MODE_CURRENT_LSB       7  /* CTL   */
40#define MC68681_COUNTER_TIMER_LOWER_REG      7  /* CTL   */
41#define MC68681_INTERRUPT_VECTOR_REG        12  /* IVR   */
42
43#define MC68681_MODE_REG_1B  8  /* MR1B-MR Prior to Read */
44#define MC68681_MODE_REG_2B  8  /* MR2BA-MR After Read   */
45
46/*
47 * mc68681 register offsets Read Only  Addresses
48 */
49
50#define MC68681_STATUS_REG_A                 1  /* SRA   */
51#define MC68681_MASK_ISR_REG                 2  /* MISR  */
52#define MC68681_RECEIVE_BUFFER_A             3  /* RHRA  */
53#define MC68681_INPUT_PORT_CHANGE_REG        4  /* IPCR  */
54#define MC68681_INTERRUPT_STATUS_REG         5  /* ISR   */
55#define MC68681_STATUS_REG_B                 9  /* SRB   */
56#define MC68681_RECEIVE_BUFFER_B            11  /* RHRB  */
57#define MC68681_INPUT_PORT                  13  /* IP    */
58#define MC68681_START_COUNT_CMD             14  /* SCC   */
59#define MC68681_STOP_COUNT_CMD              15  /* STC   */
60
61/*
62 * mc68681 register offsets Write Only  Addresses
63 */
64
65#define MC68681_CLOCK_SELECT_REG_A           1  /* CSRA  */
66#define MC68681_COMMAND_REG_A                2  /* CRA   */
67#define MC68681_TRANSMIT_BUFFER_A            3  /* THRA  */
68#define MC68681_AUX_CTRL_REG                 4  /* ACR   */
69#define MC68681_INTERRUPT_MASK_REG           5  /* IMR   */
70#define MC68681_CLOCK_SELECT_REG_B           9  /* CSRB  */
71#define MC68681_COMMAND_REG_B               10  /* CRB   */
72#define MC68681_TRANSMIT_BUFFER_B           11  /* THRB  */
73#define MC68681_OUTPUT_PORT_CONFIG_REG      13  /* OPCR  */
74#define MC68681_OUTPUT_PORT_SET_REG         14  /* SOPBC */
75#define MC68681_OUTPUT_PORT_RESET_BITS      15  /* COPBC */
76
77/*
78 *  DUART Command Register Definitions:
79 *
80 *  MC68681_COMMAND_REG_A,MC68681_COMMAND_REG_B
81 */
82
83#define MC68681_MODE_REG_ENABLE_RX                          0x01
84#define MC68681_MODE_REG_DISABLE_RX                         0x02
85#define MC68681_MODE_REG_ENABLE_TX                          0x04
86#define MC68681_MODE_REG_DISABLE_TX                         0x08
87#define MC68681_MODE_REG_RESET_MR_PTR                       0x10
88#define MC68681_MODE_REG_RESET_RX                           0x20
89#define MC68681_MODE_REG_RESET_TX                           0x30
90#define MC68681_MODE_REG_RESET_ERROR                        0x40
91#define MC68681_MODE_REG_RESET_BREAK                        0x50
92#define MC68681_MODE_REG_START_BREAK                        0x60
93#define MC68681_MODE_REG_STOP_BREAK                         0x70
94#define MC68681_MODE_REG_SET_RX_BRG                         0x80
95#define MC68681_MODE_REG_CLEAR_RX_BRG                       0x90
96#define MC68681_MODE_REG_SET_TX_BRG                         0xa0
97#define MC68681_MODE_REG_CLEAR_TX_BRG                       0xb0
98#define MC68681_MODE_REG_SET_STANDBY                        0xc0
99#define MC68681_MODE_REG_SET_ACTIVE                         0xd0
100
101/*
102 * Mode Register Definitions
103 *
104 *  MC68681_MODE_REG_1A
105 *  MC68681_MODE_REG_1B
106 */
107
108#define MC68681_5BIT_CHARS                                  0x00
109#define MC68681_6BIT_CHARS                                  0x01
110#define MC68681_7BIT_CHARS                                  0x02
111#define MC68681_8BIT_CHARS                                  0x03
112
113#define MC68681_ODD_PARITY                                  0x00
114#define MC68681_EVEN_PARITY                                 0x04
115
116#define MC68681_WITH_PARITY                                 0x00
117#define MC68681_FORCE_PARITY                                0x08
118#define MC68681_NO_PARITY                                   0x10
119#define MC68681_MULTI_DROP                                  0x18
120
121#define MC68681_ERR_MODE_CHAR                               0x00
122#define MC68681_ERR_MODE_BLOCK                              0x20
123
124#define MC68681_RX_INTR_RX_READY                            0x00
125#define MC68681_RX_INTR_FFULL                               0x40
126
127#define MC68681_NO_RX_RTS_CTL                               0x00
128#define MC68681_RX_RTS_CTRL                                 0x80
129
130/*
131 * Mode Register Definitions
132 *
133 *  MC68681_MODE_REG_2A
134 *  MC68681_MODE_REG_2B
135 */
136
137#define MC68681_STOP_BIT_LENGTH__563                        0x00
138#define MC68681_STOP_BIT_LENGTH__625                        0x01
139#define MC68681_STOP_BIT_LENGTH__688                        0x02
140#define MC68681_STOP_BIT_LENGTH__75                         0x03
141#define MC68681_STOP_BIT_LENGTH__813                        0x04
142#define MC68681_STOP_BIT_LENGTH__875                        0x05
143#define MC68681_STOP_BIT_LENGTH__938                        0x06
144#define MC68681_STOP_BIT_LENGTH_1                           0x07
145#define MC68681_STOP_BIT_LENGTH_1_563                       0x08
146#define MC68681_STOP_BIT_LENGTH_1_625                       0x09
147#define MC68681_STOP_BIT_LENGTH_1_688                       0x0a
148#define MC68681_STOP_BIT_LENGTH_1_75                        0x0b
149#define MC68681_STOP_BIT_LENGTH_1_813                       0x0c
150#define MC68681_STOP_BIT_LENGTH_1_875                       0x0d
151#define MC68681_STOP_BIT_LENGTH_1_938                       0x0e
152#define MC68681_STOP_BIT_LENGTH_2                           0x0f
153
154#define MC68681_CTS_ENABLE_TX                               0x10
155#define MC68681_TX_RTS_CTRL                                 0x20
156
157#define MC68681_CHANNEL_MODE_NORMAL                         0x00
158#define MC68681_CHANNEL_MODE_ECHO                           0x40
159#define MC68681_CHANNEL_MODE_LOCAL_LOOP                     0x80
160#define MC68681_CHANNEL_MODE_REMOTE_LOOP                    0xc0
161
162/*
163 * Status Register Definitions
164 *
165 *    MC68681_STATUS_REG_A,  MC68681_STATUS_REG_B
166 */
167
168#define MC68681_RX_READY                                    0x01
169#define MC68681_FFULL                                       0x02
170#define MC68681_TX_READY                                    0x04
171#define MC68681_TX_EMPTY                                    0x08
172#define MC68681_OVERRUN_ERROR                               0x10
173#define MC68681_PARITY_ERROR                                0x20
174#define MC68681_FRAMING_ERROR                               0x40
175#define MC68681_RECEIVED_BREAK                              0x80
176
177#define MC68681_RX_ERRORS \
178  (MC68681_OVERRUN_ERROR|MC68681_PARITY_ERROR| \
179   MC68681_FRAMING_ERROR|MC68681_RECEIVED_BREAK)
180
181/*
182 * Interupt Status Register Definitions.
183 *
184 * MC68681_INTERRUPT_STATUS_REG
185 */
186
187/*
188 *  Interupt Mask Register Definitions
189 *
190 *  MC68681_INTERRUPT_MASK_REG
191 */
192
193/* These are passed to mc68681_build_imr */
194#define MC68681_IR_TX_READY                                 0x01
195#define MC68681_IR_RX_READY                                 0x02
196#define MC68681_IR_BREAK                                    0x04
197#define MC68681_IMR_ENABLE_ALL                              0x07
198#define MC68681_IMR_DISABLE_ALL                             0x00
199#define MC68681_IMR_ENABLE_ALL_EXCEPT_TX                    0x06
200
201#define MC68681_IR_TX_READY_A                               0x01
202#define MC68681_IR_RX_READY_A                               0x02
203#define MC68681_IR_BREAK_A                                  0x04
204#define MC68681_IR_COUNTER_READY                            0x08
205#define MC68681_IR_TX_READY_B                               0x10
206#define MC68681_IR_RX_READY_B                               0x20
207#define MC68681_IR_BREAK_B                                  0x40
208#define MC68681_IR_INPUT_PORT_CHANGE                        0x80
209
210/*
211 * Status Register Definitions.
212 *
213 * MC68681_STATUS_REG_A,MC68681_STATUS_REG_B
214 */
215
216#define MC68681_STATUS_RXRDY                                0x01
217#define MC68681_STATUS_FFULL                                0x02
218#define MC68681_STATUS_TXRDY                                0x04
219#define MC68681_STATUS_TXEMT                                0x08
220#define MC68681_STATUS_OVERRUN_ERROR                        0x10
221#define MC68681_STATUS_PARITY_ERROR                         0x20
222#define MC68681_STATUS_FRAMING_ERROR                        0x40
223#define MC68681_STATUS_RECEIVED_BREAK                       0x80
224
225/*
226 * Definitions for the Interrupt Vector Register:
227 *
228 * MC68681_INTERRUPT_VECTOR_REG
229 */
230
231#define  MC68681_INTERRUPT_VECTOR_INIT                      0x0f
232
233/*
234 * Definitions for the Auxiliary Control Register
235 *
236 * MC68681_AUX_CTRL_REG
237 */
238
239#define MC68681_AUX_BRG_SET1                                0x00
240#define MC68681_AUX_BRG_SET2                                0x80
241
242/*
243 *  Per chip context control
244 */
245
246typedef struct _mc68681_context
247{
248  int            mate;
249  unsigned char  imr;
250} mc68681_context;
251
252/*
253 * Driver functions
254 */
255MC68681_STATIC boolean mc68681_probe(int minor);
256
257MC68681_STATIC int mc68681_set_attributes( 
258  int minor,
259  const struct termios *t
260);
261
262MC68681_STATIC void mc68681_init(int minor);
263
264MC68681_STATIC int mc68681_open(
265  int major,
266  int minor,
267  void  * arg
268);
269
270MC68681_STATIC int mc68681_close(
271  int major,
272  int minor,
273  void  * arg
274);
275
276MC68681_STATIC void mc68681_write_polled(
277  int   minor, 
278  char  cChar
279);
280
281MC68681_STATIC void mc68681_initialize_interrupts(int minor);
282
283MC68681_STATIC int mc68681_flush(int major, int minor, void *arg);
284
285MC68681_STATIC int mc68681_write_support_int(
286  int   minor,
287  const char *buf,
288  int   len
289);
290
291MC68681_STATIC int mc68681_write_support_polled(
292  int   minor,
293  const char *buf,
294  int   len
295  );
296
297MC68681_STATIC int mc68681_inbyte_nonblocking_polled(
298  int minor
299);
300
301MC68681_STATIC unsigned int mc68681_build_imr(
302  int  minor,
303  int  enable_flag
304);
305
306MC68681_STATIC void mc68681_process(
307  int  minor
308);
309
310MC68681_STATIC void mc68681_enable_interrupts(
311  int minor,
312  int imr_mask
313);
314
315#ifdef __cplusplus
316}
317#endif
318
319#endif /* _MC68681_P_H_ */
Note: See TracBrowser for help on using the repository browser.