#ifndef HARDWARE_5400TP194_H_
#define HARDWARE_5400TP194_H_

#include "adfeda.h"
#include "can.h"
#include "cmm.h"
#include "fpga.h"
#include "gpio.h"
#include "i2c.h"
#include "ibex.h"
#include "memc.h"
#include "milstd.h"
#include "mscrub.h"
#include "owi.h"
#include "plic.h"
#include "pmm.h"
#include "spi.h"
#include "spw.h"
#include "stimer.h"
#include "timer.h"
#include "uart.h"
#include "wdt.h"

#define BA_DM       0x00000000
#define BA_IMEM     0x10000000
#define BA_DMEM     0x20000000
#define BA_GPIOA    0x30000000
#define BA_GPIOB    0x40000000
#define BA_PMM      0x50000000
#define BA_CMM      0x50010000
#define BA_PLIC     0x50020000
#define BA_MEMC     0x50030000
#define BA_WDT      0x50040000
#define BA_STIMER   0x50050000
#define BA_TIMER0   0x50060000
#define BA_TIMER1   0x50070000
#define BA_TIMER2   0x50080000
#define BA_UART0    0x50090000
#define BA_UART1    0x500A0000
#define BA_SPI0     0x500B0000
#define BA_SPI1     0x500C0000
#define BA_I2C0     0x500D0000
#define BA_I2C1     0x500E0000
#define BA_SPW0     0x500F0000
#define BA_SPW1     0x50100000
#define BA_MILSTD0  0x50110000
#define BA_MILSTD1  0x50120000
#define BA_CAN0     0x50130000
#define BA_CAN1     0x50140000
#define BA_OWI0     0x50150000
#define BA_OWI1     0x50160000
#define BA_MSCRUB   0x50170000
#define BA_FPGA     0x50180000
#define BA_ADFEDA   0x60000000
#define BA_EXTMEM   0x70000000

#define GPIOA   ((GpioRegs*)BA_GPIOA)
#define GPIOB   ((GpioRegs*)BA_GPIOB)
#define PMM     ((PmmRegs*)BA_PMM)
#define CMM     ((CmmRegs*)BA_CMM)
#define PLIC    ((PlicRegs*)BA_PLIC)
#define MEMC    ((MemcRegs*)BA_MEMC)
#define WDT     ((WdtRegs*)BA_WDT)
#define STIMER  ((StimerRegs*)BA_STIMER)
#define TIMER0  ((TimerRegs*)BA_TIMER0)
#define TIMER1  ((TimerRegs*)BA_TIMER1)
#define TIMER2  ((TimerRegs*)BA_TIMER2)
#define UART0   ((UartRegs*)BA_UART0)
#define UART1   ((UartRegs*)BA_UART1)
#define SPI0    ((SpiRegs*)BA_SPI0)
#define SPI1    ((SpiRegs*)BA_SPI1)
#define I2C0    ((I2cRegs*)BA_I2C0)
#define I2C1    ((I2cRegs*)BA_I2C1)
#define SPW0    ((SpwRegs*)BA_SPW0)
#define SPW1    ((SpwRegs*)BA_SPW1)
#define MILSTD0 ((MilstdRegs*)BA_MILSTD0)
#define MILSTD1 ((MilstdRegs*)BA_MILSTD1)
#define CAN0    ((CanRegs*)BA_CAN0)
#define CAN1    ((CanRegs*)BA_CAN1)
#define OWI0    ((OwiRegs*)BA_OWI0)
#define OWI1    ((OwiRegs*)BA_OWI1)
#define MSCRUB  ((MscrubRegs*)BA_MSCRUB)
#define FPGA    ((FpgaRegs*)BA_FPGA)
#define ADFEDA  ((AdfedaRegs*)BA_ADFEDA)
#define EXTMEM  ((volatile unsigned char*)BA_EXTMEM)

#endif /* HARDWARE_5400TP194_H_ */
