OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [rtos/] [ecos-3.0/] [packages/] [hal/] [coldfire/] [mcf5272/] [current/] [include/] [mcf5272_devs.h] - Blame information for rev 786

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 786 skrzyp
#ifndef CYGONCE_MCF5272_DEVS_H
2
#define CYGONCE_MCF5272_DEVS_H
3
 
4
//=============================================================================
5
//
6
//      mcf5272_devs.h
7
//
8
//      Definitions for the MCF5272 on-chip peripherals
9
//
10
//==========================================================================
11
// ####ECOSGPLCOPYRIGHTBEGIN####                                            
12
// -------------------------------------------                              
13
// This file is part of eCos, the Embedded Configurable Operating System.   
14
// Copyright (C) 1998, 1999, 2000, 2001, 2002, 2006 Free Software Foundation, Inc.
15
//
16
// eCos is free software; you can redistribute it and/or modify it under    
17
// the terms of the GNU General Public License as published by the Free     
18
// Software Foundation; either version 2 or (at your option) any later      
19
// version.                                                                 
20
//
21
// eCos is distributed in the hope that it will be useful, but WITHOUT      
22
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or    
23
// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License    
24
// for more details.                                                        
25
//
26
// You should have received a copy of the GNU General Public License        
27
// along with eCos; if not, write to the Free Software Foundation, Inc.,    
28
// 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.            
29
//
30
// As a special exception, if other files instantiate templates or use      
31
// macros or inline functions from this file, or you compile this file      
32
// and link it with other works to produce a work based on this file,       
33
// this file does not by itself cause the resulting work to be covered by   
34
// the GNU General Public License. However the source code for this file    
35
// must still be made available in accordance with section (3) of the GNU   
36
// General Public License v2.                                               
37
//
38
// This exception does not invalidate any other reasons why a work based    
39
// on this file might be covered by the GNU General Public License.         
40
// -------------------------------------------                              
41
// ####ECOSGPLCOPYRIGHTEND####                                              
42
//==========================================================================
43
//#####DESCRIPTIONBEGIN####
44
//
45
// Author(s):     Enrico Piria, Wade Jensen
46
// Contributors:
47
// Date:          2005-25-06
48
// Purpose:       Definitions for the MCF5272 on-chip peripherals.
49
// Usage:         #include <cyg/hal/mcf5272_devs.h>
50
//
51
//####DESCRIPTIONEND####
52
//========================================================================
53
 
54
#include <pkgconf/hal.h>
55
#include <cyg/infra/cyg_type.h>
56
 
57
// General configuration registers
58
typedef struct
59
{
60
 
61
    // Module base  address  register
62
    cyg_uint32 mbar;
63
 
64
    // System configuration register
65
    cyg_uint16 scr;
66
 
67
    // System protection register
68
    cyg_uint16 spr;
69
 
70
    // Power management register
71
    cyg_uint32 pmr;
72
 
73
    // Gap
74
    cyg_uint16 _res1;
75
 
76
    // Active low power register
77
    cyg_uint16 alpr;
78
 
79
    // Device identification register
80
    cyg_uint32 dir;
81
 
82
    // Gap
83
    cyg_uint32 _res2[3];
84
 
85
} __attribute__ ((aligned (4), packed)) mcf5272_sim_cfg_t;
86
 
87
// Configuration registers macros
88
 
89
#define MCF5272_SIM_SCR_HWWD_1024   0x0003
90
 
91
#define MCF5272_SIM_SPR_ADC         0x8000
92
#define MCF5272_SIM_SPR_ADCEN       0x0080
93
#define MCF5272_SIM_SPR_WPV         0x4000
94
#define MCF5272_SIM_SPR_WPVEN       0x0040
95
#define MCF5272_SIM_SPR_SMV         0x2000
96
#define MCF5272_SIM_SPR_SMVEN       0x0020
97
#define MCF5272_SIM_SPR_SBE         0x1000
98
#define MCF5272_SIM_SPR_SBEEN       0x0010
99
#define MCF5272_SIM_SPR_HWT         0x0800
100
#define MCF5272_SIM_SPR_HWTEN       0x0008
101
#define MCF5272_SIM_SPR_RPV         0x0400
102
#define MCF5272_SIM_SPR_RPVEN       0x0004
103
#define MCF5272_SIM_SPR_EXT         0x0200
104
#define MCF5272_SIM_SPR_EXTEN       0x0002
105
#define MCF5272_SIM_SPR_SUV         0x0100
106
#define MCF5272_SIM_SPR_SUVEN       0x0001
107
 
