| /* handy dandy stuff for the sc520 MMCR */ |
| /* default location of the MMCR */ |
| #define MMCR 0xfffef000 |
| |
| /* the PAR register struct definition, the location in memory, |
| * and a handy pointer for you to use |
| */ |
| |
| struct parreg { |
| unsigned long reg[16]; |
| }; |
| |
| #define PARREG (struct parreg *)0xfffef088 |
| //static volatile struct parreg *par = PARREG; |
| |
| |
| #define MMCRPIC (struct mmcrpic *) 0xfffefd00 |
| //static volatile struct mmcrpic *pic = MMCRPIC; |
| |
| #define M_GINT_MODE 1 |
| #define M_S1_MODE 2 |
| #define M_S2_MODE 4 |
| |
| |
| /* here is the real mmcr struct */ |
| |
| struct memregs { |
| /* make these shorts, we are lsb and the hardware seems to like it |
| * better |
| */ |
| unsigned short drcctl; |
| unsigned short drctmctl; |
| unsigned short drccfg; |
| unsigned char pad1[2]; |
| unsigned char drcbendadr[4]; |
| unsigned char pad2[4]; |
| unsigned char eccctl; |
| unsigned char eccsta; |
| unsigned char eccckbpos; |
| unsigned char ecccktest; |
| unsigned long eccsbadd; |
| unsigned long eccmbadd; |
| unsigned char pad3[18]; |
| }; |
| struct dbctl { |
| unsigned char dbctl; |
| unsigned char pad4[15]; |
| }; |
| |
| struct romregs { |
| unsigned char bootcs; |
| unsigned char pad5[3]; |
| unsigned char romcs1; |
| unsigned char pad6[1]; |
| unsigned char romcs2; |
| unsigned char pad7[6]; |
| }; |
| |
| |
| struct hostbridge { |
| unsigned short ctl; |
| unsigned short tgtirqctl; |
| unsigned short tgtirqsta; |
| unsigned short mstirqctl; |
| unsigned short mstirqsta; |
| unsigned char pad8[2]; |
| unsigned long mstintadd; |
| }; |
| |
| struct sysarb { |
| unsigned char ctl; |
| unsigned char sta; |
| unsigned char menb; |
| unsigned long prictl; |
| unsigned char pad9[8]; |
| }; |
| |
| struct sysmap { |
| unsigned char adddecctl; |
| unsigned char pada[1]; |
| unsigned short wpvsta; |
| unsigned char padb[4]; |
| unsigned long par[16]; |
| unsigned char padc[0xb38]; |
| }; |
| |
| struct gpctl { |
| unsigned char gpecho; |
| unsigned char gpcsdw; |
| unsigned char gpcsqual; |
| unsigned char padd[5]; |
| unsigned char gpcsrt; |
| unsigned char gpcspw; |
| unsigned char gpcsoff; |
| unsigned char gprdw; |
| unsigned char gprdoff; |
| unsigned char gpwrw; |
| unsigned char gpwroff; |
| unsigned char gpalew; |
| unsigned char gpaleoff; |
| unsigned char pade[15]; |
| }; |
| |
| struct pio { |
| unsigned short pfs15_0; |
| unsigned short pfs31_16; |
| unsigned char cspfs; |
| unsigned char padf[1]; |
| unsigned char clksel; |
| unsigned char padg[1]; |
| unsigned short dsctl; |
| unsigned short dir15_0; |
| unsigned short dir31_16; |
| unsigned short padh; |
| unsigned short data15_0; |
| unsigned short data31_16; |
| unsigned short set15_0; |
| unsigned short set31_16; |
| unsigned short clr15_0; |
| unsigned short clr31_16; |
| unsigned char padi[0x24]; |
| }; |
| |
| struct swtmr { |
| unsigned short swtmrmilli; |
| unsigned short swtmrmicro; |
| unsigned char swtmrcfg; |
| unsigned char padj[0xb]; |
| }; |
| |
| struct gptmr { |
| unsigned short ctl; |
| unsigned short cnt; |
| unsigned short maxcmpa, maxcmpb; |
| }; |
| |
| struct gptimers { |
| unsigned char status; |
| unsigned char pad; |
| struct gptmr timer[2]; |
| /* yes, they REALLY DID make timer 2 different. */ |
| /* yikes */ |
| unsigned short ctl2; |
| unsigned short cnt2; |
| unsigned char paddumb[8]; |
| unsigned short maxcmpa2; |
| |
| unsigned char pada[0x20]; |
| }; |
| |
| struct watchdog { |
| unsigned short ctl; |
| unsigned short cntll; |
| unsigned short cntlh; |
| unsigned char pad[10]; |
| }; |
| |
| struct uart { |
| unsigned char ctl, sta, fcrshad, pad; |
| }; |
| |
| struct uarts { |
| struct uart uart[2]; |
| unsigned char pad[8]; |
| }; |
| |
| struct ssi { |
| unsigned char ctl, xmit, cmd, sta, rcv; |
| unsigned char pad[0x2b]; |
| }; |
| |
| |
| /* interrupt control registers */ |
| /* defined this way for portability. Shame we can't just use plan 9 c. */ |
| struct pic { |
| unsigned char pcicr; |
| unsigned char pad1; |
| unsigned char mpicmode; |
| unsigned char sl1picmode; |
| unsigned char sl2picmode; |
| unsigned char pad2[3]; |
| unsigned char swint16_1; |
| unsigned char pad3; |
| unsigned char swint22_17; |
| unsigned char pad4[5]; |
| unsigned short intpinpol; |
| unsigned char pad5[2]; |
| unsigned char pichostmap; |
| unsigned char pad6[3]; |
| unsigned char eccmap; |
| unsigned char pad7[1]; |
| unsigned char gptmr0map; |
| unsigned char gptmr1map; |
| unsigned char gptmr2map; |
| unsigned char pad8[3]; |
| unsigned char pit0map; |
| unsigned char pit1map; |
| unsigned char pit2map; |
| unsigned char pad9[5]; |
| unsigned char uart1map; |
| unsigned char uart2map; |
| unsigned char pad99[6]; |
| unsigned char pciintamap; |
| unsigned char pciintbmap; |
| unsigned char pciintcmap; |
| unsigned char pciintdmap; |
| unsigned char pad10[12]; |
| unsigned char dmabcintmap; |
| unsigned char ssimap; |
| unsigned char wdtmap; |
| unsigned char rtcmap; |
| unsigned char wpvmap; |
| unsigned char icemap; |
| unsigned char ferrmap; |
| unsigned char pad11[9]; |
| unsigned char gp0imap; |
| unsigned char gp1imap; |
| unsigned char gp2imap; |
| unsigned char gp3imap; |
| unsigned char gp4imap; |
| unsigned char gp5imap; |
| unsigned char gp6imap; |
| unsigned char gp7imap; |
| unsigned char gp8imap; |
| unsigned char gp9imap; |
| unsigned char gp10imap; |
| unsigned char padend[0x14]; |
| }; |
| |
| struct reset { |
| unsigned char sysinfo; |
| unsigned char pad1; |
| unsigned char rescfg; |
| unsigned char pad2; |
| unsigned char ressta; |
| unsigned char pad3[0xb]; |
| }; |
| |
| struct dmacontrol { |
| unsigned char ctl; |
| unsigned char mmio; |
| unsigned short extchanmapa; |
| unsigned short extchanmapb; |
| unsigned char extpg0; |
| unsigned char extpg1; |
| unsigned char extpg2; |
| unsigned char extpg3; |
| unsigned char extpg5; |
| unsigned char extpg6; |
| unsigned char extpg7; |
| unsigned char pad[3]; |
| unsigned char exttc3; |
| unsigned char exttc5; |
| unsigned char exttc6; |
| unsigned char exttc7; |
| unsigned char pad1[4]; |
| unsigned char bcctl; |
| unsigned char bcsta; |
| unsigned char bsintenb; |
| unsigned char bcval; |
| unsigned char pad2[4]; |
| unsigned short nxtaddl3; |
| unsigned short nxtaddh3; |
| unsigned short nxtaddl5; |
| unsigned short nxtaddh5; |
| unsigned short nxtaddl6; |
| unsigned short nxtaddh6; |
| unsigned short nxtaddl7; |
| unsigned short nxtaddh7; |
| unsigned short nxtttcl3; |
| unsigned char nxtttch3; |
| unsigned char pad3; |
| unsigned short nxtttcl5; |
| unsigned char nxtttch5; |
| unsigned char pad5; |
| unsigned short nxtttcl6; |
| unsigned char nxtttch6; |
| unsigned char pad6; |
| unsigned short nxtttcl7; |
| unsigned char nxtttch7; |
| unsigned char pad7; |
| }; |
| |
| |
| |
| |
| struct mmcr { |
| unsigned short revid; |
| unsigned char cpucontrol; |
| unsigned char pad1[11]; |
| struct memregs memregs; |
| struct dbctl dbctl; |
| struct romregs romregs; |
| struct hostbridge hostbridge; |
| struct sysarb sysarb; |
| struct sysmap sysmap; |
| struct gpctl gpctl; |
| struct pio pio; |
| struct swtmr swtmr; |
| struct gptimers gptimers; |
| struct watchdog watchdog; |
| struct uarts uarts; |
| struct ssi ssi; |
| struct pic pic; |
| struct reset reset; |
| struct dmacontrol dmacontrol; |
| unsigned char padend[0x23d]; |
| }; |
| |
| |
| #define MMCRDEFAULT (struct mmcr *) 0xfffef000 |