diff options
Diffstat (limited to 'c/src/lib/libbsp/sparc/leon3/include/amba.h')
-rw-r--r-- | c/src/lib/libbsp/sparc/leon3/include/amba.h | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/sparc/leon3/include/amba.h b/c/src/lib/libbsp/sparc/leon3/include/amba.h new file mode 100644 index 0000000000..a9d4bef59a --- /dev/null +++ b/c/src/lib/libbsp/sparc/leon3/include/amba.h @@ -0,0 +1,84 @@ +/* + * AMBA Plag & Play Bus Driver Macros + * + * Macros used for AMBA Plug & Play bus scanning + * + * COPYRIGHT (c) 2004. + * Gaisler Research + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + * + * $Id$ + */ + +#define LEON3_IO_AREA 0xfff00000 +#define LEON3_CONF_AREA 0xff000 +#define LEON3_AHB_SLAVE_CONF_AREA (1 << 11) + +#define LEON3_AHB_CONF_WORDS 8 +#define LEON3_APB_CONF_WORDS 2 +#define LEON3_AHB_MASTERS 8 +#define LEON3_AHB_SLAVES 8 +#define LEON3_APB_SLAVES 16 +#define LEON3_APBUARTS 8 + +/* Vendor codes */ +#define VENDOR_GAISLER 1 +#define VENDOR_PENDER 2 +#define VENDOR_ESA 4 +#define VENDOR_OPENCORES 8 + +/* Gaisler Research device id's */ +#define GAISLER_LEON3 0x03 +#define GAISLER_LEON3DSU 0x04 +#define GAISLER_ETHAHB 0x05 +#define GAISLER_APBMST 0x06 +#define GAISLER_AHBUART 0x07 +#define GAISLER_SRCTRL 0x08 +#define GAISLER_SDCTRL 0x09 +#define GAISLER_APBUART 0x0C +#define GAISLER_IRQMP 0x0D +#define GAISLER_AHBRAM 0x0E +#define GAISLER_GPTIMER 0x11 +#define GAISLER_PCITRG 0x12 +#define GAISLER_PCISBRG 0x13 +#define GAISLER_PCIFBRG 0x14 +#define GAISLER_PCITRACE 0x15 +#define GAISLER_DMACTRL 0x16 +#define GAISLER_PIOPORT 0x1A + +/* European Space Agency device id's */ +#define ESA_LEON2 0x2 +#define ESA_MCTRL 0xF + +/* Opencores device id's */ +#define OPENCORES_PCIBR 0x4 +#define OPENCORES_ETHMAC 0x5 + + +/* + * + * Macros for manipulating Configuration registers + * + */ + + +#define amba_get_confword(tab, index, word) (*((tab).addr[(index)]+(word))) + +#define amba_vendor(x) (((x) >> 24) & 0xff) + +#define amba_device(x) (((x) >> 12) & 0xfff) + +#define amba_ahb_get_membar(tab, index, nr) (*((tab).addr[(index)]+4+(nr))) + +#define amba_apb_get_membar(tab, index) (*((tab).addr[(index)]+1)) + +#define amba_membar_start(mbar) (((mbar) & 0xfff00000) & (((mbar) & 0xfff0) << 16)) + +#define amba_iobar_start(base, iobar) ((base) | ((((iobar) & 0xfff00000)>>12) & (((iobar) & 0xfff0)<<4)) ) + +#define amba_irq(conf) ((conf) & 0xf) + + |