From: Stefan Reinauer Date: Sun, 26 Sep 2010 15:15:48 +0000 (+0000) Subject: the utility is called dumpmmcr, not dump_mmcr X-Git-Url: http://wien.tomnetworks.com/gitweb/?p=coreboot.git;a=commitdiff_plain;h=64b26009a1303dab9da4d118c19c22f3992830be the utility is called dumpmmcr, not dump_mmcr Signed-off-by: Stefan Reinauer Acked-by: Stefan Reinauer git-svn-id: svn://svn.coreboot.org/coreboot/trunk@5852 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1 --- diff --git a/util/dump_mmcr/Makefile b/util/dump_mmcr/Makefile deleted file mode 100644 index 161a3616e..000000000 --- a/util/dump_mmcr/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -dumpmmcr: dumpmmcr.c - gcc -m32 -Os -static -o dumpmmcr dumpmmcr.c - strip -s dumpmmcr -clean: - rm dumpmmcr diff --git a/util/dump_mmcr/dumpmmcr.c b/util/dump_mmcr/dumpmmcr.c deleted file mode 100644 index 4e1e4e793..000000000 --- a/util/dump_mmcr/dumpmmcr.c +++ /dev/null @@ -1,313 +0,0 @@ -/* - * dump mmcr of Elan520 uController (incomplete, see 22005b pg23+). - * - * Copyright 2005 Ronald G. Minnich - * Copyright 2006 coresystems GmbH - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "../../src/include/cpu/amd/sc520.h" - -#define val(x,y) (x->y) - -int print_mmcr(struct mmcr *mmcr) -{ - int i; - printf("revid is 0x%x\n\n", val(mmcr, revid)); - printf("cpucontrol is 0x%x\n\n", val(mmcr, cpucontrol)); - - printf("\n"); - printf("drcctl is 0x%x\n", val(mmcr, memregs.drcctl)); - printf("drctmctl is 0x%x\n", val(mmcr, memregs.drctmctl)); - printf("drccfg is 0x%x\n", val(mmcr, memregs.drccfg)); - printf("bendaddr is 0x%02x%02x%02x%02x\n", - val(mmcr, memregs.drcbendadr[3]), - val(mmcr, memregs.drcbendadr[2]), - val(mmcr, memregs.drcbendadr[1]), - val(mmcr, memregs.drcbendadr[0])); - printf("eccctl is 0x%x\n", val(mmcr, memregs.eccctl)); - printf("eccsta is 0x%x\n", val(mmcr, memregs.eccsta)); - printf("ckbpos is 0x%x\n", val(mmcr, memregs.eccckbpos)); - printf("cktest is 0x%x\n", val(mmcr, memregs.ecccktest)); - printf("sbadd is 0x%x\n", val(mmcr, memregs.eccsbadd)); - printf("mbadd is 0x%x\n", val(mmcr, memregs.eccmbadd)); - - printf("\n"); - printf("dbctl is 0x%x\n", val(mmcr, dbctl.dbctl)); - - printf("\n"); - printf("bootcs is 0x%x\n", val(mmcr, romregs.bootcs)); - printf("romcs1 is 0x%x\n", val(mmcr, romregs.romcs1)); - printf("romcs2 is 0x%x\n", val(mmcr, romregs.romcs2)); - - printf("\n"); - printf("hbctl is 0x%x\n", val(mmcr, hostbridge.ctl)); - printf("hbtgtirqctl is 0x%x\n", val(mmcr, hostbridge.tgtirqctl)); - printf("hbtgtirqsta is 0x%x\n", val(mmcr, hostbridge.tgtirqsta)); - printf("hbmstirqctl is 0x%x\n", val(mmcr, hostbridge.mstirqctl)); - printf("hbmstirqsta is 0x%x\n", val(mmcr, hostbridge.mstirqsta)); - printf("mstintadd is 0x%x\n", val(mmcr, hostbridge.mstintadd)); - - - printf("\n"); - printf("sysarbctl is 0x%x\n", val(mmcr, sysarb.ctl)); - printf("pciarbsta is 0x%x\n", val(mmcr, sysarb.sta)); - printf("sysarbmenb is 0x%x\n", val(mmcr, sysarb.menb)); - printf("arbprictl is 0x%x\n", val(mmcr, sysarb.prictl)); - - printf("\n"); - printf("adddecctl is 0x%x\n", val(mmcr, sysmap.adddecctl)); - printf("wpvsta is 0x%x\n", val(mmcr, sysmap.wpvsta)); - for (i=0; i<16; i++) - printf("par %d is 0x%x\n", i, val(mmcr, sysmap.par[i])); - - printf("\n"); - printf("gpecho is 0x%x\n", val(mmcr, gpctl.gpecho)); - printf("gpcsdw is 0x%x\n", val(mmcr, gpctl.gpcsdw)); - printf("gpcsqual is 0x%x\n", val(mmcr, gpctl.gpcsqual)); - printf("gpcsrt is 0x%x\n", val(mmcr, gpctl.gpcsrt)); - printf("gpcspw is 0x%x\n", val(mmcr, gpctl.gpcspw)); - printf("gpcsoff is 0x%x\n", val(mmcr, gpctl.gpcsoff)); - printf("gprdw is 0x%x\n", val(mmcr, gpctl.gprdw)); - printf("gprdoff is 0x%x\n", val(mmcr, gpctl.gprdoff)); - printf("gpwrw is 0x%x\n", val(mmcr, gpctl.gpwrw)); - printf("gpwroff is 0x%x\n", val(mmcr, gpctl.gpwroff)); - printf("gpalew is 0x%x\n", val(mmcr, gpctl.gpalew)); - printf("gpaleoff is 0x%x\n", val(mmcr, gpctl.gpaleoff)); - - printf("\n"); - - printf("piopfs15_0 is 0x%x\n", val(mmcr, pio.pfs15_0)); - printf("piopfs31_16 is 0x%x\n", val(mmcr, pio.pfs31_16)); - printf("cspfs is 0x%x\n", val(mmcr, pio.cspfs)); - printf("clksel is 0x%x\n", val(mmcr, pio.clksel)); - printf("dsctl is 0x%x\n", val(mmcr, pio.dsctl)); - printf("piodir15_0 is 0x%x\n", val(mmcr, pio.dir15_0)); - printf("piodir31_16 is 0x%x\n", val(mmcr, pio.dir31_16)); - printf("piodata15_0 is 0x%x\n", val(mmcr, pio.data15_0)); - printf("piodata31_16 is 0x%x\n", val(mmcr, pio.data31_16)); - printf("pioset15_0 is 0x%x\n", val(mmcr, pio.set15_0)); - printf("pioset31_16 is 0x%x\n", val(mmcr, pio.set31_16)); - printf("pioclr15_0 is 0x%x\n", val(mmcr, pio.clr15_0)); - printf("pioclr31_16 is 0x%x\n", val(mmcr, pio.clr31_16)); - - printf("swtmrmilli is 0x%x\n", val(mmcr, swtmr.swtmrmilli)); - printf("swtmrmicro is 0x%x\n", val(mmcr, swtmr.swtmrmicro)); - printf("swtmrcfg is 0x%x\n", val(mmcr, swtmr.swtmrcfg)); - - printf("status is 0x%x\n", val(mmcr, gptimers.status)); - printf("pad is 0x%x\n", val(mmcr, gptimers.pad)); - - printf("timers[0].ctl is 0x%x\n", val(mmcr, gptimers.timer[0].ctl)); - printf("timers[0].cnt is 0x%x\n", val(mmcr, gptimers.timer[0].cnt)); - printf("timers[0].maxcmpa is 0x%x\n", val(mmcr, gptimers.timer[0].maxcmpa)); - printf("timers[0].maxcmpb is 0x%x\n", val(mmcr, gptimers.timer[0].maxcmpb)); - - printf("timers[1].ctl is 0x%x\n", val(mmcr, gptimers.timer[1].ctl)); - printf("timers[1].cnt is 0x%x\n", val(mmcr, gptimers.timer[1].cnt)); - printf("timers[1].maxcmpa is 0x%x\n", val(mmcr, gptimers.timer[1].maxcmpa)); - printf("timers[1].maxcmpb is 0x%x\n", val(mmcr, gptimers.timer[1].maxcmpb)); - printf("timers[2].ctl is 0x%x\n", val(mmcr, gptimers.ctl2)); - printf("timers[2].cnt is 0x%x\n", val(mmcr, gptimers.cnt2)); - printf("timers[2].maxcmpa is 0x%x\n", val(mmcr, gptimers.maxcmpa2)); - - printf("ctl is 0x%x\n", val(mmcr, watchdog.ctl)); - printf("cntll is 0x%x\n", val(mmcr, watchdog.cntll)); - printf("cntlh is 0x%x\n", val(mmcr, watchdog.cntlh)); - - printf("uart 1 ctl is 0x%x\n", val(mmcr, uarts.uart[0].ctl)); - printf("uart 1 sta is 0x%x\n", val(mmcr, uarts.uart[0].sta)); - printf("uart 1 fcrshad is 0x%x\n", val(mmcr, uarts.uart[0].fcrshad)); - printf("uart 2 ctl is 0x%x\n", val(mmcr, uarts.uart[1].ctl)); - printf("uart 2 sta is 0x%x\n", val(mmcr, uarts.uart[1].sta)); - printf("uart 2 fcrshad is 0x%x\n", val(mmcr, uarts.uart[1].fcrshad)); - - printf("ssi ctl is 0x%x\n", val(mmcr, ssi.ctl)); - printf("ssi xmit is 0x%x\n", val(mmcr, ssi.xmit)); - printf("ssi cmd is 0x%x\n", val(mmcr, ssi.cmd)); - printf("ssi sta is 0x%x\n", val(mmcr, ssi.sta)); - printf("ssi rcv is 0x%x\n", val(mmcr, ssi.rcv)); - - printf("pcicr is 0x%x\n", val(mmcr, pic.pcicr)); - printf("mpicmode is 0x%x\n", val(mmcr, pic.mpicmode)); - printf("sl1picmode is 0x%x\n", val(mmcr, pic.sl1picmode)); - printf("sl2picmode is 0x%x\n", val(mmcr, pic.sl2picmode)); - printf("swint16_1 is 0x%x\n", val(mmcr, pic.swint16_1)); - printf("swint22_17 is 0x%x\n", val(mmcr, pic.swint22_17)); - printf("intpinpol is 0x%x\n", val(mmcr, pic.intpinpol)); - printf("pichostmap is 0x%x\n", val(mmcr, pic.pichostmap)); - printf("eccmap is 0x%x\n", val(mmcr, pic.eccmap)); - printf("gptmr0map is 0x%x\n", val(mmcr, pic.gptmr0map)); - printf("gptmr1map is 0x%x\n", val(mmcr, pic.gptmr1map)); - printf("gptmr2map is 0x%x\n", val(mmcr, pic.gptmr2map)); - printf("pit0map is 0x%x\n", val(mmcr, pic.pit0map)); - printf("pit1map is 0x%x\n", val(mmcr, pic.pit1map)); - printf("pit2map is 0x%x\n", val(mmcr, pic.pit2map)); - printf("uart1map is 0x%x\n", val(mmcr, pic.uart1map)); - printf("uart2map is 0x%x\n", val(mmcr, pic.uart2map)); - printf("pciintamap is 0x%x\n", val(mmcr, pic.pciintamap)); - printf("pciintbmap is 0x%x\n", val(mmcr, pic.pciintbmap)); - printf("pciintcmap is 0x%x\n", val(mmcr, pic.pciintcmap)); - printf("pciintdmap is 0x%x\n", val(mmcr, pic.pciintdmap)); - printf("dmabcintmap is 0x%x\n", val(mmcr, pic.dmabcintmap)); - printf("ssimap is 0x%x\n", val(mmcr, pic.ssimap)); - printf("wdtmap is 0x%x\n", val(mmcr, pic.wdtmap)); - printf("rtcmap is 0x%x\n", val(mmcr, pic.rtcmap)); - printf("wpvmap is 0x%x\n", val(mmcr, pic.wpvmap)); - printf("icemap is 0x%x\n", val(mmcr, pic.icemap)); - printf("ferrmap is 0x%x\n", val(mmcr, pic.ferrmap)); - printf("gp0imap is 0x%x\n", val(mmcr, pic.gp0imap)); - printf("gp1imap is 0x%x\n", val(mmcr, pic.gp1imap)); - printf("gp2imap is 0x%x\n", val(mmcr, pic.gp2imap)); - printf("gp3imap is 0x%x\n", val(mmcr, pic.gp3imap)); - printf("gp4imap is 0x%x\n", val(mmcr, pic.gp4imap)); - printf("gp5imap is 0x%x\n", val(mmcr, pic.gp5imap)); - printf("gp6imap is 0x%x\n", val(mmcr, pic.gp6imap)); - printf("gp7imap is 0x%x\n", val(mmcr, pic.gp7imap)); - printf("gp8imap is 0x%x\n", val(mmcr, pic.gp8imap)); - printf("gp9imap is 0x%x\n", val(mmcr, pic.gp9imap)); - printf("gp10imap is 0x%x\n", val(mmcr, pic.gp10imap)); - - printf("sysinfo is 0x%x\n", val(mmcr, reset.sysinfo)); - printf("rescfg is 0x%x\n", val(mmcr, reset.rescfg)); - printf("ressta is 0x%x\n", val(mmcr, reset.ressta)); - - - printf("ctl is 0x%x\n", val(mmcr, dmacontrol.ctl)); - printf("mmio is 0x%x\n", val(mmcr, dmacontrol.mmio)); - printf("extchanmapa is 0x%x\n", val(mmcr, dmacontrol.extchanmapa)); - printf("extchanmapb is 0x%x\n", val(mmcr, dmacontrol.extchanmapb)); - printf("extpg0 is 0x%x\n", val(mmcr, dmacontrol.extpg0)); - printf("extpg1 is 0x%x\n", val(mmcr, dmacontrol.extpg1)); - printf("extpg2 is 0x%x\n", val(mmcr, dmacontrol.extpg2)); - printf("extpg3 is 0x%x\n", val(mmcr, dmacontrol.extpg3)); - printf("extpg5 is 0x%x\n", val(mmcr, dmacontrol.extpg5)); - printf("extpg6 is 0x%x\n", val(mmcr, dmacontrol.extpg6)); - printf("extpg7 is 0x%x\n", val(mmcr, dmacontrol.extpg7)); - printf("exttc3 is 0x%x\n", val(mmcr, dmacontrol.exttc3)); - printf("exttc5 is 0x%x\n", val(mmcr, dmacontrol.exttc5)); - printf("exttc6 is 0x%x\n", val(mmcr, dmacontrol.exttc6)); - printf("exttc7 is 0x%x\n", val(mmcr, dmacontrol.exttc7)); - printf("bcctl is 0x%x\n", val(mmcr, dmacontrol.bcctl)); - printf("bcsta is 0x%x\n", val(mmcr, dmacontrol.bcsta)); - printf("bsintenb is 0x%x\n", val(mmcr, dmacontrol.bsintenb)); - printf("bcval is 0x%x\n", val(mmcr, dmacontrol.bcval)); - printf("nxtaddl3 is 0x%x\n", val(mmcr, dmacontrol.nxtaddl3)); - printf("nxtaddh3 is 0x%x\n", val(mmcr, dmacontrol.nxtaddh3)); - printf("nxtaddl5 is 0x%x\n", val(mmcr, dmacontrol.nxtaddl5)); - printf("nxtaddh5 is 0x%x\n", val(mmcr, dmacontrol.nxtaddh5)); - printf("nxtaddl6 is 0x%x\n", val(mmcr, dmacontrol.nxtaddl6)); - printf("nxtaddh6 is 0x%x\n", val(mmcr, dmacontrol.nxtaddh6)); - printf("nxtaddl7 is 0x%x\n", val(mmcr, dmacontrol.nxtaddl7)); - printf("nxtaddh7 is 0x%x\n", val(mmcr, dmacontrol.nxtaddh7)); - printf("nxtttcl3 is 0x%x\n", val(mmcr, dmacontrol.nxtttcl3)); - printf("nxtttch3 is 0x%x\n", val(mmcr, dmacontrol.nxtttch3)); - printf("nxtttcl5 is 0x%x\n", val(mmcr, dmacontrol.nxtttcl5)); - printf("nxtttch5 is 0x%x\n", val(mmcr, dmacontrol.nxtttch5)); - printf("nxtttcl6 is 0x%x\n", val(mmcr, dmacontrol.nxtttcl6)); - printf("nxtttch6 is 0x%x\n", val(mmcr, dmacontrol.nxtttch6)); - printf("nxtttcl7 is 0x%x\n", val(mmcr, dmacontrol.nxtttcl7)); - printf("nxtttch7 is 0x%x\n", val(mmcr, dmacontrol.nxtttch7)); - - return 0; -} - -int map_mmcr(void) -{ - int fd_mem; - volatile uint8_t *mmcr; - unsigned long size=4096; - - if ((fd_mem = open("/dev/mem", O_RDWR)) < 0) { - perror("Can not open /dev/mem"); - exit(1); - } - - if (getpagesize() > size) { - size = getpagesize(); - } - - mmcr = mmap(0, size, PROT_WRITE | PROT_READ, MAP_SHARED, - fd_mem, (off_t) (0xFFFEF000)); - - if (mmcr == MAP_FAILED) { - perror("Error MMAP /dev/mem"); - exit(1); - } - - - print_mmcr((struct mmcr *)mmcr); -#if 0 - - printf("ElanSC520 uC Rev. ID : %04x\n",*(uint16_t *)mmcr); - printf("Am5x86 CPU Control : %04x\n",*(uint16_t *)(mmcr+2)); - printf("\n"); - printf("SDRAM Control : %04x\n",*(uint16_t *)(mmcr+0x10)); - printf("SDRAM Timing Control : %04x\n",*(uint16_t *)(mmcr+0x12)); - printf("SDRAM Bank Config : %04x\n",*(uint16_t *)(mmcr+0x14)); - printf("SDRAM Bank 0-3 Ending : %04x\n",*(uint16_t *)(mmcr+0x18)); - printf("ECC Control : %04x\n",*(uint16_t *)(mmcr+0x20)); - printf("ECC Status : %04x\n",*(uint16_t *)(mmcr+0x21)); - printf("ECC Check Bit Position: %04x\n",*(uint16_t *)(mmcr+0x22)); - printf("ECC Check Code Test : %04x\n",*(uint16_t *)(mmcr+0x23)); - printf("ECC Single Bit ErrAddr: %04x\n",*(uint16_t *)(mmcr+0x24)); - printf("ECC Multi Bit ErrAddr : %04x\n",*(uint16_t *)(mmcr+0x28)); - printf("\n"); - printf("SDRAM Buffer Control : %04x\n",*(uint16_t *)(mmcr+0x40)); - printf("\n"); - printf("BOOTCS Control : %04x\n",*(uint16_t *)(mmcr+0x50)); - printf("BOOTCS1 Control : %04x\n",*(uint16_t *)(mmcr+0x54)); - printf("BOOTCS2 Control : %04x\n",*(uint16_t *)(mmcr+0x56)); - printf("\n"); - - printf("Adr Decode Control : %02x\n",*(uint8_t *)(mmcr+0x80)); - printf("WrProt Violation Stat.: %04x\n",*(uint16_t *)(mmcr+0x82)); - printf("PAR 0 : %08x\n",*(uint32_t *)(mmcr+0x88)); - printf("PAR 1 : %08x\n",*(uint32_t *)(mmcr+0x8C)); - printf("PAR 2 : %08x\n",*(uint32_t *)(mmcr+0x90)); - printf("PAR 3 : %08x\n",*(uint32_t *)(mmcr+0x94)); - printf("PAR 4 : %08x\n",*(uint32_t *)(mmcr+0x98)); - printf("PAR 5 : %08x\n",*(uint32_t *)(mmcr+0x9C)); - printf("PAR 6 : %08x\n",*(uint32_t *)(mmcr+0xA0)); - printf("PAR 7 : %08x\n",*(uint32_t *)(mmcr+0xA4)); - printf("PAR 8 : %08x\n",*(uint32_t *)(mmcr+0xA8)); - printf("PAR 9 : %08x\n",*(uint32_t *)(mmcr+0xAC)); - printf("PAR 10 : %08x\n",*(uint32_t *)(mmcr+0xB0)); - printf("PAR 11 : %08x\n",*(uint32_t *)(mmcr+0xB4)); - printf("PAR 12 : %08x\n",*(uint32_t *)(mmcr+0xB8)); - printf("PAR 13 : %08x\n",*(uint32_t *)(mmcr+0xBC)); - printf("PAR 14 : %08x\n",*(uint32_t *)(mmcr+0xC0)); - printf("PAR 15 : %08x\n",*(uint32_t *)(mmcr+0xC4)); -#endif - munmap((void *) mmcr, size); - return 0; -} - -int main(int argc, char *argv[]) -{ - map_mmcr(); - return 0; -} diff --git a/util/dumpmmcr/Makefile b/util/dumpmmcr/Makefile new file mode 100644 index 000000000..161a3616e --- /dev/null +++ b/util/dumpmmcr/Makefile @@ -0,0 +1,5 @@ +dumpmmcr: dumpmmcr.c + gcc -m32 -Os -static -o dumpmmcr dumpmmcr.c + strip -s dumpmmcr +clean: + rm dumpmmcr diff --git a/util/dumpmmcr/dumpmmcr.c b/util/dumpmmcr/dumpmmcr.c new file mode 100644 index 000000000..4e1e4e793 --- /dev/null +++ b/util/dumpmmcr/dumpmmcr.c @@ -0,0 +1,313 @@ +/* + * dump mmcr of Elan520 uController (incomplete, see 22005b pg23+). + * + * Copyright 2005 Ronald G. Minnich + * Copyright 2006 coresystems GmbH + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "../../src/include/cpu/amd/sc520.h" + +#define val(x,y) (x->y) + +int print_mmcr(struct mmcr *mmcr) +{ + int i; + printf("revid is 0x%x\n\n", val(mmcr, revid)); + printf("cpucontrol is 0x%x\n\n", val(mmcr, cpucontrol)); + + printf("\n"); + printf("drcctl is 0x%x\n", val(mmcr, memregs.drcctl)); + printf("drctmctl is 0x%x\n", val(mmcr, memregs.drctmctl)); + printf("drccfg is 0x%x\n", val(mmcr, memregs.drccfg)); + printf("bendaddr is 0x%02x%02x%02x%02x\n", + val(mmcr, memregs.drcbendadr[3]), + val(mmcr, memregs.drcbendadr[2]), + val(mmcr, memregs.drcbendadr[1]), + val(mmcr, memregs.drcbendadr[0])); + printf("eccctl is 0x%x\n", val(mmcr, memregs.eccctl)); + printf("eccsta is 0x%x\n", val(mmcr, memregs.eccsta)); + printf("ckbpos is 0x%x\n", val(mmcr, memregs.eccckbpos)); + printf("cktest is 0x%x\n", val(mmcr, memregs.ecccktest)); + printf("sbadd is 0x%x\n", val(mmcr, memregs.eccsbadd)); + printf("mbadd is 0x%x\n", val(mmcr, memregs.eccmbadd)); + + printf("\n"); + printf("dbctl is 0x%x\n", val(mmcr, dbctl.dbctl)); + + printf("\n"); + printf("bootcs is 0x%x\n", val(mmcr, romregs.bootcs)); + printf("romcs1 is 0x%x\n", val(mmcr, romregs.romcs1)); + printf("romcs2 is 0x%x\n", val(mmcr, romregs.romcs2)); + + printf("\n"); + printf("hbctl is 0x%x\n", val(mmcr, hostbridge.ctl)); + printf("hbtgtirqctl is 0x%x\n", val(mmcr, hostbridge.tgtirqctl)); + printf("hbtgtirqsta is 0x%x\n", val(mmcr, hostbridge.tgtirqsta)); + printf("hbmstirqctl is 0x%x\n", val(mmcr, hostbridge.mstirqctl)); + printf("hbmstirqsta is 0x%x\n", val(mmcr, hostbridge.mstirqsta)); + printf("mstintadd is 0x%x\n", val(mmcr, hostbridge.mstintadd)); + + + printf("\n"); + printf("sysarbctl is 0x%x\n", val(mmcr, sysarb.ctl)); + printf("pciarbsta is 0x%x\n", val(mmcr, sysarb.sta)); + printf("sysarbmenb is 0x%x\n", val(mmcr, sysarb.menb)); + printf("arbprictl is 0x%x\n", val(mmcr, sysarb.prictl)); + + printf("\n"); + printf("adddecctl is 0x%x\n", val(mmcr, sysmap.adddecctl)); + printf("wpvsta is 0x%x\n", val(mmcr, sysmap.wpvsta)); + for (i=0; i<16; i++) + printf("par %d is 0x%x\n", i, val(mmcr, sysmap.par[i])); + + printf("\n"); + printf("gpecho is 0x%x\n", val(mmcr, gpctl.gpecho)); + printf("gpcsdw is 0x%x\n", val(mmcr, gpctl.gpcsdw)); + printf("gpcsqual is 0x%x\n", val(mmcr, gpctl.gpcsqual)); + printf("gpcsrt is 0x%x\n", val(mmcr, gpctl.gpcsrt)); + printf("gpcspw is 0x%x\n", val(mmcr, gpctl.gpcspw)); + printf("gpcsoff is 0x%x\n", val(mmcr, gpctl.gpcsoff)); + printf("gprdw is 0x%x\n", val(mmcr, gpctl.gprdw)); + printf("gprdoff is 0x%x\n", val(mmcr, gpctl.gprdoff)); + printf("gpwrw is 0x%x\n", val(mmcr, gpctl.gpwrw)); + printf("gpwroff is 0x%x\n", val(mmcr, gpctl.gpwroff)); + printf("gpalew is 0x%x\n", val(mmcr, gpctl.gpalew)); + printf("gpaleoff is 0x%x\n", val(mmcr, gpctl.gpaleoff)); + + printf("\n"); + + printf("piopfs15_0 is 0x%x\n", val(mmcr, pio.pfs15_0)); + printf("piopfs31_16 is 0x%x\n", val(mmcr, pio.pfs31_16)); + printf("cspfs is 0x%x\n", val(mmcr, pio.cspfs)); + printf("clksel is 0x%x\n", val(mmcr, pio.clksel)); + printf("dsctl is 0x%x\n", val(mmcr, pio.dsctl)); + printf("piodir15_0 is 0x%x\n", val(mmcr, pio.dir15_0)); + printf("piodir31_16 is 0x%x\n", val(mmcr, pio.dir31_16)); + printf("piodata15_0 is 0x%x\n", val(mmcr, pio.data15_0)); + printf("piodata31_16 is 0x%x\n", val(mmcr, pio.data31_16)); + printf("pioset15_0 is 0x%x\n", val(mmcr, pio.set15_0)); + printf("pioset31_16 is 0x%x\n", val(mmcr, pio.set31_16)); + printf("pioclr15_0 is 0x%x\n", val(mmcr, pio.clr15_0)); + printf("pioclr31_16 is 0x%x\n", val(mmcr, pio.clr31_16)); + + printf("swtmrmilli is 0x%x\n", val(mmcr, swtmr.swtmrmilli)); + printf("swtmrmicro is 0x%x\n", val(mmcr, swtmr.swtmrmicro)); + printf("swtmrcfg is 0x%x\n", val(mmcr, swtmr.swtmrcfg)); + + printf("status is 0x%x\n", val(mmcr, gptimers.status)); + printf("pad is 0x%x\n", val(mmcr, gptimers.pad)); + + printf("timers[0].ctl is 0x%x\n", val(mmcr, gptimers.timer[0].ctl)); + printf("timers[0].cnt is 0x%x\n", val(mmcr, gptimers.timer[0].cnt)); + printf("timers[0].maxcmpa is 0x%x\n", val(mmcr, gptimers.timer[0].maxcmpa)); + printf("timers[0].maxcmpb is 0x%x\n", val(mmcr, gptimers.timer[0].maxcmpb)); + + printf("timers[1].ctl is 0x%x\n", val(mmcr, gptimers.timer[1].ctl)); + printf("timers[1].cnt is 0x%x\n", val(mmcr, gptimers.timer[1].cnt)); + printf("timers[1].maxcmpa is 0x%x\n", val(mmcr, gptimers.timer[1].maxcmpa)); + printf("timers[1].maxcmpb is 0x%x\n", val(mmcr, gptimers.timer[1].maxcmpb)); + printf("timers[2].ctl is 0x%x\n", val(mmcr, gptimers.ctl2)); + printf("timers[2].cnt is 0x%x\n", val(mmcr, gptimers.cnt2)); + printf("timers[2].maxcmpa is 0x%x\n", val(mmcr, gptimers.maxcmpa2)); + + printf("ctl is 0x%x\n", val(mmcr, watchdog.ctl)); + printf("cntll is 0x%x\n", val(mmcr, watchdog.cntll)); + printf("cntlh is 0x%x\n", val(mmcr, watchdog.cntlh)); + + printf("uart 1 ctl is 0x%x\n", val(mmcr, uarts.uart[0].ctl)); + printf("uart 1 sta is 0x%x\n", val(mmcr, uarts.uart[0].sta)); + printf("uart 1 fcrshad is 0x%x\n", val(mmcr, uarts.uart[0].fcrshad)); + printf("uart 2 ctl is 0x%x\n", val(mmcr, uarts.uart[1].ctl)); + printf("uart 2 sta is 0x%x\n", val(mmcr, uarts.uart[1].sta)); + printf("uart 2 fcrshad is 0x%x\n", val(mmcr, uarts.uart[1].fcrshad)); + + printf("ssi ctl is 0x%x\n", val(mmcr, ssi.ctl)); + printf("ssi xmit is 0x%x\n", val(mmcr, ssi.xmit)); + printf("ssi cmd is 0x%x\n", val(mmcr, ssi.cmd)); + printf("ssi sta is 0x%x\n", val(mmcr, ssi.sta)); + printf("ssi rcv is 0x%x\n", val(mmcr, ssi.rcv)); + + printf("pcicr is 0x%x\n", val(mmcr, pic.pcicr)); + printf("mpicmode is 0x%x\n", val(mmcr, pic.mpicmode)); + printf("sl1picmode is 0x%x\n", val(mmcr, pic.sl1picmode)); + printf("sl2picmode is 0x%x\n", val(mmcr, pic.sl2picmode)); + printf("swint16_1 is 0x%x\n", val(mmcr, pic.swint16_1)); + printf("swint22_17 is 0x%x\n", val(mmcr, pic.swint22_17)); + printf("intpinpol is 0x%x\n", val(mmcr, pic.intpinpol)); + printf("pichostmap is 0x%x\n", val(mmcr, pic.pichostmap)); + printf("eccmap is 0x%x\n", val(mmcr, pic.eccmap)); + printf("gptmr0map is 0x%x\n", val(mmcr, pic.gptmr0map)); + printf("gptmr1map is 0x%x\n", val(mmcr, pic.gptmr1map)); + printf("gptmr2map is 0x%x\n", val(mmcr, pic.gptmr2map)); + printf("pit0map is 0x%x\n", val(mmcr, pic.pit0map)); + printf("pit1map is 0x%x\n", val(mmcr, pic.pit1map)); + printf("pit2map is 0x%x\n", val(mmcr, pic.pit2map)); + printf("uart1map is 0x%x\n", val(mmcr, pic.uart1map)); + printf("uart2map is 0x%x\n", val(mmcr, pic.uart2map)); + printf("pciintamap is 0x%x\n", val(mmcr, pic.pciintamap)); + printf("pciintbmap is 0x%x\n", val(mmcr, pic.pciintbmap)); + printf("pciintcmap is 0x%x\n", val(mmcr, pic.pciintcmap)); + printf("pciintdmap is 0x%x\n", val(mmcr, pic.pciintdmap)); + printf("dmabcintmap is 0x%x\n", val(mmcr, pic.dmabcintmap)); + printf("ssimap is 0x%x\n", val(mmcr, pic.ssimap)); + printf("wdtmap is 0x%x\n", val(mmcr, pic.wdtmap)); + printf("rtcmap is 0x%x\n", val(mmcr, pic.rtcmap)); + printf("wpvmap is 0x%x\n", val(mmcr, pic.wpvmap)); + printf("icemap is 0x%x\n", val(mmcr, pic.icemap)); + printf("ferrmap is 0x%x\n", val(mmcr, pic.ferrmap)); + printf("gp0imap is 0x%x\n", val(mmcr, pic.gp0imap)); + printf("gp1imap is 0x%x\n", val(mmcr, pic.gp1imap)); + printf("gp2imap is 0x%x\n", val(mmcr, pic.gp2imap)); + printf("gp3imap is 0x%x\n", val(mmcr, pic.gp3imap)); + printf("gp4imap is 0x%x\n", val(mmcr, pic.gp4imap)); + printf("gp5imap is 0x%x\n", val(mmcr, pic.gp5imap)); + printf("gp6imap is 0x%x\n", val(mmcr, pic.gp6imap)); + printf("gp7imap is 0x%x\n", val(mmcr, pic.gp7imap)); + printf("gp8imap is 0x%x\n", val(mmcr, pic.gp8imap)); + printf("gp9imap is 0x%x\n", val(mmcr, pic.gp9imap)); + printf("gp10imap is 0x%x\n", val(mmcr, pic.gp10imap)); + + printf("sysinfo is 0x%x\n", val(mmcr, reset.sysinfo)); + printf("rescfg is 0x%x\n", val(mmcr, reset.rescfg)); + printf("ressta is 0x%x\n", val(mmcr, reset.ressta)); + + + printf("ctl is 0x%x\n", val(mmcr, dmacontrol.ctl)); + printf("mmio is 0x%x\n", val(mmcr, dmacontrol.mmio)); + printf("extchanmapa is 0x%x\n", val(mmcr, dmacontrol.extchanmapa)); + printf("extchanmapb is 0x%x\n", val(mmcr, dmacontrol.extchanmapb)); + printf("extpg0 is 0x%x\n", val(mmcr, dmacontrol.extpg0)); + printf("extpg1 is 0x%x\n", val(mmcr, dmacontrol.extpg1)); + printf("extpg2 is 0x%x\n", val(mmcr, dmacontrol.extpg2)); + printf("extpg3 is 0x%x\n", val(mmcr, dmacontrol.extpg3)); + printf("extpg5 is 0x%x\n", val(mmcr, dmacontrol.extpg5)); + printf("extpg6 is 0x%x\n", val(mmcr, dmacontrol.extpg6)); + printf("extpg7 is 0x%x\n", val(mmcr, dmacontrol.extpg7)); + printf("exttc3 is 0x%x\n", val(mmcr, dmacontrol.exttc3)); + printf("exttc5 is 0x%x\n", val(mmcr, dmacontrol.exttc5)); + printf("exttc6 is 0x%x\n", val(mmcr, dmacontrol.exttc6)); + printf("exttc7 is 0x%x\n", val(mmcr, dmacontrol.exttc7)); + printf("bcctl is 0x%x\n", val(mmcr, dmacontrol.bcctl)); + printf("bcsta is 0x%x\n", val(mmcr, dmacontrol.bcsta)); + printf("bsintenb is 0x%x\n", val(mmcr, dmacontrol.bsintenb)); + printf("bcval is 0x%x\n", val(mmcr, dmacontrol.bcval)); + printf("nxtaddl3 is 0x%x\n", val(mmcr, dmacontrol.nxtaddl3)); + printf("nxtaddh3 is 0x%x\n", val(mmcr, dmacontrol.nxtaddh3)); + printf("nxtaddl5 is 0x%x\n", val(mmcr, dmacontrol.nxtaddl5)); + printf("nxtaddh5 is 0x%x\n", val(mmcr, dmacontrol.nxtaddh5)); + printf("nxtaddl6 is 0x%x\n", val(mmcr, dmacontrol.nxtaddl6)); + printf("nxtaddh6 is 0x%x\n", val(mmcr, dmacontrol.nxtaddh6)); + printf("nxtaddl7 is 0x%x\n", val(mmcr, dmacontrol.nxtaddl7)); + printf("nxtaddh7 is 0x%x\n", val(mmcr, dmacontrol.nxtaddh7)); + printf("nxtttcl3 is 0x%x\n", val(mmcr, dmacontrol.nxtttcl3)); + printf("nxtttch3 is 0x%x\n", val(mmcr, dmacontrol.nxtttch3)); + printf("nxtttcl5 is 0x%x\n", val(mmcr, dmacontrol.nxtttcl5)); + printf("nxtttch5 is 0x%x\n", val(mmcr, dmacontrol.nxtttch5)); + printf("nxtttcl6 is 0x%x\n", val(mmcr, dmacontrol.nxtttcl6)); + printf("nxtttch6 is 0x%x\n", val(mmcr, dmacontrol.nxtttch6)); + printf("nxtttcl7 is 0x%x\n", val(mmcr, dmacontrol.nxtttcl7)); + printf("nxtttch7 is 0x%x\n", val(mmcr, dmacontrol.nxtttch7)); + + return 0; +} + +int map_mmcr(void) +{ + int fd_mem; + volatile uint8_t *mmcr; + unsigned long size=4096; + + if ((fd_mem = open("/dev/mem", O_RDWR)) < 0) { + perror("Can not open /dev/mem"); + exit(1); + } + + if (getpagesize() > size) { + size = getpagesize(); + } + + mmcr = mmap(0, size, PROT_WRITE | PROT_READ, MAP_SHARED, + fd_mem, (off_t) (0xFFFEF000)); + + if (mmcr == MAP_FAILED) { + perror("Error MMAP /dev/mem"); + exit(1); + } + + + print_mmcr((struct mmcr *)mmcr); +#if 0 + + printf("ElanSC520 uC Rev. ID : %04x\n",*(uint16_t *)mmcr); + printf("Am5x86 CPU Control : %04x\n",*(uint16_t *)(mmcr+2)); + printf("\n"); + printf("SDRAM Control : %04x\n",*(uint16_t *)(mmcr+0x10)); + printf("SDRAM Timing Control : %04x\n",*(uint16_t *)(mmcr+0x12)); + printf("SDRAM Bank Config : %04x\n",*(uint16_t *)(mmcr+0x14)); + printf("SDRAM Bank 0-3 Ending : %04x\n",*(uint16_t *)(mmcr+0x18)); + printf("ECC Control : %04x\n",*(uint16_t *)(mmcr+0x20)); + printf("ECC Status : %04x\n",*(uint16_t *)(mmcr+0x21)); + printf("ECC Check Bit Position: %04x\n",*(uint16_t *)(mmcr+0x22)); + printf("ECC Check Code Test : %04x\n",*(uint16_t *)(mmcr+0x23)); + printf("ECC Single Bit ErrAddr: %04x\n",*(uint16_t *)(mmcr+0x24)); + printf("ECC Multi Bit ErrAddr : %04x\n",*(uint16_t *)(mmcr+0x28)); + printf("\n"); + printf("SDRAM Buffer Control : %04x\n",*(uint16_t *)(mmcr+0x40)); + printf("\n"); + printf("BOOTCS Control : %04x\n",*(uint16_t *)(mmcr+0x50)); + printf("BOOTCS1 Control : %04x\n",*(uint16_t *)(mmcr+0x54)); + printf("BOOTCS2 Control : %04x\n",*(uint16_t *)(mmcr+0x56)); + printf("\n"); + + printf("Adr Decode Control : %02x\n",*(uint8_t *)(mmcr+0x80)); + printf("WrProt Violation Stat.: %04x\n",*(uint16_t *)(mmcr+0x82)); + printf("PAR 0 : %08x\n",*(uint32_t *)(mmcr+0x88)); + printf("PAR 1 : %08x\n",*(uint32_t *)(mmcr+0x8C)); + printf("PAR 2 : %08x\n",*(uint32_t *)(mmcr+0x90)); + printf("PAR 3 : %08x\n",*(uint32_t *)(mmcr+0x94)); + printf("PAR 4 : %08x\n",*(uint32_t *)(mmcr+0x98)); + printf("PAR 5 : %08x\n",*(uint32_t *)(mmcr+0x9C)); + printf("PAR 6 : %08x\n",*(uint32_t *)(mmcr+0xA0)); + printf("PAR 7 : %08x\n",*(uint32_t *)(mmcr+0xA4)); + printf("PAR 8 : %08x\n",*(uint32_t *)(mmcr+0xA8)); + printf("PAR 9 : %08x\n",*(uint32_t *)(mmcr+0xAC)); + printf("PAR 10 : %08x\n",*(uint32_t *)(mmcr+0xB0)); + printf("PAR 11 : %08x\n",*(uint32_t *)(mmcr+0xB4)); + printf("PAR 12 : %08x\n",*(uint32_t *)(mmcr+0xB8)); + printf("PAR 13 : %08x\n",*(uint32_t *)(mmcr+0xBC)); + printf("PAR 14 : %08x\n",*(uint32_t *)(mmcr+0xC0)); + printf("PAR 15 : %08x\n",*(uint32_t *)(mmcr+0xC4)); +#endif + munmap((void *) mmcr, size); + return 0; +} + +int main(int argc, char *argv[]) +{ + map_mmcr(); + return 0; +}