108
// ---------------------------------------------------------------------------
109
 
110
// Interrupt controller registers
111
typedef struct
112
{
113
 
114
    // Interrupt control register 1-4
115
    cyg_uint32 icr[4];
116
 
117
    // Interrupt source register
118
    cyg_uint32 isr;
119
 
120
    // Programmable interrupt transition register
121
    cyg_uint32 pitr;
122
 
123
    // Programmable interrupt wakeup register
124
    cyg_uint32 piwr;
125
 
126
    // Gap
127
    cyg_uint8  _res1[3];
128
 
129
    // Programmable interrupt vector register
130
    cyg_uint8  ipvr;
131
 
132
} __attribute__ ((aligned (4), packed)) mcf5272_sim_int_t;
133
 
134
// Interrupt controller related macros
135
 
136
#define MCF5272_SIM_PITR_INT1_POS_EDGE         (0x80000000)
137
#define MCF5272_SIM_PITR_INT2_POS_EDGE         (0x40000000)
138
#define MCF5272_SIM_PITR_INT3_POS_EDGE         (0x20000000)
139
#define MCF5272_SIM_PITR_INT4_POS_EDGE         (0x10000000)
140
#define MCF5272_SIM_PITR_INT5_POS_EDGE         (0x00000040)
141
#define MCF5272_SIM_PITR_INT6_POS_EDGE         (0x00000020)
142
 
143
#define MCF5272_SIM_PIWR_INT1_WAKE             (0x80000000)
144
#define MCF5272_SIM_PIWR_INT2_WAKE             (0x40000000)
145
#define MCF5272_SIM_PIWR_INT3_WAKE             (0x20000000)
146
#define MCF5272_SIM_PIWR_INT4_WAKE             (0x10000000)
147
#define MCF5272_SIM_PIWR_TMR0_WAKE             (0x08000000)
148
#define MCF5272_SIM_PIWR_TMR1_WAKE             (0x04000000)
149
#define MCF5272_SIM_PIWR_TMR2_WAKE             (0x02000000)
150
#define MCF5272_SIM_PIWR_TMR3_WAKE             (0x01000000)
151
#define MCF5272_SIM_PIWR_UART1_WAKE            (0x00800000)
152
#define MCF5272_SIM_PIWR_UART2_WAKE            (0x00400000)
153
#define MCF5272_SIM_PIWR_PLIP_WAKE             (0x00200000)
154
#define MCF5272_SIM_PIWR_PLIA_WAKE             (0x00100000)
155
#define MCF5272_SIM_PIWR_USB0_WAKE             (0x00080000)
156
#define MCF5272_SIM_PIWR_USB1_WAKE             (0x00040000)
157
#define MCF5272_SIM_PIWR_USB2_WAKE             (0x00020000)
158
#define MCF5272_SIM_PIWR_USB3_WAKE             (0x00010000)
159
#define MCF5272_SIM_PIWR_USB4_WAKE             (0x00008000)
160
#define MCF5272_SIM_PIWR_USB5_WAKE             (0x00004000)
161
#define MCF5272_SIM_PIWR_USB6_WAKE             (0x00002000)
162
#define MCF5272_SIM_PIWR_USB7_WAKE             (0x00001000)
163
#define MCF5272_SIM_PIWR_DMA_WAKE              (0x00000800)
164
#define MCF5272_SIM_PIWR_ERX_WAKE              (0x00000400)
165
#define MCF5272_SIM_PIWR_ETX_WAKE              (0x00000200)
166
#define MCF5272_SIM_PIWR_ENTC_WAKE             (0x00000100)
167
#define MCF5272_SIM_PIWR_QSPI_WAKE             (0x00000080)
168
#define MCF5272_SIM_PIWR_INT5_WAKE             (0x00000040)
169
#define MCF5272_SIM_PIWR_INT6_WAKE             (0x00000020)
170
#define MCF5272_SIM_PIWR_SWTO_WAKE             (0x00000010)
171
 
