blob: b676dafe0c1178711c50bb1592476552b3c6b87f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
|
/* dmv170.h
*
* This include file contains information pertaining to the DMV170.
*
* NOTE: Other than where absolutely required, this version currently
* supports only the peripherals and bits used by the basic board
* support package. This includes at least significant pieces of
* the following items:
*
* + UART Channels A and B
*
* COPYRIGHT (c) 1989-1997.
* On-Line Applications Research Corporation (OAR).
* Copyright assigned to U.S. Government, 1994.
*
* The license and distribution terms for this file may in
* the file LICENSE in this distribution or at
* http://www.OARcorp.com/rtems/license.html.
*
* $Id$
*/
#ifndef _INCLUDE_DMV170_h
#define _INCLUDE_DMV170_h
/*
* DY-4 uses a non-standard clock for the Exar 88681.
*/
#undef MC68681_BAUD_RATE_MASK_9600
#define MC68681_BAUD_RATE_MASK_9600
#define DMV17x_MC68681_BAUD_RATE_MASK_9600
#if 0
#define MC68681_OFFSET_MULTIPLIER 8
#endif
#ifdef __cplusplus
extern "C" {
#endif
/* Note: Move address defs to the linker files. XXX */
/* Real Time Clock Base Address */
#define DMV170_RTC_ADDRESS 0xf2c00000
/* base address of the DUART (68681) */
#define MC68681_ADDR 0xf2800000
#define MC68681_PORT1_ADDR 0xf2800000
#define MC68681_PORT2_ADDR 0xf2800040
/*
* SONIC Information
*/
#define DMV170_SONIC_ADDR 0xf3000000
#define SONIC_BASE_ADDRESS DMV170_SONIC_ADDR
#define SONIC_VECTOR DMV170_ETHERNET_IRQ
/* base address for the SCC (85C30) */
#define Z85C30_ADDR 0xfb000010
#define Z85C30_CTRL_A 0xfb000010
#define Z85C30_DATA_A 0xfb000018
#define Z85C30_CTRL_B 0xfb000000
#define Z85C30_DATA_B 0xfb000008
#define Z85C30_CLOCK_10 (10485760) /* 10 Mhz */
#define Z85C30_CLOCK_2 (2581175) /* 2.4616 Mhz */
/* base address for the SCV64 */
#define DMV170_SCV64_BASE_ADDRESS 0xf2000000
#define DMV170_LOCAL_CONTROL_STATUS_REG 0xf2400000
#define DMV170_TIMER0_COUNT_INTERVAL_REG 0xf2400008
#define DMV170_TIMER1_COUNT_INTERVAL_REG 0xf2400010
#define DMV170_TIMER2_COUNT_INTERVAL_REG 0xf2400018
#define DMV170_TIMER_CONTROL_REG 0xf2400020
#define DMV170_CARD_RESORCE_REG 0xf2400040
#define DMV170_WRITE( _reg, _data ) \
*((volatile rtems_unsigned16 *)(_reg)) = (_data)
#define DMV170_READ( _reg, _data ) \
(_data) = *((volatile rtems_unsigned16 *)(_reg))
/*
* The following defines the bits in the DMA Control and Status Register
*/
/* XXX fill in the other bits */
#define DMV170_DMA_CONTROL_STATUS_REG 0xfc000090
#define DMV170_SCC_10MHZ 0x00010000
/*
* The following defines the bits in the Local Control and Status Register.
*/
#define DMV170_IPLx_MASK 0x0007
#define DMV170_MAXPACK_SENSE_MASK 0x0008
#define DMV170_MAXPACK_NOT_INSTALLED 0x0008
#define DMV170_MAXPACK_INSTALLED 0x0000
#define DMV170_MAXPACK_RESET_MASK 0x0010
#define DMV170_MAXPACK_RESET_NEGATE 0x0010
#define DMV170_MAXPACK_RESET_ASSERT 0x0000
#define DMV170_EEPROM_READ_WRITE_MASK 0x0020
#define DMV170_EEPROM_READ 0x0020
#define DMV170_EEPROM_WRITE 0x0000
#define DMV170_EEPROM_CLOCK_CTRL_MASK 0x0040
#define DMV170_EEPROM_CLOCK_ASSERT 0x0040
#define DMV170_EEPROM_CLOCK_NEGATE 0x0000
#define DMV170_EEPROM_DATA_MASK 0x0080
#define DMV170_EEPROM_DATA_HIGH 0x0080
#define DMV170_EEPROM_DATA_LOW 0x0000
/* Bits 8-10: 68040 Transfer Modifer Codes represent the Transfer
* Modifier to be used on MAXPack Accesses.
*
* Bit 11 : 68040 Transfer Type (TT) 0:TT are both low 1:TT are both high
*/
#define DMV170_USER_LINK0_STATUS_MASK 0x1000
#define DMV170_USER_LINK0_OPEN 0x1000
#define DMV170_USER_LINK0_INSTALLED 0x0000
#define DMV170_LOWER_STATUS_LED_CONTROL_MASK 0x2000
#define DMV170_LOWER_STATUS_LED_IS_OFF 0x2000
#define DMV170_LOWER_STATUS_LED_IS_ON 0x0000
#ifdef DMV176
/* The following are not available for the DMV171 */
#define DMV170_RAM_TYPE_MASK 0x4000
#define DMV170_RAM_TYPE_IS_DRAM 0x4000
#define DMV170_RAM_TYPE_IS_SRAM 0x0000
#define DMV170_IACK_VECTOR_AUTOVECTOR_MASK 0x8000
#define DMV170_IACK_VECTOR_AUTOVECTOR_IS_VECTOR 0x8000
#define DMV170_IACK_VECTOR_AUTOVECTOR_IS_NOT_VECTOR 0x0000
#endif
/*
* The following defines the bits in the Timer Control Register.
*/
#define DMV170_TIMER0_ENABLE_MASK 0x0001
#define DMV170_TIMER0_IS_ENABLED 0x0001
#define DMV170_TIMER0_IS_DISABLED 0x0000
#define DMV170_TIMER1_ENABLE_MASK 0x0002
#define DMV170_TIMER1_IS_ENABLED 0x0002
#define DMV170_TIMER1_IS_DISABLED 0x0000
#define DMV170_TIMER2_ENABLE_MASK 0x0004
#define DMV170_TIMER2_IS_ENABLED 0x0004
#define DMV170_TIMER2_IS_DISABLED 0x0000
#define DMV170_TIMER1_CLOCK_MASK 0x0008
#define DMV170_TIMER1_CLOCK_AT_TIMER0 0x0008
#define DMV170_TIMER1_CLOCK_AT_1MHZ 0x0000
#define DMV170_TIMER2_CLOCK_MASK 0x0010
#define DMV170_TIMER2_CLOCK_AT_TIMER0 0x0010
#define DMV170_TIMER2_CLOCK_AT_1MHZ 0x0000
#define DMV170_TIMER0_INTERRUPT_MASK 0x0020
#define DMV170_TIMER0_INTERRUPT_ENABLE 0x0020
#define DMV170_TIMER0_INTERRUPT_CLEAR 0x0000
#define DMV170_TIMER1_INTERRUPT_MASK 0x0040
#define DMV170_TIMER1_INTERRUPT_ENABLE 0x0040
#define DMV170_TIMER1_INTERRUPT_CLEAR 0x0000
#define DMV170_TIMER2_INTERRUPT_MASK 0x0080
#define DMV170_TIMER2_INTERRUPT_ENABLE 0x0080
#define DMV170_TIMER2_INTERRUPT_CLEAR 0x0000
/*
* The Following define the bits for the Card Resource Register.
*/
#define DMV170_DUART_INTERRUPT_MASK 0x0001 /* DUART Interrupt Sense Bit */
#define DMV170_DUART_INTERRUPT_NEGATE 0x0001
#define DMV170_DUART_INTERRUPT_ASSERT 0x0000
#define DMV170_SONIC_INTERRUPT_MASK 0x0002 /* SONIC Interrupt Sense Bit */
#define DMV170_SONIC_INTERRUPT_NEGATE 0x0002
#define DMV170_SONIC_INTERRUPT_ASSERT 0x0000
#define DMV170_SCSI_INTERRUPT_MASK 0x0004 /* SCSI Interrupt Sense Bit */
#define DMV170_SCSI_INTERRUPT_NEGATE 0x0004
#define DMV170_SCSI_INTERRUPT_ASSERT 0x0000
#define DMV170_SCC_INTERRUPT_MASK 0x0008 /* SCC Interrupt Sense Bit */
#define DMV170_SCC_INTERRUPT_NEGATE 0x0008
#define DMV170_SCC_INTERRUPT_ASSERT 0x0000
#define DMV170_SNOOP_ENABLE_MASK 0x0010 /* CPU Snoop Enable Bit */
#define DMV170_SNOOP_DISABLE 0x0010
#define DMV170_SNOOP_ENABLE 0x0000
#define DMV170_SONIC_RESET_MASK 0x0020 /* SONIC RESET Control */
#define DMV170_SONIC_RESET_CLEAR 0x0020
#define DMV170_SONIC_RESET_HOLD 0x0000
#define DMV170_NV64_WE_MASK 0x0040 /* 64-bit Non-Volital Memory */
#define DMV170_NV64_WRITE_ENABLE 0x0040 /* Write Enable */
#define DMV170_NV64_WRITE_DISABLE 0x0000
#define DMV170_BOOT_NV16_MASK 0x0080 /* BOOT Device Type */
#define DMV170_BOOT_64_BIT 0x0080
#define DMV170_BOOT_16_BIT 0x0000
#define DMV170_DUART_INST_MASK 0x0100 /* DUART Sense Bit */
#define DMV170_DUART_INSTALLED 0x0100
#define DMV170_DUART_NOT_INSTALLED 0x0000
#define DMV170_SONIC_INST_MASK 0x0200 /* SONIC Sense Bit */
#define DMV170_SONIC_INSTALLED 0x0200
#define DMV170_SONIC_NOT_INSTALLED 0x0000
#define DMV170_16M_NV64_MASK 0x0400 /* 16 Mb of 64bit Flash Sense */
#define DMV170_16Mb_FLASH_INSTALLED 0x0400
#define DMV170_8Mb_FLASH_INSTALLED 0x0000
#define DMV170_SCC_INST_MASK 0x0800 /* SCC Sense Bit */
#define DMV170_SCC_INSTALLED 0x0800
#define DMV170_SCC_NOT_INSTALLED 0x0000
#define DMV170_RTC_INST_MASK 0x1000 /* RTC Sense Bit */
#define DMV170_RTC_INSTALLED 0x1000
#define DMV170_RTC_NOT_INSTALLED 0x0000
#define DMV170_NV64_INST_MASK 0x2000 /* 64bit Non-Volital Mem Sense*/
#define DMV170_64_BIT_NON_VOLITAL_MEM_INSTALLED 0x2000
#define DMV170_64_BIT_NON_VOLITAL_MEM_NOT_INSTALLED 0x0000
/*
* DUART Baud Rate Definitions.
*/
#define DMV170_DUART_9621 MC68681_BAUD_RATE_MASK_600 /* close to 9600 */
#define DMV170_RTC_FREQUENCY 0x0000
/*
* CPU General Purpose Interrupt definations (PPC_IRQ_EXTERNAL).
* Note: For the interrupt level read the lower 3 bits of the
* Local Control and Status Register.
*/
#define DMV170_IRQ_FIRST ( PPC_IRQ_LAST + 1 )
#define DMV170_LIRQ0 ( DMV170_IRQ_FIRST + 0 )
#define DMV170_LIRQ1 ( DMV170_IRQ_FIRST + 1 )
#define DMV170_LIRQ2 ( DMV170_IRQ_FIRST + 2 )
#define DMV170_LIRQ3 ( DMV170_IRQ_FIRST + 3 )
#define DMV170_LIRQ4 ( DMV170_IRQ_FIRST + 4 )
#define DMV170_LIRQ5 ( DMV170_IRQ_FIRST + 5 )
#define DMV170_L7IACF ( DMV170_IRQ_FIRST + 6 )
#define DMV170_L7ISYS ( DMV170_IRQ_FIRST + 7 )
#define DMV170_L7IMNI ( DMV170_IRQ_FIRST + 8 )
#define DMV170_BIMODE ( DMV170_IRQ_FIRST + 9 )
#define DMV170_DUART_IRQ DMV170_LIRQ5
#define DMV170_ETHERNET_IRQ DMV170_LIRQ5
#define DMV170_SCSI_IRQ DMV170_LIRQ5
#define DMV170_SCC_IRQ DMV170_LIRQ5
#define DMV170_MEZZANINE_IRQ_0 DMV170_LIRQ4
#define DMV170_TICK_IRQ DMV170_LIRQ3
#define DMV170_LOCATION_MON_IRQ DMV170_LIRQ2
#define DMV170_SCV64_IRQ DMV170_LIRQ1
#define DMV170_RTC_IRQ DMV170_LIRQ0
#define DMV170_ACFAIL_IRQ DMV170_L7IACF
#define DMV170_SYSFAIL_IRQ DMV170_L7ISYS
#define DMV170_WATCHDOG_IRQ DMV170_L7IMNI
#define DMV170_BI_IRQ DMV170_BIMODE
#define DMV170_RAM_PARITY_IRQ ( DMV170_IRQ_FIRST + 10)
#define DMV170_DARF_BUS_ERROR_IRQ ( DMV170_IRQ_FIRST + 11)
#define DMV170_PERIPHERAL_IRQ ( DMV170_IRQ_FIRST + 12)
#define MAX_BOARD_IRQS DMV170_PERIPHERAL_IRQ
#define SCV64_Is_IRQ0( _status ) (_status&0x01)
#define SCV64_Is_IRQ1( _status ) (_status&0x02)
#define SCV64_Is_IRQ2( _status ) (_status&0x04)
#define SCV64_Is_IRQ3( _status ) (_status&0x08)
#define SCV64_Is_IRQ4( _status ) (_status&0x10)
#define SCV64_Is_IRQ5( _status ) (_status&0x20)
/*
* scv64.c
*/
void SCV64_Generate_DUART_Interrupts();
rtems_unsigned32 SCV64_Get_Interrupt();
rtems_unsigned32 SCV64_Get_Interrupt_Enable();
#ifdef __cplusplus
}
#endif
#endif /* !_INCLUDE_DMV170_h */
/* end of include file */
|