1 /* handy dandy stuff for the sc520 MMCR */
2 /* default location of the MMCR */
3 #define MMCR 0xfffef000
5 /* the PAR register struct definition, the location in memory,
6 * and a handy pointer for you to use
10 unsigned long reg[16];
13 #define PARREG (struct parreg *)0xfffef088
14 //static volatile struct parreg *par = PARREG;
17 #define MMCRPIC (struct mmcrpic *) 0xfffefd00
18 //static volatile struct mmcrpic *pic = MMCRPIC;
25 /* here is the real mmcr struct */
28 /* make these shorts, we are lsb and the hardware seems to like it
31 unsigned short drcctl;
32 unsigned short drctmctl;
33 unsigned short drccfg;
34 unsigned char pad1[2];
35 unsigned char drcbendadr[4];
36 unsigned char pad2[4];
39 unsigned char eccckbpos;
40 unsigned char ecccktest;
41 unsigned long eccsbadd;
42 unsigned long eccmbadd;
43 unsigned char pad3[18];
47 unsigned char pad4[15];
52 unsigned char pad5[3];
54 unsigned char pad6[1];
56 unsigned char pad7[6];
62 unsigned short tgtirqctl;
63 unsigned short tgtirqsta;
64 unsigned short mstirqctl;
65 unsigned short mstirqsta;
66 unsigned char pad8[2];
67 unsigned long mstintadd;
75 unsigned char pad9[8];
79 unsigned char adddecctl;
80 unsigned char pada[1];
81 unsigned short wpvsta;
82 unsigned char padb[4];
83 unsigned long par[16];
84 unsigned char padc[0xb38];
90 unsigned char gpcsqual;
91 unsigned char padd[5];
94 unsigned char gpcsoff;
96 unsigned char gprdoff;
98 unsigned char gpwroff;
100 unsigned char gpaleoff;
101 unsigned char pade[15];
105 unsigned short pfs15_0;
106 unsigned short pfs31_16;
108 unsigned char padf[1];
109 unsigned char clksel;
110 unsigned char padg[1];
111 unsigned short dsctl;
112 unsigned short dir15_0;
113 unsigned short dir31_16;
115 unsigned short data15_0;
116 unsigned short data31_16;
117 unsigned short set15_0;
118 unsigned short set31_16;
119 unsigned short clr15_0;
120 unsigned short clr31_16;
121 unsigned char padi[0x24];
125 unsigned short swtmrmilli;
126 unsigned short swtmrmicro;
127 unsigned char swtmrcfg;
128 unsigned char padj[0xb];
134 unsigned short maxcmpa, maxcmpb;
138 unsigned char status;
140 struct gptmr timer[2];
141 /* yes, they REALLY DID make timer 2 different. */
145 unsigned char paddumb[8];
146 unsigned short maxcmpa2;
148 unsigned char pada[0x20];
153 unsigned short cntll;
154 unsigned short cntlh;
155 unsigned char pad[10];
159 unsigned char ctl, sta, fcrshad, pad;
164 unsigned char pad[8];
168 unsigned char ctl, xmit, cmd, sta, rcv;
169 unsigned char pad[0x2b];
173 /* interrupt control registers */
174 /* defined this way for portability. Shame we can't just use plan 9 c. */
178 unsigned char mpicmode;
179 unsigned char sl1picmode;
180 unsigned char sl2picmode;
181 unsigned char pad2[3];
182 unsigned char swint16_1;
184 unsigned char swint22_17;
185 unsigned char pad4[5];
186 unsigned short intpinpol;
187 unsigned char pad5[2];
188 unsigned char pichostmap;
189 unsigned char pad6[3];
190 unsigned char eccmap;
191 unsigned char pad7[1];
192 unsigned char gptmr0map;
193 unsigned char gptmr1map;
194 unsigned char gptmr2map;
195 unsigned char pad8[3];
196 unsigned char pit0map;
197 unsigned char pit1map;
198 unsigned char pit2map;
199 unsigned char pad9[5];
200 unsigned char uart1map;
201 unsigned char uart2map;
202 unsigned char pad99[6];
203 unsigned char pciintamap;
204 unsigned char pciintbmap;
205 unsigned char pciintcmap;
206 unsigned char pciintdmap;
207 unsigned char pad10[12];
208 unsigned char dmabcintmap;
209 unsigned char ssimap;
210 unsigned char wdtmap;
211 unsigned char rtcmap;
212 unsigned char wpvmap;
213 unsigned char icemap;
214 unsigned char ferrmap;
215 unsigned char pad11[9];
216 unsigned char gp0imap;
217 unsigned char gp1imap;
218 unsigned char gp2imap;
219 unsigned char gp3imap;
220 unsigned char gp4imap;
221 unsigned char gp5imap;
222 unsigned char gp6imap;
223 unsigned char gp7imap;
224 unsigned char gp8imap;
225 unsigned char gp9imap;
226 unsigned char gp10imap;
227 unsigned char padend[0x14];
231 unsigned char sysinfo;
233 unsigned char rescfg;
235 unsigned char ressta;
236 unsigned char pad3[0xb];
242 unsigned short extchanmapa;
243 unsigned short extchanmapb;
244 unsigned char extpg0;
245 unsigned char extpg1;
246 unsigned char extpg2;
247 unsigned char extpg3;
248 unsigned char extpg5;
249 unsigned char extpg6;
250 unsigned char extpg7;
251 unsigned char pad[3];
252 unsigned char exttc3;
253 unsigned char exttc5;
254 unsigned char exttc6;
255 unsigned char exttc7;
256 unsigned char pad1[4];
259 unsigned char bsintenb;
261 unsigned char pad2[4];
262 unsigned short nxtaddl3;
263 unsigned short nxtaddh3;
264 unsigned short nxtaddl5;
265 unsigned short nxtaddh5;
266 unsigned short nxtaddl6;
267 unsigned short nxtaddh6;
268 unsigned short nxtaddl7;
269 unsigned short nxtaddh7;
270 unsigned short nxtttcl3;
271 unsigned char nxtttch3;
273 unsigned short nxtttcl5;
274 unsigned char nxtttch5;
276 unsigned short nxtttcl6;
277 unsigned char nxtttch6;
279 unsigned short nxtttcl7;
280 unsigned char nxtttch7;
288 unsigned short revid;
289 unsigned char cpucontrol;
290 unsigned char pad1[11];
291 struct memregs memregs;
293 struct romregs romregs;
294 struct hostbridge hostbridge;
295 struct sysarb sysarb;
296 struct sysmap sysmap;
300 struct gptimers gptimers;
301 struct watchdog watchdog;
306 struct dmacontrol dmacontrol;
307 unsigned char padend[0x23d];
311 #define MMCRDEFAULT (struct mmcr *) 0xfffef000