172
// ---------------------------------------------------------------------------
173
 
174
// Chip-select module
175
typedef struct
176
{
177
 
178
    // CS base register
179
    cyg_uint32 csbr;
180
 
181
    // CS option register
182
    cyg_uint32 csor;
183
 
184
} __attribute__ ((aligned (4), packed)) mcf5272_sim_cs_t;
185
 
186
// Chip-select modules related macros
187
 
188
#define MCF5272_CS_BR_BASE(a)           ((a) & 0xFFFFF000)
189
 
190
#define MCF5272_CS_OR_MASK_128M         (0xF8000000)
191
#define MCF5272_CS_OR_MASK_64M          (0xFC000000)
192
#define MCF5272_CS_OR_MASK_32M          (0xFE000000)
193
#define MCF5272_CS_OR_MASK_16M          (0xFF000000)
194
#define MCF5272_CS_OR_MASK_8M           (0xFF800000)
195
#define MCF5272_CS_OR_MASK_4M           (0xFFC00000)
196
#define MCF5272_CS_OR_MASK_2M           (0xFFE00000)
197
#define MCF5272_CS_OR_MASK_1M           (0xFFF00000)
198
#define MCF5272_CS_OR_MASK_512K         (0xFFF80000)
199
#define MCF5272_CS_OR_MASK_256K         (0xFFFC0000)
200
#define MCF5272_CS_OR_MASK_128K         (0xFFFE0000)
201
#define MCF5272_CS_OR_MASK_64K          (0xFFFF0000)
202
#define MCF5272_CS_OR_MASK_32K          (0xFFFF8000)
203
#define MCF5272_CS_OR_MASK_16K          (0xFFFFC000)
204
#define MCF5272_CS_OR_MASK_8K           (0xFFFFE000)
205
#define MCF5272_CS_OR_MASK_4K           (0xFFFFF000)
206
#define MCF5272_CS_OR_WS_MASK           (0x007C)
207
#define MCF5272_CS_OR_WS(a)             (((a) & 0x1F) << 2)
208
#define MCF5272_CS_OR_BRST              (0x0100)
209
#define MCF5272_CS_OR_WR_ONLY           (0x0003)
210
#define MCF5272_CS_OR_RD_ONLY           (0x0001)
211
 
212
#define MCF5272_CS_BR_PS_8              (0x0100)
213
#define MCF5272_CS_BR_PS_16             (0x0200)
214
#define MCF5272_CS_BR_PS_32             (0x0000)
215
#define MCF5272_CS_BR_PS_LINE           (0x0300)
216
#define MCF5272_CS_BR_ROM               (0x0000)
217
#define MCF5272_CS_BR_SRAM              (0x0000)
218
#define MCF5272_CS_BR_SRAM_8            (0x0C00)
219
#define MCF5272_CS_BR_SDRAM             (0x0400)
220
#define MCF5272_CS_BR_ISA               (0x0800)
221
#define MCF5272_CS_BR_SV                (0x0080)
222
#define MCF5272_CS_BR_EN                (0x0001)
223
 
224
// ---------------------------------------------------------------------------
225
 
226
// General purpose I/O module
227
typedef struct
228
{
229
 
230
    // Port A control register
231
    cyg_uint32 pacnt;
232
 
233
    // Port A data direction register
234
    cyg_uint16 paddr;
235
 
236
    // Port A data register
237
    cyg_uint16 padat;
238
 
239
    // Port B control register
240
    cyg_uint32 pbcnt;
241
 
242
    // Port B data direction register
243
    cyg_uint16 pbddr;
244
 
245
    // Port B data register
246
    cyg_uint16 pbdat;
247
 
248
    // Gap
249
    cyg_uint32 _res1;
250
 
251
    // Port C data direction register
252
    cyg_uint16 pcddr;
253
 
254
    // Port C data register
255
    cyg_uint16 pcdat;
256
 
257
    // Port D control register
258
    cyg_uint32 pdcnt;
259
 
260
    // Gap
261
    cyg_uint16 _res2;
262
    cyg_uint16 _res3;
263
 
264
} __attribute__ ((aligned (4), packed)) mcf5272_sim_gpio_t;
265
 
