diff options
author | Bert Lange <b.lange@hzdr.de> | 2015-04-15 13:54:39 +0200 |
---|---|---|
committer | Bert Lange <b.lange@hzdr.de> | 2015-04-15 13:54:39 +0200 |
commit | 8c5a743259480ebd0cfdbb17fbde8584e34b2aa4 (patch) | |
tree | 794887f475d6abb4bdde21c94105f7fcdde1bdd4 /mig_test/software/ambainfo.c | |
parent | a1c964908b51599bf624bd2d253419c7e629f195 (diff) | |
download | zpu-8c5a743259480ebd0cfdbb17fbde8584e34b2aa4.zip zpu-8c5a743259480ebd0cfdbb17fbde8584e34b2aa4.tar.gz |
clean up
Diffstat (limited to 'mig_test/software/ambainfo.c')
-rw-r--r-- | mig_test/software/ambainfo.c | 216 |
1 files changed, 0 insertions, 216 deletions
diff --git a/mig_test/software/ambainfo.c b/mig_test/software/ambainfo.c deleted file mode 100644 index 83813b0..0000000 --- a/mig_test/software/ambainfo.c +++ /dev/null @@ -1,216 +0,0 @@ -/* - * $HeadURL: https://svn.fzd.de/repo/concast/FWF_Projects/FWKE/hw_sp605/bsp_zpuahb/software/ambainfo.c $ - * $Date$ - * $Author$ - * $Revision$ - */ - -#include <types.h> - -
-/*
- print some spaces to make output alignment columnwise
-*/
-void fill(uint8_t length, uint8_t fillupto)
-{
- while (length < fillupto)
- {
- putchar(' ');
- length++;
- }
-} - - - -//////////////////////////////////////////////////////////// -// print vendor -void print_vendor_device( uint8_t vendor, uint8_t device) -{ - switch( vendor) - { - case 0x01: putstr("gaisler "); - switch( device) - { - case 0x06: putstr("AHB/APB Bridge"); break; - case 0x0c: putstr("Generic UART"); break; - case 0x0f: putstr("Dual-port AHB SRAM module"); break; - case 0x11: putstr("Modular Timer Unit"); break; - case 0x1a: putstr("General Purpose I/O port"); break; - case 0x1d: putstr("GR 10/100 Mbit Ethernet MAC"); break; - case 0x28: putstr("AMBA Wrapper for OC I2C-master");break; - case 0x45: putstr("SPI Memory Controller"); break; - case 0x61: putstr("VGA controller"); break; - case 0x87: putstr("General Purpose Register"); break; - default : putstr("unknown device"); break; - } - break; - case 0x04: putstr("ESA "); - switch( device) - { - case 0x0f: putstr("Leon2 Memory Controller"); break; - default : putstr("unknown device"); break; - } - break; - case 0x55: putstr("HZDR "); - switch( device) - { - case 0x01: putstr("ZPU AHB Wrapper"); break; - case 0x02: putstr("ZPU Memory wrapper"); break; - case 0x03: putstr("DCM phase shift control"); break; - case 0x04: putstr("debug console"); break; - case 0x05: putstr("trigger generator"); break; - case 0x06: putstr("beam position monitor"); break; - case 0x07: putstr("debug buffer control"); break; - case 0x08: putstr("EA-DOGS display driver"); break; - case 0x09: putstr("debug tracer memory"); break; - case 0x0a: putstr("differential current monitor"); break; - default : putstr("unknown device"); break; - } - break; - default : putstr("vendor? "); break; - } -} - -//////////////////////////////////////////////////////////// -// apb info -void apb_info( uint32_t* addr, uint8_t verbose) -{ - // identification register - uint16_t vendor; - uint16_t device; - uint16_t version; - uint16_t irq; - uint32_t dev_addr; - - uint32_t* config; - uint32_t* idreg_addr; - uint32_t idreg_word; - uint32_t* bar_addr; - uint32_t bar_word; - - uint32_t apb_addr; - uint32_t apb_unit; - - config = addr; - apb_addr = (*config & 0xfff00000); // get apb address - - // we can have up to 512 slaves, but we scan only 16 - // to avoid double scans at the moment - for (apb_unit = 0; apb_unit < 16; apb_unit++) - { - idreg_addr = (uint32_t*) (apb_addr | 0x000ff000 | (apb_unit << 3)); - idreg_word = *idreg_addr; - bar_addr = idreg_addr + 1; - bar_word = *bar_addr; - - dev_addr = apb_addr | ((bar_word & 0xfff00000) >> 12); - vendor = (idreg_word >> 24) & 0xff; - device = (idreg_word >> 12) & 0xfff; - version = (idreg_word >> 5) & 0xf; - irq = (idreg_word >> 0) & 0x1f; - - if (vendor > 0) - { - putstr(" apbslv"); - fill( putint( apb_unit), 4); - - // print idreg word - putstr("vend 0x"); fill( puthex( 8, vendor), 4); - putstr("dev 0x"); fill( puthex(16, device), 6); - putstr("ver "); fill( putint( version), 4); - putstr("irq "); fill( putint( irq), 4); - putstr("addr 0x"); fill( puthex(32, dev_addr), 10); - if (verbose) - print_vendor_device( vendor, device); - putchar('\n'); - } - } -} - -void ahb_info( uint8_t verbose) -{ - uint16_t vendor; - uint16_t device; - uint16_t version; - uint16_t irq; - - uint32_t address; - uint16_t cp; - uint16_t mask; - uint16_t type; - - uint32_t config_word; - uint32_t bar; - uint32_t ahb_unit; - - uint8_t i; - - uint32_t* config_addr = (uint32_t*) 0xfffff000; - uint32_t* bar_addr = (uint32_t*) 0xfffff010; - - - // check for 64 master and 64 slaves - for (ahb_unit = 0; ahb_unit < 128; ahb_unit++) - { - config_addr = (uint32_t*) (0xfffff000 + (ahb_unit << 5)); - bar_addr = (uint32_t*) config_addr + 4; - - config_word = *config_addr; - - vendor = (config_word >> 24) & 0xff; - device = (config_word >> 12) & 0xfff; - version = (config_word >> 5) & 0xf; - irq = (config_word >> 0) & 0x1f; - - if (vendor > 0) - { - if (ahb_unit < 64) - { - putstr("ahbmst"); - fill( putint( ahb_unit), 6); - } - else - { - putstr("ahbslv"); - fill( putint( ahb_unit - 64), 6); - } - - // print config word - putstr("vend 0x"); fill( puthex( 8, vendor), 4); - putstr("dev 0x"); fill( puthex(16, device), 6); - putstr("ver "); fill( putint( version), 4); - putstr("irq "); fill( putint( irq), 4); - putstr("addr 0x"); fill( puthex(32, *bar_addr & 0xfff00000), 10); - if (verbose) - print_vendor_device( vendor, device); - putchar('\n'); - - if ((vendor == 1) && (device == 6)) - apb_info( bar_addr, verbose); - - /* - // check all 4 bank address registers - for (i = 0; i < 4; i++) - { - bar = *bar_addr; - - address = bar & 0xfff0000; - cp = (bar >> 16) & 0xf; - mask = (bar >> 4) & 0xfff; - type = (bar >> 0) & 0xf; - - // print bank address register - putstr("address 0x"); fill( puthex( 32, address), 6); - putstr("c/p 0x"); fill( puthex( 8, cp), 6); - putstr("mask 0x"); fill( puthex( 16, mask), 6); - putstr("type 0x"); fill( puthex( 8, type), 6); - putchar('\n'); - - bar_addr++; - } // for i - */ - - } // vendor > 0 - } // for ahb_unit -} - |