comparison packages/hal/powerpc/arch/current/src/ppc_860.h @ 2:443894e2e912 ecos-v1_2_1-release

Block commit of eCos version 1.2.1
author jlarmour
date Tue, 11 May 1999 12:24:34 +0000
parents
children 4cc3eff958ab
comparison
equal deleted inserted replaced
1:72f549f0d891 2:443894e2e912
1 #ifndef CYGONCE_PPC_860_H
2 #define CYGONCE_PPC_860_H
3
4 //=============================================================================
5 //####UNSUPPORTEDBEGIN####
6 //
7 // -------------------------------------------
8 // This source file has been contributed to eCos/Cygnus. It may have been
9 // changed slightly to provide an interface consistent with those of other
10 // files.
11 //
12 // The functionality and contents of this file is supplied "AS IS"
13 // without any form of support and will not necessarily be kept up
14 // to date by Cygnus.
15 //
16 // The style of programming used in this file may not comply with the
17 // eCos programming guidelines. Please do not use as a base for other
18 // files.
19 //
20 // All inquiries about this file, or the functionality provided by it,
21 // should be directed to the 'ecos-discuss' mailing list (see
22 // http://sourceware.cygnus.com/ecos/intouch.html for details).
23 //
24 // Contributed by: Kevin Hester <khester@opticworks.com>
25 // Maintained by: <Unmaintained>
26 // See also:
27 // Motorola's "Example Software Initializing the SMC as a UART" package
28 // (smc2.zip) at:
29 // http://www.mot.com/SPS/RISC/netcomm/tools/index.html#MPC860_table
30 // -------------------------------------------
31 //
32 //####UNSUPPORTEDEND####
33 //=============================================================================
34
35 #include <cyg/infra/cyg_type.h>
36
37 /******************************************************************************
38 *
39 * Definitions of Parameter RAM entries for each peripheral and mode
40 *
41 ******************************************************************************/
42
43 /*---------------------------------------------------------------------------*/
44 /* HDLC parameter RAM (SCC) */
45 /*---------------------------------------------------------------------------*/
46
47 struct hdlc_pram
48
49 {
50
51 /*-------------------*/
52 /* SCC parameter RAM */
53 /*-------------------*/
54
55 cyg_uint16 rbase; /* RX BD base address */
56 cyg_uint16 tbase; /* TX BD base address */
57 cyg_uint8 rfcr; /* Rx function code */
58 cyg_uint8 tfcr; /* Tx function code */
59 cyg_uint16 mrblr; /* Rx buffer length */
60 cyg_uint32 rstate; /* Rx internal state */
61 cyg_uint32 rptr; /* Rx internal data pointer */
62 cyg_uint16 rbptr; /* rb BD Pointer */
63 cyg_uint16 rcount; /* Rx internal byte count */
64 cyg_uint32 rtemp; /* Rx temp */
65 cyg_uint32 tstate; /* Tx internal state */
66 cyg_uint32 tptr; /* Tx internal data pointer */
67 cyg_uint16 tbptr; /* Tx BD pointer */
68 cyg_uint16 tcount; /* Tx byte count */
69 cyg_uint32 ttemp; /* Tx temp */
70 cyg_uint32 rcrc; /* temp receive CRC */
71 cyg_uint32 tcrc; /* temp transmit CRC */
72
73 /*-----------------------------*/
74 /* HDLC specific parameter RAM */
75 /*-----------------------------*/
76
77 cyg_uint8 RESERVED1[4]; /* Reserved area */
78 cyg_uint32 c_mask; /* CRC constant */
79 cyg_uint32 c_pres; /* CRC preset */
80 cyg_uint16 disfc; /* discarded frame counter */
81 cyg_uint16 crcec; /* CRC error counter */
82 cyg_uint16 abtsc; /* abort sequence counter */
83 cyg_uint16 nmarc; /* nonmatching address rx cnt */
84 cyg_uint16 retrc; /* frame retransmission cnt */
85 cyg_uint16 mflr; /* maximum frame length reg */
86 cyg_uint16 max_cnt; /* maximum length counter */
87 cyg_uint16 rfthr; /* received frames threshold */
88 cyg_uint16 rfcnt; /* received frames count */
89 cyg_uint16 hmask; /* user defined frm addr mask */
90 cyg_uint16 haddr1; /* user defined frm address 1 */
91 cyg_uint16 haddr2; /* user defined frm address 2 */
92 cyg_uint16 haddr3; /* user defined frm address 3 */
93 cyg_uint16 haddr4; /* user defined frm address 4 */
94 cyg_uint16 tmp; /* temp */
95 cyg_uint16 tmp_mb; /* temp */
96 };
97
98
99 /*-------------------------------------------------------------------------*/
100 /* ASYNC HDLC parameter RAM (SCC) */
101 /*-------------------------------------------------------------------------*/
102
103 struct async_hdlc_pram
104
105 {
106
107 /*-------------------*/
108 /* SCC parameter RAM */
109 /*-------------------*/
110
111 cyg_uint16 rbase; /* RX BD base address */
112 cyg_uint16 tbase; /* TX BD base address */
113 cyg_uint8 rfcr; /* Rx function code */
114 cyg_uint8 tfcr; /* Tx function code */
115 cyg_uint16 mrblr; /* Rx buffer length */
116 cyg_uint32 rstate; /* Rx internal state */
117 cyg_uint32 rptr; /* Rx internal data pointer */
118 cyg_uint16 rbptr; /* rb BD Pointer */
119 cyg_uint16 rcount; /* Rx internal byte count */
120 cyg_uint32 rtemp; /* Rx temp */
121 cyg_uint32 tstate; /* Tx internal state */
122 cyg_uint32 tptr; /* Tx internal data pointer */
123 cyg_uint16 tbptr; /* Tx BD pointer */
124 cyg_uint16 tcount; /* Tx byte count */
125 cyg_uint32 ttemp; /* Tx temp */
126 cyg_uint32 rcrc; /* temp receive CRC */
127 cyg_uint32 tcrc; /* temp transmit CRC */
128
129 /*-----------------------------------*/
130 /* ASYNC HDLC specific parameter RAM */
131 /*-----------------------------------*/
132
133 cyg_uint8 RESERVED2[4]; /* Reserved area */
134 cyg_uint32 c_mask; /* CRC constant */
135 cyg_uint32 c_pres; /* CRC preset */
136 cyg_uint16 bof; /* begining of flag character */
137 cyg_uint16 eof; /* end of flag character */
138 cyg_uint16 esc; /* control escape character */
139 cyg_uint8 RESERVED3[4]; /* Reserved area */
140 cyg_uint16 zero; /* zero */
141 cyg_uint8 RESERVED4[2]; /* Reserved area */
142 cyg_uint16 rfthr; /* received frames threshold */
143 cyg_uint8 RESERVED5[4]; /* Reserved area */
144 cyg_uint32 txctl_tbl; /* Tx ctl char mapping table */
145 cyg_uint32 rxctl_tbl; /* Rx ctl char mapping table */
146 cyg_uint16 nof; /* Number of opening flags */
147 };
148
149
150 /*--------------------------------------------------------------------------*/
151 /* UART parameter RAM (SCC) */
152 /*--------------------------------------------------------------------------*/
153
154 /*----------------------------------------*/
155 /* bits in uart control characters table */
156 /*----------------------------------------*/
157
158 #define CC_INVALID 0x8000 /* control character is valid */
159 #define CC_REJ 0x4000 /* don't store char in buffer */
160 #define CC_CHAR 0x00ff /* control character */
161
162 /*------*/
163 /* UART */
164 /*------*/
165
166 struct uart_pram
167
168 {
169 /*-------------------*/
170 /* SCC parameter RAM */
171 /*-------------------*/
172
173 cyg_uint16 rbase; /* RX BD base address */
174 cyg_uint16 tbase; /* TX BD base address */
175 cyg_uint8 rfcr; /* Rx function code */
176 cyg_uint8 tfcr; /* Tx function code */
177 cyg_uint16 mrblr; /* Rx buffer length */
178 cyg_uint32 rstate; /* Rx internal state */
179 cyg_uint32 rptr; /* Rx internal data pointer */
180 cyg_uint16 rbptr; /* rb BD Pointer */
181 cyg_uint16 rcount; /* Rx internal byte count */
182 cyg_uint32 rx_temp; /* Rx temp */
183 cyg_uint32 tstate; /* Tx internal state */
184 cyg_uint32 tptr; /* Tx internal data pointer */
185 cyg_uint16 tbptr; /* Tx BD pointer */
186 cyg_uint16 tcount; /* Tx byte count */
187 cyg_uint32 ttemp; /* Tx temp */
188 cyg_uint32 rcrc; /* temp receive CRC */
189 cyg_uint32 tcrc; /* temp transmit CRC */
190
191 /*------------------------------*/
192 /* UART specific parameter RAM */
193 /*------------------------------*/
194
195 cyg_uint8 RESERVED6[8]; /* Reserved area */
196 cyg_uint16 max_idl; /* maximum idle characters */
197 cyg_uint16 idlc; /* rx idle counter (internal) */
198 cyg_uint16 brkcr; /* break count register */
199
200 cyg_uint16 parec; /* Rx parity error counter */
201 cyg_uint16 frmec; /* Rx framing error counter */
202 cyg_uint16 nosec; /* Rx noise counter */
203 cyg_uint16 brkec; /* Rx break character counter */
204 cyg_uint16 brkln; /* Reaceive break length */
205
206 cyg_uint16 uaddr1; /* address character 1 */
207 cyg_uint16 uaddr2; /* address character 2 */
208 cyg_uint16 rtemp; /* temp storage */
209 cyg_uint16 toseq; /* Tx out of sequence char */
210 cyg_uint16 cc[8]; /* Rx control characters */
211 cyg_uint16 rccm; /* Rx control char mask */
212 cyg_uint16 rccr; /* Rx control char register */
213 cyg_uint16 rlbc; /* Receive last break char */
214 };
215
216
217 /*---------------------------------------------------------------------------
218 * BISYNC parameter RAM (SCC)
219 *--------------------------------------------------------------------------*/
220
221 struct bisync_pram
222
223 {
224 /*-------------------*/
225 /* SCC parameter RAM */
226 /*-------------------*/
227
228 cyg_uint16 rbase; /* RX BD base address */
229 cyg_uint16 tbase; /* TX BD base address */
230 cyg_uint8 rfcr; /* Rx function code */
231 cyg_uint8 tfcr; /* Tx function code */
232 cyg_uint16 mrblr; /* Rx buffer length */
233 cyg_uint32 rstate; /* Rx internal state */
234 cyg_uint32 rptr; /* Rx internal data pointer */
235 cyg_uint16 rbptr; /* rb BD Pointer */
236 cyg_uint16 rcount; /* Rx internal byte count */
237 cyg_uint32 rtemp; /* Rx temp */
238 cyg_uint32 tstate; /* Tx internal state */
239 cyg_uint32 tptr; /* Tx internal data pointer */
240 cyg_uint16 tbptr; /* Tx BD pointer */
241 cyg_uint16 tcount; /* Tx byte count */
242 cyg_uint32 ttemp; /* Tx temp */
243 cyg_uint32 rcrc; /* temp receive CRC */
244 cyg_uint32 tcrc; /* temp transmit CRC */
245
246 /*--------------------------------*/
247 /* BISYNC specific parameter RAM */
248 /*--------------------------------*/
249
250 cyg_uint8 RESERVED7[4]; /* Reserved area */
251 cyg_uint32 crcc; /* CRC Constant Temp Value */
252 cyg_uint16 prcrc; /* Preset Receiver CRC-16/LRC */
253 cyg_uint16 ptcrc; /* Preset Transmitter CRC-16/LRC */
254 cyg_uint16 parec; /* Receive Parity Error Counter */
255 cyg_uint16 bsync; /* BISYNC SYNC Character */
256 cyg_uint16 bdle; /* BISYNC DLE Character */
257 cyg_uint16 cc[8]; /* Rx control characters */
258 cyg_uint16 rccm; /* Receive Control Character Mask */
259 };
260
261
262 /*-------------------------------------------------------------------------*/
263 /* Transparent mode parameter RAM (SCC) */
264 /*-------------------------------------------------------------------------*/
265
266 struct transparent_pram
267
268 {
269 /*--------------------*/
270 /* SCC parameter RAM */
271 /*--------------------*/
272
273 cyg_uint16 rbase; /* RX BD base address */
274 cyg_uint16 tbase; /* TX BD base address */
275 cyg_uint8 rfcr; /* Rx function code */
276 cyg_uint8 tfcr; /* Tx function code */
277 cyg_uint16 mrblr; /* Rx buffer length */
278 cyg_uint32 rstate; /* Rx internal state */
279 cyg_uint32 rptr; /* Rx internal data pointer */
280 cyg_uint16 rbptr; /* rb BD Pointer */
281 cyg_uint16 rcount; /* Rx internal byte count */
282 cyg_uint32 rtemp; /* Rx temp */
283 cyg_uint32 tstate; /* Tx internal state */
284 cyg_uint32 tptr; /* Tx internal data pointer */
285 cyg_uint16 tbptr; /* Tx BD pointer */
286 cyg_uint16 tcount; /* Tx byte count */
287 cyg_uint32 ttemp; /* Tx temp */
288 cyg_uint32 rcrc; /* temp receive CRC */
289 cyg_uint32 tcrc; /* temp transmit CRC */
290
291 /*-------------------------------------*/
292 /* TRANSPARENT specific parameter RAM */
293 /*-------------------------------------*/
294
295 cyg_uint32 crc_p; /* CRC Preset */
296 cyg_uint32 crc_c; /* CRC constant */
297 };
298
299
300 /*-------------------------------------------------------------------------*/
301 /* Ethernet parameter RAM (SCC) */
302 /*-------------------------------------------------------------------------*/
303
304 struct ethernet_pram
305
306 {
307 /*--------------------*/
308 /* SCC parameter RAM */
309 /*--------------------*/
310
311 cyg_uint16 rbase; /* RX BD base address */
312 cyg_uint16 tbase; /* TX BD base address */
313 cyg_uint8 rfcr; /* Rx function code */
314 cyg_uint8 tfcr; /* Tx function code */
315 cyg_uint16 mrblr; /* Rx buffer length */
316 cyg_uint32 rstate; /* Rx internal state */
317 cyg_uint32 rptr; /* Rx internal data pointer */
318 cyg_uint16 rbptr; /* rb BD Pointer */
319 cyg_uint16 rcount; /* Rx internal byte count */
320 cyg_uint32 rtemp; /* Rx temp */
321 cyg_uint32 tstate; /* Tx internal state */
322 cyg_uint32 tptr; /* Tx internal data pointer */
323 cyg_uint16 tbptr; /* Tx BD pointer */
324 cyg_uint16 tcount; /* Tx byte count */
325 cyg_uint32 ttemp; /* Tx temp */
326 cyg_uint32 rcrc; /* temp receive CRC */
327 cyg_uint32 tcrc; /* temp transmit CRC */
328
329 /*---------------------------------*/
330 /* ETHERNET specific parameter RAM */
331 /*---------------------------------*/
332
333 cyg_uint32 c_pres; /* preset CRC */
334 cyg_uint32 c_mask; /* constant mask for CRC */
335 cyg_uint32 crcec; /* CRC error counter */
336 cyg_uint32 alec; /* alighnment error counter */
337 cyg_uint32 disfc; /* discard frame counter */
338 cyg_uint16 pads; /* short frame PAD characters */
339 cyg_uint16 ret_lim; /* retry limit threshold */
340 cyg_uint16 ret_cnt; /* retry limit counter */
341 cyg_uint16 mflr; /* maximum frame length reg */
342 cyg_uint16 minflr; /* minimum frame length reg */
343 cyg_uint16 maxd1; /* maximum DMA1 length reg */
344 cyg_uint16 maxd2; /* maximum DMA2 length reg */
345 cyg_uint16 maxd; /* rx max DMA */
346 cyg_uint16 dma_cnt; /* rx dma counter */
347 cyg_uint16 max_b; /* max bd byte count */
348 cyg_uint16 gaddr1; /* group address filter 1 */
349 cyg_uint16 gaddr2; /* group address filter 2 */
350 cyg_uint16 gaddr3; /* group address filter 3 */
351 cyg_uint16 gaddr4; /* group address filter 4 */
352 cyg_uint32 tbuf0_data0; /* save area 0 - current frm */
353 cyg_uint32 tbuf0_data1; /* save area 1 - current frm */
354 cyg_uint32 tbuf0_rba0;
355 cyg_uint32 tbuf0_crc;
356 cyg_uint16 tbuf0_bcnt;
357 cyg_uint16 paddr_h; /* physical address (MSB) */
358 cyg_uint16 paddr_m; /* physical address */
359 cyg_uint16 paddr_l; /* physical address (LSB) */
360 cyg_uint16 p_per; /* persistence */
361 cyg_uint16 rfbd_ptr; /* rx first bd pointer */
362 cyg_uint16 tfbd_ptr; /* tx first bd pointer */
363 cyg_uint16 tlbd_ptr; /* tx last bd pointer */
364 cyg_uint32 tbuf1_data0; /* save area 0 - next frame */
365 cyg_uint32 tbuf1_data1; /* save area 1 - next frame */
366 cyg_uint32 tbuf1_rba0;
367 cyg_uint32 tbuf1_crc;
368 cyg_uint16 tbuf1_bcnt;
369 cyg_uint16 tx_len; /* tx frame length counter */
370 cyg_uint16 iaddr1; /* individual address filter 1*/
371 cyg_uint16 iaddr2; /* individual address filter 2*/
372 cyg_uint16 iaddr3; /* individual address filter 3*/
373 cyg_uint16 iaddr4; /* individual address filter 4*/
374 cyg_uint16 boff_cnt; /* back-off counter */
375 cyg_uint16 taddr_h; /* temp address (MSB) */
376 cyg_uint16 taddr_m; /* temp address */
377 cyg_uint16 taddr_l; /* temp address (LSB) */
378 };
379
380
381 /*------------------------------------------------------------------*/
382 /* QMC definitions */
383 /*------------------------------------------------------------------*/
384
385
386 struct global_qmc_pram {
387
388 cyg_uint32 mcbase; /* Multichannel Base pointer */
389 cyg_uint16 qmcstate; /* Multichannel Controller state */
390 cyg_uint16 mrblr; /* Maximum Receive Buffer Length */
391 cyg_uint16 tx_s_ptr; /* TSATTx Pointer */
392 cyg_uint16 rxptr; /* Current Time slot entry in TSATRx */
393 cyg_uint16 grfthr; /* Global Receive frame threshold */
394 cyg_uint16 grfcnt; /* Global Receive Frame Count */
395 cyg_uint32 intbase; /* Multichannel Base address */
396 cyg_uint32 intptr; /* Pointer to interrupt queue */
397 cyg_uint16 rx_s_ptr; /* TSATRx Pointer */
398 cyg_uint16 txptr; /* Current Time slot entry in TSATTx */
399 cyg_uint32 c_mask32; /* CRC Constant (debb20e3) */
400 cyg_uint16 tsatrx[32]; /* Time Slot Assignment Table Rx */
401 cyg_uint16 tsattx[32]; /* Time Slot Assignment Table Tx */
402 cyg_uint16 c_mask16; /* CRC Constant (f0b8) */
403
404 };
405
406
407 /*------------------------------------------*/
408 /* QMC HDLC channel specific parameter RAM */
409 /*------------------------------------------*/
410
411 struct qmc_hdlc_pram {
412
413 cyg_uint16 tbase; /* Tx Buffer Descriptors Base Address */
414 cyg_uint16 chamr; /* Channel Mode Register */
415 cyg_uint32 tstate; /* Tx Internal State */
416 cyg_uint32 txintr; /* Tx Internal Data Pointer */
417 cyg_uint16 tbptr; /* Tx Buffer Descriptor Pointer */
418 cyg_uint16 txcntr; /* Tx Internal Byte Count */
419 cyg_uint32 tupack; /* (Tx Temp) */
420 cyg_uint32 zistate; /* Zero Insertion machine state */
421 cyg_uint32 tcrc; /* Temp Transmit CRC */
422 cyg_uint16 intmsk; /* Channel's interrupt mask flags */
423 cyg_uint16 bdflags;
424 cyg_uint16 rbase; /* Rx Buffer Descriptors Base Address */
425 cyg_uint16 mflr; /* Max Frame Length Register */
426 cyg_uint32 rstate; /* Rx Internal State */
427 cyg_uint32 rxintr; /* Rx Internal Data Pointer */
428 cyg_uint16 rbptr; /* Rx Buffer Descriptor Pointer */
429 cyg_uint16 rxbyc; /* Rx Internal Byte Count */
430 cyg_uint32 rpack; /* (Rx Temp) */
431 cyg_uint32 zdstate; /* Zero Deletion machine state */
432 cyg_uint32 rcrc; /* Temp Transmit CRC */
433 cyg_uint16 maxc; /* Max_length counter */
434 cyg_uint16 tmp_mb; /* Temp */
435 };
436
437
438 /*-------------------------------------------------*/
439 /* QMC Transparent channel specific parameter RAM */
440 /*-------------------------------------------------*/
441
442 struct qmc_tran_pram {
443
444 cyg_uint16 tbase; /* Tx Bufer Descriptors Base Address */
445 cyg_uint16 chamr; /* Channel Mode Register */
446 cyg_uint32 tstate; /* Tx Internal State */
447 cyg_uint32 txintr; /* Tx Internal Data Pointer */
448 cyg_uint16 tbptr; /* Tx Buffer Descriptor Pointer */
449 cyg_uint16 txcntr; /* Tx Internal Byte Count */
450 cyg_uint32 tupack; /* (Tx Temp) */
451 cyg_uint32 zistate; /* Zero Insertion machine state */
452 cyg_uint32 RESERVED8;
453 cyg_uint16 intmsk; /* Channel's interrupt mask flags */
454 cyg_uint16 bdflags;
455 cyg_uint16 rbase; /* Rx Buffer Descriptors Base Address */
456 cyg_uint16 tmrblr; /* Max receive buffer length */
457 cyg_uint32 rstate; /* Rx Internal State */
458 cyg_uint32 rxintr; /* Rx Internal Data Pointer */
459 cyg_uint16 rbptr; /* Rx Buffer Descriptor Pointer */
460 cyg_uint16 rxbyc; /* Rx Internal Byte Count */
461 cyg_uint32 rpack; /* (Rx Temp) */
462 cyg_uint32 zdstate; /* Zero Deletion machine state */
463 cyg_uint32 RESERVED9; /* Temp Transmit CRC */
464 cyg_uint16 trnsync; /* Max_length counter */
465 cyg_uint16 RESERVED10; /* Temp */
466
467 };
468
469 /*----------------------------------------------------------*/
470 /* allows multiprotocol array declaration in the memory map */
471 /*----------------------------------------------------------*/
472
473 struct qmc_chan_pram
474 {
475 union
476 {
477 struct qmc_hdlc_pram h;
478 struct qmc_tran_pram t;
479 }h_or_t;
480 };
481
482
483
484 /*--------------------------------------------------------------------*/
485 /* SMC UART parameter RAM */
486 /*--------------------------------------------------------------------*/
487
488 struct smc_uart_pram
489
490 {
491 cyg_uint16 rbase; /* Rx BD Base Address */
492 cyg_uint16 tbase; /* Tx BD Base Address */
493 cyg_uint8 rfcr; /* Rx function code */
494 cyg_uint8 tfcr; /* Tx function code */
495 cyg_uint16 mrblr; /* Rx buffer length */
496 cyg_uint32 rstate; /* Rx internal state */
497 cyg_uint32 rptr; /* Rx internal data pointer */
498 cyg_uint16 rbptr; /* rb BD Pointer */
499 cyg_uint16 rcount; /* Rx internal byte count */
500 cyg_uint32 rtemp; /* Rx temp */
501 cyg_uint32 tstate; /* Tx internal state */
502 cyg_uint32 tptr; /* Tx internal data pointer */
503 cyg_uint16 tbptr; /* Tx BD pointer */
504 cyg_uint16 tcount; /* Tx byte count */
505 cyg_uint32 ttemp; /* Tx temp */
506 cyg_uint16 max_idl; /* Maximum IDLE Characters */
507 cyg_uint16 idlc; /* Temporary IDLE Counter */
508 cyg_uint16 brkln; /* Last Rx Break Length */
509 cyg_uint16 brkec; /* Rx Break Condition Counter */
510 cyg_uint16 brkcr; /* Break Count Register (Tx) */
511 cyg_uint16 r_mask; /* Temporary bit mask */
512 };
513
514
515 /*--------------------------------------------------------------------------*/
516 /* SMC Transparent mode parameter RAM */
517 /*--------------------------------------------------------------------------*/
518
519 struct smc_trnsp_pram
520
521 {
522 cyg_uint16 rbase; /* Rx BD Base Address */
523 cyg_uint16 tbase; /* Tx BD Base Address */
524 cyg_uint8 rfcr; /* Rx function code */
525 cyg_uint8 tfcr; /* Tx function code */
526 cyg_uint16 mrblr; /* Rx buffer length */
527 cyg_uint32 rstate; /* Rx internal state */
528 cyg_uint32 rptr; /* Rx internal data pointer */
529 cyg_uint16 rbptr; /* rb BD Pointer */
530 cyg_uint16 rcount; /* Rx internal byte count */
531 cyg_uint32 rtemp; /* Rx temp */
532 cyg_uint32 tstate; /* Tx internal state */
533 cyg_uint32 tptr; /* Tx internal data pointer */
534 cyg_uint16 tbptr; /* Tx BD pointer */
535 cyg_uint16 tcount; /* Tx byte count */
536 cyg_uint32 ttemp; /* Tx temp */
537 cyg_uint16 RESERVED11[5]; /* Reserved */
538 };
539
540
541 /*--------------------------------------------------------------------------*/
542 /* SPI parameter RAM */
543 /*--------------------------------------------------------------------------*/
544
545 #define SPI_R 0x8000 /* Ready bit in BD */
546
547 struct spi_pram
548
549 {
550 cyg_uint16 rbase; /* Rx BD Base Address */
551 cyg_uint16 tbase; /* Tx BD Base Address */
552 cyg_uint8 rfcr; /* Rx function code */
553 cyg_uint8 tfcr; /* Tx function code */
554 cyg_uint16 mrblr; /* Rx buffer length */
555 cyg_uint32 rstate; /* Rx internal state */
556 cyg_uint32 rptr; /* Rx internal data pointer */
557 cyg_uint16 rbptr; /* rb BD Pointer */
558 cyg_uint16 rcount; /* Rx internal byte count */
559 cyg_uint32 rtemp; /* Rx temp */
560 cyg_uint32 tstate; /* Tx internal state */
561 cyg_uint32 tptr; /* Tx internal data pointer */
562 cyg_uint16 tbptr; /* Tx BD pointer */
563 cyg_uint16 tcount; /* Tx byte count */
564 cyg_uint32 ttemp; /* Tx temp */
565 };
566
567
568 /*--------------------------------------------------------------------------*/
569 /* I2C parameter RAM */
570 /*--------------------------------------------------------------------------*/
571
572 struct i2c_pram
573
574 {
575 /*--------------------*/
576 /* I2C parameter RAM */
577 /*--------------------*/
578
579 cyg_uint16 rbase; /* RX BD base address */
580 cyg_uint16 tbase; /* TX BD base address */
581 cyg_uint8 rfcr; /* Rx function code */
582 cyg_uint8 tfcr; /* Tx function code */
583 cyg_uint16 mrblr; /* Rx buffer length */
584 cyg_uint32 rstate; /* Rx internal state */
585 cyg_uint32 rptr; /* Rx internal data pointer */
586 cyg_uint16 rbptr; /* rb BD Pointer */
587 cyg_uint16 rcount; /* Rx internal byte count */
588 cyg_uint32 rtemp; /* Rx temp */
589 cyg_uint32 tstate; /* Tx internal state */
590 cyg_uint32 tptr; /* Tx internal data pointer */
591 cyg_uint16 tbptr; /* Tx BD pointer */
592 cyg_uint16 tcount; /* Tx byte count */
593 cyg_uint32 ttemp; /* Tx temp */
594 };
595
596
597 /*--------------------------------------------------------------------------*/
598 /* PIP Centronics parameter RAM */
599 /*--------------------------------------------------------------------------*/
600
601 struct centronics_pram
602
603 {
604 cyg_uint16 rbase; /* Rx BD Base Address */
605 cyg_uint16 tbase; /* Tx BD Base Address */
606 cyg_uint8 fcr; /* function code */
607 cyg_uint8 smask; /* Status Mask */
608 cyg_uint16 mrblr; /* Rx buffer length */
609 cyg_uint32 rstate; /* Rx internal state */
610 cyg_uint32 rptr; /* Rx internal data pointer */
611 cyg_uint16 rbptr; /* rb BD Pointer */
612 cyg_uint16 rcount; /* Rx internal byte count */
613 cyg_uint32 rtemp; /* Rx temp */
614 cyg_uint32 tstate; /* Tx internal state */
615 cyg_uint32 tptr; /* Tx internal data pointer */
616 cyg_uint16 tbptr; /* Tx BD pointer */
617 cyg_uint16 tcount; /* Tx byte count */
618 cyg_uint32 ttemp; /* Tx temp */
619 cyg_uint16 max_sl; /* Maximum Silence period */
620 cyg_uint16 sl_cnt; /* Silence Counter */
621 cyg_uint16 char1; /* CONTROL char 1 */
622 cyg_uint16 char2; /* CONTROL char 2 */
623 cyg_uint16 char3; /* CONTROL char 3 */
624 cyg_uint16 char4; /* CONTROL char 4 */
625 cyg_uint16 char5; /* CONTROL char 5 */
626 cyg_uint16 char6; /* CONTROL char 6 */
627 cyg_uint16 char7; /* CONTROL char 7 */
628 cyg_uint16 char8; /* CONTROL char 8 */
629 cyg_uint16 rccm; /* Rx Control Char Mask */
630 cyg_uint16 rccr; /* Rx Char Control Register */
631 };
632
633
634 /*--------------------------------------------------------------------------*/
635 /* IDMA parameter RAM */
636 /*--------------------------------------------------------------------------*/
637
638 struct idma_pram
639
640 {
641 cyg_uint16 ibase; /* IDMA BD Base Address */
642 cyg_uint16 dcmr; /* DMA Channel Mode Register */
643 cyg_uint32 sapr; /* Source Internal Data Pointer */
644 cyg_uint32 dapr; /* Destination Internal Data Pointer */
645 cyg_uint16 ibptr; /* Buffer Descriptor Pointer */
646 cyg_uint16 write_sp; /* No description given in manual */
647 cyg_uint32 s_byte_c; /* Internal Source Byte Count */
648 cyg_uint32 d_byte_c; /* Internal Destination Byte Count */
649 cyg_uint32 s_state; /* Internal State */
650 cyg_uint32 itemp0; /* Temp Data Storage */
651 cyg_uint32 itemp1; /* Temp Data Storage */
652 cyg_uint32 itemp2; /* Temp Data Storage */
653 cyg_uint32 itemp3; /* Temp Data Storage */
654 cyg_uint32 sr_mem; /* Data Storage for Peripherial Write */
655 cyg_uint16 read_sp; /* No description given in manual */
656 cyg_uint16 nodesc0; /* Diff Between Source and Destination Residue*/
657 cyg_uint16 nodesc1; /* Temp Storage Address Pointer */
658 cyg_uint16 nodesc2; /* SR_MEM Byte Count */
659 cyg_uint32 d_state; /* Internal State */
660 };
661
662
663
664 /*--------------------------------------------------------------------------*/
665 /* RISC timer parameter RAM */
666 /*--------------------------------------------------------------------------*/
667
668 struct timer_pram
669
670 {
671 /*----------------------------*/
672 /* RISC timers parameter RAM */
673 /*----------------------------*/
674
675 cyg_uint16 tm_base; /* RISC timer table base adr */
676 cyg_uint16 tm_ptr; /* RISC timer table pointer */
677 cyg_uint16 r_tmr; /* RISC timer mode register */
678 cyg_uint16 r_tmv; /* RISC timer valid register */
679 cyg_uint32 tm_cmd; /* RISC timer cmd register */
680 cyg_uint32 tm_cnt; /* RISC timer internal cnt */
681 };
682
683
684 /*--------------------------------------------------------------------------*/
685 /* ROM Microcode parameter RAM */
686 /*--------------------------------------------------------------------------*/
687
688 struct ucode_pram
689
690 {
691 /*---------------------------*/
692 /* RISC ucode parameter RAM */
693 /*---------------------------*/
694
695 cyg_uint16 rev_num; /* Ucode Revision Number */
696 cyg_uint16 d_ptr; /* MISC Dump area pointer */
697 cyg_uint32 temp1; /* MISC Temp1 */
698 cyg_uint32 temp2; /* MISC Temp2 */
699 };
700
701
702 /*---------------------------------------------------------------------------*/
703 /* Example structuring of user data area of memory at 0x2000 (base of DPRAM) */
704 /* Note that this area can also be used by microcodes and the QMC channel */
705 /* specific parameter ram. */
706 /*---------------------------------------------------------------------------*/
707
708 struct user_data
709
710 {
711
712 volatile cyg_uint8 udata_bd_ucode[0x200]; /* user data bd's or Ucode (small) */
713 volatile cyg_uint8 udata_bd_ucode2[0x200]; /* user data bd's or Ucode (medium) */
714 volatile cyg_uint8 udata_bd_ucode3[0x400]; /* user data bd's or Ucode (large) */
715 volatile cyg_uint8 udata_bd[0x700]; /* user data bd's*/
716 volatile cyg_uint8 ucode_ext[0x100]; /* Ucode Extension ram*/
717 volatile cyg_uint8 RESERVED12[0x0c00]; /* Reserved area */
718
719 };
720
721
722
723 /***************************************************************************/
724 /* */
725 /* Definitions of Embedded PowerPC (EPPC) internal memory structures, */
726 /* including registers and dual-port RAM */
727 /* */
728 /***************************************************************************/
729
730 typedef struct eppc
731
732 {
733 /*-----------------------------------*/
734 /* BASE + 0x0000: INTERNAL REGISTERS */
735 /*-----------------------------------*/
736
737 /*-----*/
738 /* SIU */
739 /*-----*/
740
741 volatile cyg_uint32 siu_mcr; /* module configuration reg */
742 volatile cyg_uint32 siu_sypcr; /* System protection cnt */
743 cyg_uint8 RESERVED13[0x6];
744 volatile cyg_uint16 siu_swsr; /* sw service */
745 volatile cyg_uint32 siu_sipend; /* Interrupt pend reg */
746 volatile cyg_uint32 siu_simask; /* Interrupt mask reg */
747 volatile cyg_uint32 siu_siel; /* Interrupt edge level mask reg */
748 volatile cyg_uint32 siu_sivec; /* Interrupt vector */
749 volatile cyg_uint32 siu_tesr; /* Transfer error status */
750 volatile cyg_uint8 RESERVED14[0xc]; /* Reserved area */
751 volatile cyg_uint32 dma_sdcr; /* SDMA configuration reg */
752 cyg_uint8 RESERVED15[0x4c];
753
754 /*--------*/
755 /* PCMCIA */
756 /*--------*/
757
758 volatile cyg_uint32 pcmcia_pbr0; /* PCMCIA Base Reg: Window 0 */
759 volatile cyg_uint32 pcmcia_por0; /* PCMCIA Option Reg: Window 0 */
760 volatile cyg_uint32 pcmcia_pbr1; /* PCMCIA Base Reg: Window 1 */
761 volatile cyg_uint32 pcmcia_por1; /* PCMCIA Option Reg: Window 1 */
762 volatile cyg_uint32 pcmcia_pbr2; /* PCMCIA Base Reg: Window 2 */
763 volatile cyg_uint32 pcmcia_por2; /* PCMCIA Option Reg: Window 2 */
764 volatile cyg_uint32 pcmcia_pbr3; /* PCMCIA Base Reg: Window 3 */
765 volatile cyg_uint32 pcmcia_por3; /* PCMCIA Option Reg: Window 3 */
766 volatile cyg_uint32 pcmcia_pbr4; /* PCMCIA Base Reg: Window 4 */
767 volatile cyg_uint32 pcmcia_por4; /* PCMCIA Option Reg: Window 4 */
768 volatile cyg_uint32 pcmcia_pbr5; /* PCMCIA Base Reg: Window 5 */
769 volatile cyg_uint32 pcmcia_por5; /* PCMCIA Option Reg: Window 5 */
770 volatile cyg_uint32 pcmcia_pbr6; /* PCMCIA Base Reg: Window 6 */
771 volatile cyg_uint32 pcmcia_por6; /* PCMCIA Option Reg: Window 6 */
772 volatile cyg_uint32 pcmcia_pbr7; /* PCMCIA Base Reg: Window 7 */
773 volatile cyg_uint32 pcmcia_por7; /* PCMCIA Option Reg: Window 7 */
774 volatile cyg_uint8 RESERVED16[0x20]; /* Reserved area */
775 volatile cyg_uint32 pcmcia_pgcra; /* PCMCIA Slot A Control Reg */
776 volatile cyg_uint32 pcmcia_pgcrb; /* PCMCIA Slot B Control Reg */
777 volatile cyg_uint32 pcmcia_pscr; /* PCMCIA Status Reg */
778 volatile cyg_uint8 RESERVED17[0x4]; /* Reserved area */
779 volatile cyg_uint32 pcmcia_pipr; /* PCMCIA Pins Value Reg */
780 volatile cyg_uint8 RESERVED18[0x4]; /* Reserved area */
781 volatile cyg_uint32 pcmcia_per; /* PCMCIA Enable Reg */
782 volatile cyg_uint8 RESERVED19[0x4]; /* Reserved area */
783
784 /*------*/
785 /* MEMC */
786 /*------*/
787
788 volatile cyg_uint32 memc_br0; /* base register 0 */
789 volatile cyg_uint32 memc_or0; /* option register 0 */
790 volatile cyg_uint32 memc_br1; /* base register 1 */
791 volatile cyg_uint32 memc_or1; /* option register 1 */
792 volatile cyg_uint32 memc_br2; /* base register 2 */
793 volatile cyg_uint32 memc_or2; /* option register 2 */
794 volatile cyg_uint32 memc_br3; /* base register 3 */
795 volatile cyg_uint32 memc_or3; /* option register 3 */
796 volatile cyg_uint32 memc_br4; /* base register 3 */
797 volatile cyg_uint32 memc_or4; /* option register 3 */
798 volatile cyg_uint32 memc_br5; /* base register 3 */
799 volatile cyg_uint32 memc_or5; /* option register 3 */
800 volatile cyg_uint32 memc_br6; /* base register 3 */
801 volatile cyg_uint32 memc_or6; /* option register 3 */
802 volatile cyg_uint32 memc_br7; /* base register 3 */
803 volatile cyg_uint32 memc_or7; /* option register 3 */
804 volatile cyg_uint8 RESERVED20[0x24]; /* Reserved area */
805 volatile cyg_uint32 memc_mar; /* Memory address */
806 volatile cyg_uint32 memc_mcr; /* Memory command */
807 volatile cyg_uint8 RESERVED21[0x4]; /* Reserved area */
808 volatile cyg_uint32 memc_mamr; /* Machine A mode */
809 volatile cyg_uint32 memc_mbmr; /* Machine B mode */
810 volatile cyg_uint16 memc_mstat; /* Memory status */
811 volatile cyg_uint16 memc_mptpr; /* Memory preidic timer prescalar */
812 volatile cyg_uint32 memc_mdr; /* Memory data */
813 volatile cyg_uint8 RESERVED22[0x80]; /* Reserved area */
814
815 /*---------------------------*/
816 /* SYSTEM INTEGRATION TIMERS */
817 /*---------------------------*/
818
819 volatile cyg_uint16 simt_tbscr; /* Time base stat&ctr */
820 volatile cyg_uint8 RESERVED23[0x2]; /* Reserved area */
821 volatile cyg_uint32 simt_tbreff0; /* Time base reference 0 */
822 volatile cyg_uint32 simt_tbreff1; /* Time base reference 1 */
823 volatile cyg_uint8 RESERVED24[0x14]; /* Reserved area */
824 volatile cyg_uint16 simt_rtcsc; /* Realtime clk stat&cntr 1 */
825 volatile cyg_uint8 RESERVED25[0x2]; /* Reserved area */
826 volatile cyg_uint32 simt_rtc; /* Realtime clock */
827 volatile cyg_uint32 simt_rtsec; /* Realtime alarm seconds */
828 volatile cyg_uint32 simt_rtcal; /* Realtime alarm */
829 volatile cyg_uint8 RESERVED26[0x10]; /* Reserved area */
830 volatile cyg_uint32 simt_piscr; /* PIT stat&ctrl */
831 volatile cyg_uint32 simt_pitc; /* PIT counter */
832 volatile cyg_uint32 simt_pitr; /* PIT */
833 volatile cyg_uint8 RESERVED27[0x34]; /* Reserved area */
834
835 /*---------------*/
836 /* CLOCKS, RESET */
837 /*---------------*/
838
839 volatile cyg_uint32 clkr_sccr; /* System clk cntrl */
840 volatile cyg_uint32 clkr_plprcr; /* PLL reset&ctrl */
841 volatile cyg_uint32 clkr_rsr; /* reset status */
842 cyg_uint8 RESERVED28[0x74]; /* Reserved area */
843
844 /*--------------------------------*/
845 /* System Integration Timers Keys */
846 /*--------------------------------*/
847
848 volatile cyg_uint32 simt_tbscrk; /* Timebase Status&Ctrl Key */
849 volatile cyg_uint32 simt_tbreff0k; /* Timebase Reference 0 Key */
850 volatile cyg_uint32 simt_tbreff1k; /* Timebase Reference 1 Key */
851 volatile cyg_uint32 simt_tbk; /* Timebase and Decrementer Key */
852 cyg_uint8 RESERVED29[0x10]; /* Reserved area */
853 volatile cyg_uint32 simt_rtcsck; /* Real-Time Clock Status&Ctrl Key */
854
855 volatile cyg_uint32 simt_rtck; /* Real-Time Clock Key */
856 volatile cyg_uint32 simt_rtseck; /* Real-Time Alarm Seconds Key */
857 volatile cyg_uint32 simt_rtcalk; /* Real-Time Alarm Key */
858 cyg_uint8 RESERVED30[0x10]; /* Reserved area */
859 volatile cyg_uint32 simt_piscrk; /* Periodic Interrupt Status&Ctrl Key */
860 volatile cyg_uint32 simt_pitck; /* Periodic Interrupt Count Key */
861 cyg_uint8 RESERVED31[0x38]; /* Reserved area */
862
863 /*----------------------*/
864 /* Clock and Reset Keys */
865 /*----------------------*/
866
867 volatile cyg_uint32 clkr_sccrk; /* System Clock Control Key */
868 volatile cyg_uint32 clkr_plprcrk; /* PLL, Low Power and Reset Control Key */
869 volatile cyg_uint32 clkr_rsrk; /* Reset Status Key */
870 cyg_uint8 RESERVED32[0x4d4]; /* Reserved area */
871
872 /*-----*/
873 /* I2C */
874 /*-----*/
875
876 volatile cyg_uint8 i2c_i2mod; /* i2c mode */
877 cyg_uint8 RESERVED33[3];
878 volatile cyg_uint8 i2c_i2add; /* i2c address */
879 cyg_uint8 RESERVED34[3];
880 volatile cyg_uint8 i2c_i2brg; /* i2c brg */
881 cyg_uint8 RESERVED35[3];
882 volatile cyg_uint8 i2c_i2com; /* i2c command */
883 cyg_uint8 RESERVED36[3];
884 volatile cyg_uint8 i2c_i2cer; /* i2c event */
885 cyg_uint8 RESERVED37[3];
886 volatile cyg_uint8 i2c_i2cmr; /* i2c mask */
887 volatile cyg_uint8 RESERVED38[0x8b]; /* Reserved area */
888
889 /*-----*/
890 /* DMA */
891 /*-----*/
892
893 volatile cyg_uint8 RESERVED39[0x4]; /* Reserved area */
894 volatile cyg_uint32 dma_sdar; /* SDMA address reg */
895 volatile cyg_uint8 RESERVED40[0x2]; /* Reserved area */
896 volatile cyg_uint8 dma_sdsr; /* SDMA status reg */
897 volatile cyg_uint8 RESERVED41[0x3]; /* Reserved area */
898 volatile cyg_uint8 dma_sdmr; /* SDMA mask reg */
899 volatile cyg_uint8 RESERVED42[0x1]; /* Reserved area */
900 volatile cyg_uint8 dma_idsr1; /* IDMA1 status reg */
901 volatile cyg_uint8 RESERVED43[0x3]; /* Reserved area */
902 volatile cyg_uint8 dma_idmr1; /* IDMA1 mask reg */
903 volatile cyg_uint8 RESERVED44[0x3]; /* Reserved area */
904 volatile cyg_uint8 dma_idsr2; /* IDMA2 status reg */
905 volatile cyg_uint8 RESERVED45[0x3]; /* Reserved area */
906 volatile cyg_uint8 dma_idmr2; /* IDMA2 mask reg */
907 volatile cyg_uint8 RESERVED46[0x13]; /* Reserved area */
908
909 /*--------------------------*/
910 /* CPM Interrupt Controller */
911 /*--------------------------*/
912
913 volatile cyg_uint16 cpmi_civr; /* CP interrupt vector reg */
914 volatile cyg_uint8 RESERVED47[0xe]; /* Reserved area */
915 volatile cyg_uint32 cpmi_cicr; /* CP interrupt configuration reg */
916 volatile cyg_uint32 cpmi_cipr; /* CP interrupt pending reg */
917 volatile cyg_uint32 cpmi_cimr; /* CP interrupt mask reg */
918 volatile cyg_uint32 cpmi_cisr; /* CP interrupt in-service reg */
919
920 /*----------*/
921 /* I/O port */
922 /*----------*/
923
924 volatile cyg_uint16 pio_padir; /* port A data direction reg */
925 volatile cyg_uint16 pio_papar; /* port A pin assignment reg */
926 volatile cyg_uint16 pio_paodr; /* port A open drain reg */
927 volatile cyg_uint16 pio_padat; /* port A data register */
928 volatile cyg_uint8 RESERVED48[0x8]; /* Reserved area */
929 volatile cyg_uint16 pio_pcdir; /* port C data direction reg */
930 volatile cyg_uint16 pio_pcpar; /* port C pin assignment reg */
931 volatile cyg_uint16 pio_pcso; /* port C special options */
932 volatile cyg_uint16 pio_pcdat; /* port C data register */
933 volatile cyg_uint16 pio_pcint; /* port C interrupt cntrl reg */
934 cyg_uint8 RESERVED49[6];
935 volatile cyg_uint16 pio_pddir; /* port D Data Direction reg */
936 volatile cyg_uint16 pio_pdpar; /* port D pin assignment reg */
937 cyg_uint8 RESERVED50[2];
938 volatile cyg_uint16 pio_pddat; /* port D data reg */
939 volatile cyg_uint8 RESERVED51[0x8]; /* Reserved area */
940
941 /*-----------*/
942 /* CPM Timer */
943 /*-----------*/
944
945 volatile cyg_uint16 timer_tgcr; /* timer global configuration reg */
946 volatile cyg_uint8 RESERVED52[0xe]; /* Reserved area */
947 volatile cyg_uint16 timer_tmr1; /* timer 1 mode reg */
948 volatile cyg_uint16 timer_tmr2; /* timer 2 mode reg */
949 volatile cyg_uint16 timer_trr1; /* timer 1 referance reg */
950 volatile cyg_uint16 timer_trr2; /* timer 2 referance reg */
951 volatile cyg_uint16 timer_tcr1; /* timer 1 capture reg */
952 volatile cyg_uint16 timer_tcr2; /* timer 2 capture reg */
953 volatile cyg_uint16 timer_tcn1; /* timer 1 counter reg */
954 volatile cyg_uint16 timer_tcn2; /* timer 2 counter reg */
955 volatile cyg_uint16 timer_tmr3; /* timer 3 mode reg */
956 volatile cyg_uint16 timer_tmr4; /* timer 4 mode reg */
957 volatile cyg_uint16 timer_trr3; /* timer 3 referance reg */
958 volatile cyg_uint16 timer_trr4; /* timer 4 referance reg */
959 volatile cyg_uint16 timer_tcr3; /* timer 3 capture reg */
960 volatile cyg_uint16 timer_tcr4; /* timer 4 capture reg */
961 volatile cyg_uint16 timer_tcn3; /* timer 3 counter reg */
962 volatile cyg_uint16 timer_tcn4; /* timer 4 counter reg */
963 volatile cyg_uint16 timer_ter1; /* timer 1 event reg */
964 volatile cyg_uint16 timer_ter2; /* timer 2 event reg */
965 volatile cyg_uint16 timer_ter3; /* timer 3 event reg */
966 volatile cyg_uint16 timer_ter4; /* timer 4 event reg */
967 volatile cyg_uint8 RESERVED53[0x8]; /* Reserved area */
968
969 /*----*/
970 /* CP */
971 /*----*/
972
973 volatile cyg_uint16 cp_cr; /* command register */
974 volatile cyg_uint8 RESERVED54[0x2]; /* Reserved area */
975 volatile cyg_uint16 cp_rccr; /* main configuration reg */
976 volatile cyg_uint8 RESERVED55; /* Reserved area */
977 volatile cyg_uint8 cp_resv1; /* Reserved reg */
978 volatile cyg_uint32 cp_resv2; /* Reserved reg */
979 volatile cyg_uint16 cp_rctr1; /* ram break register 1 */
980 volatile cyg_uint16 cp_rctr2; /* ram break register 2 */
981 volatile cyg_uint16 cp_rctr3; /* ram break register 3 */
982 volatile cyg_uint16 cp_rctr4; /* ram break register 4 */
983 volatile cyg_uint8 RESERVED56[0x2]; /* Reserved area */
984 volatile cyg_uint16 cp_rter; /* RISC timers event reg */
985 volatile cyg_uint8 RESERVED57[0x2]; /* Reserved area */
986 volatile cyg_uint16 cp_rtmr; /* RISC timers mask reg */
987 volatile cyg_uint8 RESERVED58[0x14]; /* Reserved area */
988
989 /*-----*/
990 /* BRG */
991 /*-----*/
992
993 volatile cyg_uint32 brgc1; /* BRG1 configuration reg */
994 volatile cyg_uint32 brgc2; /* BRG2 configuration reg */
995 volatile cyg_uint32 brgc3; /* BRG3 configuration reg */
996 volatile cyg_uint32 brgc4; /* BRG4 configuration reg */
997
998 /*---------------*/
999 /* SCC registers */
1000 /*---------------*/
1001
1002 struct scc_regs
1003
1004 {
1005 volatile cyg_uint32 scc_gsmr_l; /* SCC Gen mode (LOW) */
1006 volatile cyg_uint32 scc_gsmr_h; /* SCC Gen mode (HIGH) */
1007 volatile cyg_uint16 scc_psmr; /* protocol specific mode register */
1008 volatile cyg_uint8 RESERVED59[0x2]; /* Reserved area */
1009 volatile cyg_uint16 scc_todr; /* SCC transmit on demand */
1010 volatile cyg_uint16 scc_dsr; /* SCC data sync reg */
1011 volatile cyg_uint16 scc_scce; /* SCC event reg */
1012 volatile cyg_uint8 RESERVED60[0x2]; /* Reserved area */
1013 volatile cyg_uint16 scc_sccm; /* SCC mask reg */
1014 volatile cyg_uint8 RESERVED61[0x1]; /* Reserved area */
1015 volatile cyg_uint8 scc_sccs; /* SCC status reg */
1016 volatile cyg_uint8 RESERVED62[0x8]; /* Reserved area */
1017
1018 } scc_regs[4];
1019
1020
1021 /*-----*/
1022 /* SMC */
1023 /*-----*/
1024
1025 struct smc_regs
1026
1027 {
1028 volatile cyg_uint8 RESERVED63[0x2]; /* Reserved area */
1029 volatile cyg_uint16 smc_smcmr; /* SMC mode reg */
1030 volatile cyg_uint8 RESERVED64[0x2]; /* Reserved area */
1031 volatile cyg_uint8 smc_smce; /* SMC event reg */
1032 volatile cyg_uint8 RESERVED65[0x3]; /* Reserved area */
1033 volatile cyg_uint8 smc_smcm; /* SMC mask reg */
1034 volatile cyg_uint8 RESERVED66[0x5]; /* Reserved area */
1035
1036 } smc_regs[2];
1037
1038
1039 /*-----*/
1040 /* SPI */
1041 /*-----*/
1042
1043 volatile cyg_uint16 spi_spmode; /* SPI mode reg */
1044 volatile cyg_uint8 RESERVED67[0x4]; /* Reserved area */
1045 volatile cyg_uint8 spi_spie; /* SPI event reg */
1046 volatile cyg_uint8 RESERVED68[0x3]; /* Reserved area */
1047 volatile cyg_uint8 spi_spim; /* SPI mask reg */
1048 volatile cyg_uint8 RESERVED69[0x2]; /* Reserved area */
1049 volatile cyg_uint8 spi_spcom; /* SPI command reg */
1050 volatile cyg_uint8 RESERVED70[0x4]; /* Reserved area */
1051
1052 /*-----*/
1053 /* PIP */
1054 /*-----*/
1055
1056 volatile cyg_uint16 pip_pipc; /* pip configuration reg */
1057 volatile cyg_uint8 RESERVED71[0x2]; /* Reserved area */
1058 volatile cyg_uint16 pip_ptpr; /* pip timing parameters reg */
1059 volatile cyg_uint32 pip_pbdir; /* port b data direction reg */
1060 volatile cyg_uint32 pip_pbpar; /* port b pin assignment reg */
1061 volatile cyg_uint8 RESERVED72[0x2]; /* Reserved area */
1062 volatile cyg_uint16 pip_pbodr; /* port b open drain reg */
1063 volatile cyg_uint32 pip_pbdat; /* port b data reg */
1064 volatile cyg_uint8 RESERVED73[0x18]; /* Reserved area */
1065
1066
1067 /*------------------*/
1068 /* Serial Interface */
1069 /*------------------*/
1070
1071 volatile cyg_uint32 si_simode; /* SI mode register */
1072 volatile cyg_uint8 si_sigmr; /* SI global mode register */
1073 volatile cyg_uint8 RESERVED74; /* Reserved area */
1074 volatile cyg_uint8 si_sistr; /* SI status register */
1075 volatile cyg_uint8 si_sicmr; /* SI command register */
1076 volatile cyg_uint8 RESERVED75[0x4]; /* Reserved area */
1077 volatile cyg_uint32 si_sicr; /* SI clock routing */
1078 volatile cyg_uint32 si_sirp; /* SI ram pointers */
1079 volatile cyg_uint8 RESERVED76[0x10c]; /* Reserved area */
1080 volatile cyg_uint8 si_siram[0x200]; /* SI routing ram */
1081 volatile cyg_uint8 RESERVED77[0x1200]; /* Reserved area */
1082
1083 /*-----------------------------------------------------------------*/
1084 /* BASE + 0x2000: user data memory, microcode, or QMC channel PRAM */
1085 /*-----------------------------------------------------------------*/
1086
1087 union
1088 {
1089 struct qmc_chan_pram qcp[64];
1090 struct user_data ud;
1091 cyg_uint8 RESERVED[0x1c00];
1092 } qcp_or_ud;
1093
1094
1095 /*-----------------------------------------------------------------------*/
1096 /* BASE + 0x3c00: PARAMETER RAM. This main union defines 4 memory blocks */
1097 /* of an identical size. See the Parameter RAM definition in the MPC860 */
1098 /* user's manual. */
1099 /*-----------------------------------------------------------------------*/
1100
1101 /*------------------------*/
1102 /* Base + 0x3C00 (page 1) */
1103 /* + 0x3D00 (page 2) */
1104 /* + 0x3E00 (page 3) */
1105 /* + 0x3F00 (page 4) */
1106 /*------------------------*/
1107
1108 union
1109
1110 {
1111 struct page_of_pram
1112
1113 {
1114 /*------------------------------------------------------------*/
1115 /* scc parameter area - 1st memory block (protocol dependent) */
1116 /*------------------------------------------------------------*/
1117
1118 union
1119
1120 {
1121 struct hdlc_pram h;
1122 struct uart_pram u;
1123 struct bisync_pram b;
1124 struct transparent_pram t;
1125 struct async_hdlc_pram a;
1126 cyg_uint8 RESERVED78[0x80];
1127
1128 } scc;
1129
1130 /*----------------------------------------------------------------*/
1131 /* Other protocol areas for the rest of the memory blocks in each */
1132 /* page. */
1133 /*----------------------------------------------------------------*/
1134
1135 union
1136
1137 {
1138 /*---------------------------------------------------------------*/
1139 /* This structure defines the rest of the blocks on the 1st page */
1140 /*---------------------------------------------------------------*/
1141
1142 struct
1143
1144 {
1145 struct i2c_pram i2c; /* I2C */
1146 struct idma_pram idma1; /* IDMA1 */
1147
1148 } i2c_idma;
1149
1150 /*---------------------------------------------------------------*/
1151 /* This structure defines the rest of the blocks on the 2nd page */
1152 /*---------------------------------------------------------------*/
1153
1154 struct
1155
1156 {
1157 struct spi_pram spi; /* SPI */
1158 struct timer_pram timer; /* Timers */
1159 struct idma_pram idma2; /* IDMA2 */
1160
1161 } spi_timer_idma;
1162
1163 /*---------------------------------------------------------------*/
1164 /* This structure defines the rest of the blocks on the 3rd page */
1165 /*---------------------------------------------------------------*/
1166
1167 struct
1168
1169 {
1170 union
1171
1172 {
1173 struct smc_uart_pram u1; /* SMC1 */
1174 struct smc_trnsp_pram t1; /* SMC1 */
1175 cyg_uint8 RESERVED78[0x80]; /* declare full block */
1176
1177 } psmc1;
1178
1179 } smc_dsp1;
1180
1181
1182 /*---------------------------------------------------------------*/
1183 /* This structure defines the rest of the blocks on the 4th page */
1184 /*---------------------------------------------------------------*/
1185
1186 struct
1187
1188 {
1189 union
1190
1191 {
1192 struct smc_uart_pram u2; /* SMC2 */
1193 struct smc_trnsp_pram t2; /* SMC2 */
1194 struct centronics_pram c; /* Uses SM2's space */
1195 cyg_uint8 RESERVED79[0x80]; /* declare full block */
1196
1197 } psmc2;
1198
1199 } smc_dsp2;
1200
1201 cyg_uint8 RESERVED80[0x80]; /* declare full block */
1202
1203 } other;
1204
1205 } pg;
1206
1207 /*---------------------------------------------------------------*/
1208 /* When selecting Ethernet as protocol for an SCC, this protocol */
1209 /* uses a complete page of Parameter RAM memory. */
1210 /*---------------------------------------------------------------*/
1211
1212 struct ethernet_pram enet_scc;
1213
1214 /*---------------------------------------------------------------*/
1215 /* When using QMC as a mode for an SCC, the QMC global parameter */
1216 /* ram uses from SCC BASE to BASE+AC. */
1217 /*---------------------------------------------------------------*/
1218
1219 struct global_qmc_pram gqp;
1220
1221 /*--------------------------------------------------------*/
1222 /* declaration to guarantee a page of memory is allocated */
1223 /*--------------------------------------------------------*/
1224
1225 cyg_uint8 RESERVED83[0x100];
1226
1227 } PRAM[4]; /* end of union */
1228
1229 } EPPC;
1230
1231
1232 /***************************************************************************/
1233 /* General Global Definitions */
1234 /***************************************************************************/
1235
1236
1237 #define PAGE1 0 /* SCC1 Index into SCC Param RAM Array */
1238 #define PAGE2 1 /* SCC2 Index into SCC Param RAM Array */
1239 #define PAGE3 2 /* SCC3 Index into SCC Param RAM Array */
1240 #define PAGE4 3 /* SCC4 Index into SCC Param RAM Array */
1241
1242 #define SCC1_REG 0 /* SCC1 Index into SCC Regs Array */
1243 #define SCC2_REG 1 /* SCC2 Index into SCC Regs Array */
1244 #define SCC3_REG 2 /* SCC3 Index into SCC Regs Array */
1245 #define SCC4_REG 3 /* SCC4 Index into SCC Regs Array */
1246
1247
1248 /*--------------------------------*/
1249 /* KEEP ALIVE POWER REGISTERS KEY */
1250 /*--------------------------------*/
1251
1252 #define KEEP_ALIVE_KEY 0x55ccaa33
1253
1254
1255 #define SMC2_REG 1 /* SMC Regs Array Index for SMC2 */
1256
1257 /*-------------------------*/
1258 /* Single buffer component */
1259 /*-------------------------*/
1260
1261 typedef struct BufferPool
1262
1263 {
1264 cyg_uint8 RxBuffer;
1265 cyg_uint8 TxBuffer;
1266
1267 } LB;
1268
1269
1270 /*--------------------------*/
1271 /* Buffer Descriptor Format */
1272 /*--------------------------*/
1273
1274 typedef struct BufferDescriptor
1275
1276 {
1277 cyg_uint16 bd_cstatus; /* control and status */
1278 cyg_uint16 bd_length; /* transfer length */
1279 cyg_uint8 *bd_addr; /* buffer address */
1280
1281 } BD;
1282
1283
1284 /*-------------------------------*/
1285 /* Buffer Descriptor Ring format */
1286 /*-------------------------------*/
1287
1288 typedef struct BufferDescRings
1289
1290 {
1291 volatile BD RxBD; /* Rx BD ring */
1292 volatile BD TxBD; /* Tx BD ring */
1293
1294 } BDRINGS;
1295
1296
1297 #endif