266
// GPIO ports related macros
267
 
268
#define MCF5272_GPIO_DDR_IN         (0)
269
#define MCF5272_GPIO_DDR_OUT        (1)
270
 
271
#define MCF5272_GPIO_PBCNT_ETH_EN   (0x55550000)
272
#define MCF5272_GPIO_PBCNT_ETH_DE   (0x00000000)
273
#define MCF5272_GPIO_PBCNT_ETH_MSK  (0xFFFF0000)
274
 
275
#define MCF5272_GPIO_PBCNT_TA_EN    (0x00000400)
276
#define MCF5272_GPIO_PBCNT_TA_DE    (0x00000000)
277
#define MCF5272_GPIO_PBCNT_TA_MSK   (0x00000C00)
278
 
279
#define MCF5272_GPIO_PBCNT_URT0_EN  (0x00000155)
280
#define MCF5272_GPIO_PBCNT_URT0_DE  (0x00000000)
281
#define MCF5272_GPIO_PBCNT_URT0_MSK (0x000003FF)
282
 
283
#define MCF5272_GPIO_PDCNT_INT4_EN  (0x00000C00)
284
#define MCF5272_GPIO_PDCNT_INT4_DE  (0x00000000)
285
#define MCF5272_GPIO_PDCNT_INT4_MSK (0x00000C00)
286
 
287
#define MCF5272_GPIO_PDCNT_URT1_EN  (0x000002AA)
288
#define MCF5272_GPIO_PDCNT_URT1_DE  (0x00000000)
289
#define MCF5272_GPIO_PDCNT_URT1_MSK (0x000003FF)
290
 
291
// ---------------------------------------------------------------------------
292
 
293
// UART module
294
typedef struct
295
{
296
 
297
    // UART mode register
298
    cyg_uint8 umr;
299
 
300
    // Gap
301
    cyg_uint8 _res1[3];
302
 
303
    // UART status register (R) and clock-select register (W)
304
    cyg_uint8 usr_ucsr;
305
 
306
    // Gap
307
    cyg_uint8 _res2[3];
308
 
309
    // UART command register
310
    cyg_uint8 ucr;
311
 
312
    // Gap
313
    cyg_uint8 _res3[3];
314
 
315
    // UART receiver buffers (R) and transmitter buffers (W)
316
    cyg_uint8 urb_utb;
317
 
318
    // Gap
319
    cyg_uint8 _res4[3];
320
 
321
    // UART input port change register (R) and auxiliary control register (W)
322
    cyg_uint8 uipcr_uacr;
323
 
324
    // Gap
325
    cyg_uint8 _res5[3];
326
 
327
    // UART interrupt status register (R) and interrupt mask register (W)
328
    cyg_uint8 uisr_uimr;
329
 
330
    // Gap
331
    cyg_uint8 _res6[3];
332
 
333
    // UART divider upper register
334
    cyg_uint8 udu;
335
 
336
    // Gap
337
    cyg_uint8 _res7[3];
338
 
339
    // UART divider lower register
340
    cyg_uint8 udl;
341
 
342
    // Gap
343
    cyg_uint8 _res8[3];
344
 
345
    // UART autobaud register MSB
346
    cyg_uint8 uabu;
347
 
348
    // Gap
349
    cyg_uint8 _res9[3];
350
 
351
    // UART autobaud register LSB
352
    cyg_uint8 uabl;
353
 
354
    // Gap
355
    cyg_uint8 _res10[3];
356
 
357
    // UART transmitter FIFO register
358
    cyg_uint8 utf;
359
 
360
    // Gap
361
    cyg_uint8 _res11[3];
362
 
363
    // UART receiver FIFO register
364
    cyg_uint8 urf;
365
 
366
    // Gap
367
    cyg_uint8 _res12[3];
368
 
369
    // UART fractional precision divider register
370
    cyg_uint8 ufpd;
371
 
372
    // Gap
373
    cyg_uint8 _res13[3];
374
 
375
    // UART input port register
376
    cyg_uint8 uip;
377
 
378
    // Gap
379
    cyg_uint8 _res14[3];
380
 
381
    // UART output port register 1
382
    cyg_uint8 uop1;
383
 
384
    // Gap
385
    cyg_uint8 _res15[3];
386
 
387
    // UART output port register 0
388
    cyg_uint8 uop0;
389
 
390
    // Gap
391
    cyg_uint8 _res16[3];
392
 
393
} __attribute__ ((aligned (4), packed)) mcf5272_uart_t;
394
 
