source: rtems/c/src/lib/libcpu/powerpc/ppc403/include/ppc405ex.h @ 3c6fe2e

4.104.114.95
Last change on this file since 3c6fe2e was 3c6fe2e, checked in by Thomas Doerfler <Thomas.Doerfler@…>, on 07/14/08 at 08:46:06

added haleakala BSP contributed by Michael Hamel

  • Property mode set to 100644
File size: 3.1 KB
Line 
1
2/*
3
4Constants for manipulating system registers of PPC 405EX in C
5
6Michael Hamel ADInstruments May 2008
7
8*/
9
10#include <libcpu/powerpc-utility.h>
11/* Indirect access to Clocking/Power-On registers */
12#define CPR0_DCR_BASE   0x0C
13#define cprcfga         (CPR0_DCR_BASE+0x0)
14#define cprcfgd         (CPR0_DCR_BASE+0x1)
15
16#define mtcpr(reg, d)                                   \
17  do {                                                  \
18    PPC_SET_DEVICE_CONTROL_REGISTER(cprcfga,reg);       \
19    PPC_SET_DEVICE_CONTROL_REGISTER(cprcfgd,d);         \
20  } while (0)
21
22#define mfcpr(reg, d)                                   \
23  do {                                                  \
24    PPC_SET_DEVICE_CONTROL_REGISTER(cprcfga,reg);       \
25    d = PPC_DEVICE_CONTROL_REGISTER(cprcfgd);           \
26  } while (0)
27
28
29/* Indirect access to System registers */
30#define SDR_DCR_BASE    0x0E
31#define sdrcfga         (SDR_DCR_BASE+0x0)
32#define sdrcfgd         (SDR_DCR_BASE+0x1)
33
34#define mtsdr(reg, d)                                   \
35  do {                                                  \
36    PPC_SET_DEVICE_CONTROL_REGISTER(sdrcfga,reg);       \
37    PPC_SET_DEVICE_CONTROL_REGISTER(sdrcfgd,d);         \
38  } while (0)
39
40#define mfsdr(reg, d)                                   \
41    do {                                                \
42      PPC_SET_DEVICE_CONTROL_REGISTER(sdrcfga,reg);     \
43      d = PPC_DEVICE_CONTROL_REGISTER(sdrcfgd);         \
44    } while (0)
45
46/* Indirect access to EBC registers */
47#define EBC_DCR_BASE    0x12
48#define ebccfga         (EBC_DCR_BASE+0x0)
49#define ebccfgd         (EBC_DCR_BASE+0x1)
50
51#define mtebc(reg, d)                                   \
52  do {                                                  \
53    PPC_SET_DEVICE_CONTROL_REGISTER(ebccfga,reg);       \
54    PPC_SET_DEVICE_CONTROL_REGISTER(ebccfgd,d);         \
55  } while (0)
56
57#define mfebc(reg, d)                                   \
58  do {                                                  \
59    PPC_SET_DEVICE_CONTROL_REGISTER(ebccfga,reg);       \
60    d = PPC_DEVICE_CONTROL_REGISTER(ebccfgd);           \
61  } while (0)
62
63/* EBC DCRs */
64enum {
65        /*
66        EBC0_B0CR       =       0,
67        EBC0_B1CR       =       1,
68        EBC0_B2CR       =       2,
69        EBC0_B3CR       =       3,
70        EBC0_B0AP       =       0x10,
71        EBC0_B1AP       =       0x11,
72        EBC0_B2AP       =       0x12,
73        EBC0_B3AP       =       0x13,
74        EBC0_BEAR       =       0x20,
75        EBC0_BESR       =       0x21,
76        EBC0_CFG        =       0x23,
77        */
78        EBC0_CID        =       0x24
79};
80
81enum {
82        SDR0_UART0      = 0x120,
83        SDR0_UART1  = 0x121,
84        SDR0_C405       = 0x180,
85        SDR0_MALTBL = 0x280,
86        SDR0_MALRBL = 0x2A0,
87        SDR0_MALTBS = 0x2C0,
88        SDR0_MALRBS = 0x2E0
89};
90
91
92/* Memory-mapped registers */
93
94
95/*======================= Ethernet =================== */
96
97
98typedef struct EthernetRegisters_EX {
99        uint32_t mode0;
100        uint32_t mode1;
101        uint32_t xmtMode0;
102        uint32_t xmtMode1;
103        uint32_t rcvMode;
104        uint32_t intStatus;
105        uint32_t intEnable;
106        uint32_t addrHi;
107        uint32_t addrLo;
108        uint32_t VLANTPID;
109        uint32_t VLANTCI;
110        uint32_t pauseTimer;
111        uint32_t multicastAddr[2];
112        uint32_t multicastMask[2];
113        uint32_t unused[4];
114        uint32_t lastSrcLo;
115        uint32_t lastSrcHi;
116        uint32_t IPGap;
117        uint32_t STAcontrol;
118        uint32_t xmtReqThreshold;
119        uint32_t rcvWatermark;
120        uint32_t bytesXmtd;
121        uint32_t bytesRcvd;
122        uint32_t unused2;
123        uint32_t revID;
124        uint32_t unused3[2];
125        uint32_t indivHash[8];
126        uint32_t groupHash[8];
127        uint32_t xmtPause;
128} EthernetRegisters_EX;
129
130enum {
131        EMAC0Address = 0xEF600900,
132        EMAC1Address = 0xEF600A00
133};
134
135
136typedef struct GPIORegisters {
137        uint32_t OR;
138        uint32_t GPIO_TCR;              /* Note that TCR is defined as a DCR name */
139        uint32_t OSRL;
140        uint32_t OSRH;
141        uint32_t TSRL;
142        uint32_t TSRH;
143        uint32_t ODR;
144        uint32_t IR;
145        uint32_t RR1;
146        uint32_t RR2;
147        uint32_t RR3;
148        uint32_t unknown;
149        uint32_t ISR1L;
150        uint32_t ISR1H;
151        uint32_t ISR2L;
152        uint32_t ISR2H;
153        uint32_t ISR3L;
154        uint32_t ISR3H;
155} GPIORegisters;
156
157enum { GPIOAddress = 0xEF600800 };
158
Note: See TracBrowser for help on using the repository browser.