source: rtems/c/src/lib/libbsp/powerpc/dmv177/include/dmv170.h @ 308e18c

4.104.114.84.95
Last change on this file since 308e18c was 308e18c, checked in by Joel Sherrill <joel.sherrill@…>, on 08/06/98 at 00:24:52

Added support for the Card Resource Register. The new probe routines
check for the presence of the DUART, SCC, and RTC. The SONIC check
needs to be added in the future as the network driver is libchip'ed.

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