395
// ---------------------------------------------------------------------------
396
 
397
// SDRAM controller
398
typedef struct
399
{
400
 
401
    // Gap
402
    cyg_uint8   _res1[2];
403
 
404
    // SDRAM configuration register
405
    cyg_uint16  sdcr;
406
 
407
    // Gap
408
    cyg_uint8   _res2[2];
409
 
410
    // SDRAM timing register
411
    cyg_uint16  sdtr;
412
 
413
    // Gap
414
    cyg_uint8   _res3[120];
415
 
416
} __attribute__ ((aligned (4), packed)) mcf5272_sim_sdramctrl_t;
417
 
418
// SDRAM controller related macros
419
 
420
#define MCF5272_SDRAMC_SDCCR_MCAS_A7    (0x0 << 13)
421
#define MCF5272_SDRAMC_SDCCR_MCAS_A8    (0x1 << 13)
422
#define MCF5272_SDRAMC_SDCCR_MCAS_A9    (0x2 << 13)
423
#define MCF5272_SDRAMC_SDCCR_MCAS_A10   (0x3 << 13)
424
#define MCF5272_SDRAMC_SDCCR_BALOC_A19  (0x0 << 8)
425
#define MCF5272_SDRAMC_SDCCR_BALOC_A20  (0x1 << 8)
426
#define MCF5272_SDRAMC_SDCCR_BALOC_A21  (0x2 << 8)
427
#define MCF5272_SDRAMC_SDCCR_BALOC_A22  (0x3 << 8)
428
#define MCF5272_SDRAMC_SDCCR_BALOC_A23  (0x4 << 8)
429
#define MCF5272_SDRAMC_SDCCR_BALOC_A24  (0x5 << 8)
430
#define MCF5272_SDRAMC_SDCCR_BALOC_A25  (0x6 << 8)
431
#define MCF5272_SDRAMC_SDCCR_BALOC_A26  (0x7 << 8)
432
#define MCF5272_SDRAMC_SDCCR_GSL        (0x00000080)
433
#define MCF5272_SDRAMC_SDCCR_REG        (0x00000010)
434
#define MCF5272_SDRAMC_SDCCR_INV        (0x00000008)
435
#define MCF5272_SDRAMC_SDCCR_SLEEP      (0x00000004)
436
#define MCF5272_SDRAMC_SDCCR_ACT        (0x00000002)
437
#define MCF5272_SDRAMC_SDCCR_INIT       (0x00000001)
438
 
439
#define MCF5272_SDRAMC_SDCTR_RTP_66MHz  (0x3D << 10)
440
#define MCF5272_SDRAMC_SDCTR_RTP_48MHz  (0x2B << 10)
441
#define MCF5272_SDRAMC_SDCTR_RTP_33MHz  (0x1D << 10)
442
#define MCF5272_SDRAMC_SDCTR_RTP_25MHz  (0x16 << 10)
443
#define MCF5272_SDRAMC_SDCTR_RC(x)      ((x & 0x3) << 8)
444
#define MCF5272_SDRAMC_SDCTR_RP(x)      ((x & 0x3) << 4)
445
#define MCF5272_SDRAMC_SDCTR_RCD(x)     ((x & 0x3) << 2)
446
#define MCF5272_SDRAMC_SDCTR_CLT_2      (0x00000001)
447
#define MCF5272_SDRAMC_SDCTR_CLT_3      (0x00000002)
448
#define MCF5272_SDRAMC_SDCTR_CLT_4      (0x00000003)
449
 
450
// ---------------------------------------------------------------------------
451
 
452
// Timer module
453
typedef struct
454
{
455
 
456
    // Timer mode register
457
    cyg_uint16 tmr;
458
 
459
    // Gap
460
    cyg_uint16 _res1;
461
 
462
    // Timer reference register
463
    cyg_uint16 trr;
464
 
465
    // Gap
466
    cyg_uint16 _res2;
467
 
468
    // Timer capture register
469
    cyg_uint16 tcap;
470
 
471
    // Gap
472
    cyg_uint16 _res3;
473
 
474
    // Timer counter register
475
    cyg_uint16 tcn;
476
 
477
    // Gap
478
    cyg_uint16 _res4;
479
 
480
    // Timer event register
481
    cyg_uint16 ter;
482
 
483
    // Gap
484
    cyg_uint16 _res5;
485
 
486
    // Gap
487
    cyg_uint32 _res6[3];
488
 
489
} __attribute__ ((aligned (4), packed)) mcf5272_timer_t;
490
 
491
// Related macros
492
 
493
#define MCF5272_TIMER_TMR_PS            (0xFF00)
494
#define MCF5272_TIMER_TMR_PS_BIT        (8)
495
#define MCF5272_TIMER_TMR_CE            (0x00C0)
496
#define MCF5272_TIMER_TMR_CE_BIT        (6)
497
#define MCF5272_TIMER_TMR_OM            (0x0020)
498
#define MCF5272_TIMER_TMR_OM_BIT        (5)
499
#define MCF5272_TIMER_TMR_ORI           (0x0010)
500
#define MCF5272_TIMER_TMR_ORI_BIT       (4)
501
#define MCF5272_TIMER_TMR_FRR           (0x0008)
502
#define MCF5272_TIMER_TMR_FRR_BIT       (3)
503
#define MCF5272_TIMER_TMR_CLK           (0x0006)
504
#define MCF5272_TIMER_TMR_CLK_BIT       (1)
505
#define MCF5272_TIMER_TMR_RST           (0x0001)
506
#define MCF5272_TIMER_TMR_RST_BIT       (0)
507
#define MCF5272_TIMER_TER_REF           (0x0002)
508
#define MCF5272_TIMER_TER_REF_BIT       (1)
509
#define MCF5272_TIMER_TER_CAP           (0x0001)
510
#define MCF5272_TIMER_TER_CAP_BIT       (0)
511
 
512
// ---------------------------------------------------------------------------
513
 
514
// Watchdog timer
515
typedef struct
516
{
517
 
518
    // Watchdog reset reference register
519
    cyg_uint16 wrrr;
520
 
521
    // Gap
522
    cyg_uint16 _res1;
523
 
524
    // Watchdog interrupt reference register
525
    cyg_uint16 wirr;
526
 
527
    // Gap
528
    cyg_uint16 _res2;
529
 
530
    // Watchdog counter register
531
    cyg_uint16 wcr;
532
 
533
    // Gap
534
    cyg_uint16 _res3;
535
 
536
    // Watchdog event register
537
    cyg_uint16 wer;
538
 
539
    // Gap
540
    cyg_uint16 _res4;
541
 
542
    // Gap
543
    cyg_uint32 _res5[28];
544
 
545
} __attribute__ ((aligned (4), packed)) mcf5272_sim_wdtmr_t;
546
 
547
// ---------------------------------------------------------------------------
548
 
549
// Fast Ethernet Controller module
550
typedef struct
551
{
552
 
553
    // Ethernet control register
554
    cyg_uint32 ecr;
555
 
556
    // Ethernet interrupt event register
557
    cyg_uint32 eir;
558
 
559
    // Ethernet interrupt mask register
560
    cyg_uint32 eimr;
561
 
562
    // Interrupt vector status register
563
    cyg_uint32 ivsr;
564
 
565
    // Receive descriptor active register
566
    cyg_uint32 rdar;
567
 
568
    // Transmit descriptor active register
569
    cyg_uint32 tdar;
570
 
571
    // Gap
572
    cyg_uint8 _res2[0x0880 - 0x0858];
573
 
574
    // MII management frame register
575
    cyg_uint32 mmfr;
576
 
577
    // MII speed control register
578
    cyg_uint32 mscr;
579
 
580
    // Gap
581
    cyg_uint8 _res3[0x08cc - 0x0888];
582
 
583
    // FIFO receive bound register
584
    cyg_uint32 frbr;
585
 
586
    // FIFO receive start register
587
    cyg_uint32 frsr;
588
 
589
    // Gap
590
    cyg_uint8 _res4[0x08e4 - 0x08d4];
591
 
592
    // Transmit FIFO watermark
593
    cyg_uint32 tfwr;
594
 
595
    // Gap
596
    cyg_uint8 _res5[0x08ec - 0x08e8];
597
 
598
    // Transmit FIFO start register
599
    cyg_uint32 tfsr;
600
 
601
    // Gap
602
    cyg_uint8 _res6[0x0944 - 0x08f0];
603
 
604
    // Receive control register
605
    cyg_uint32 rcr;
606
 
607
    // Maximum frame length register
608
    cyg_uint32 mflr;
609
 
610
    // Gap
611
    cyg_uint8 _res7[0x0984 - 0x094c];
612
 
613
    // Transmit control register
614
    cyg_uint32 tcr;
615
 
616
    // Gap
617
    cyg_uint8 _res8[0x0c00 - 0x0988];
618
 
619
    // RAM perfect match address low register
620
    cyg_uint32 malr;
621
 
622
    // RAM perfect match address high register
623
    cyg_uint32 maur;
624
 
625
    // Hash table high register
626
    cyg_uint32 htur;
627
 
628
    // Hash table low register
629
    cyg_uint32 htlr;
630
 
631
    // Pointer to receive descriptor ring
632
    cyg_uint32 erdsr;
633
 
634
    // Pointer to transmit descriptor ring
635
    cyg_uint32 etdsr;
636
 
637
    // Maximum receive buffer size
638
    cyg_uint32 emrbr;
639
 
640
    // Gap
641
    cyg_uint8 _res9[0x0c40 - 0x0c1c];
642
 
643
    // FIFO RAM space
644
    cyg_uint8 efifo[0x0e00 - 0x0c40];
645
 
646
    // Gap
647
    cyg_uint8 _res10[0x1000 - 0x0e00];
648
 
649
} __attribute__ ((aligned (4), packed)) mcf5272_fec_t;
650
 
651
// ---------------------------------------------------------------------------
652
 
653
// On-chip peripherals: this structure defines each register's offset from the
654
// current value of the MBAR register.
655
typedef struct
656
{
657
 
658
    // 0x0000: System Integration Module (SIM) general configuration registers
659
    mcf5272_sim_cfg_t cfg;
660
 
661
    // 0x0020: SIM interrupt controller registers
662
    mcf5272_sim_int_t intc;
663
 
664
    // 0x0040: SIM chip-select modules
665
    mcf5272_sim_cs_t cs[8];
666
 
667
    // 0x0080: SIM general purpose I/O control registers
668
    mcf5272_sim_gpio_t gpio;
669
 
670
    // 0x00a0: QSPI module
671
    // TODO: a specific data structure is needed
672
    cyg_uint32 qspi[8];
673
 
674
    // 0x00c0: PWM module
675
    // TODO: a specific data structure is needed
676
    cyg_uint32 pwm[8];
677
 
678
    // 0x00e0: DMA controller
679
    // TODO: a specific data structure is needed
680
    cyg_uint32 dmac[8];
681
 
682
    // 0x0100: UART modules
683
    mcf5272_uart_t uart[2];
684
 
685
    // 0x0180: SIM SDRAM controller
686
    mcf5272_sim_sdramctrl_t sdramc;
687
 
688
    // 0x0200: timer module
689
    mcf5272_timer_t timer[4];
690
 
691
    // 0x0280: SIM watchdog timer module
692
    mcf5272_sim_wdtmr_t wdtimer;
693
 
694
    // 0x0300: physical layer interface controller
695
    // TODO: a specific data structure is needed
696
    cyg_uint32 plic[336];
697
 
698
    // 0x0840: ethernet module
699
    mcf5272_fec_t fec;
700
 
701
    // 0x1000: USB module
702
    // TODO: a specific data structure is needed
703
    cyg_uint32 usb[512];
704
 
705
} __attribute__ ((aligned (4), packed)) mcf5272_devs_t;
706
 
707
// ---------------------------------------------------------------------------
708
// End of mcf5272_devs.h
709
#endif // CYGONCE_MCF5272_DEVS_H

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.