/******************************************************************************* | |
* (c) Copyright 2012 Microsemi SoC Products Group. All rights reserved. | |
* | |
* Smartfusion2 system configuration. This file is automatically generated | |
* by the Libero tools. It contains the Smartfusion2 system configuration that | |
* was selected during the hardware configuration flow. | |
* | |
*/ | |
#include "../../CMSIS/m2sxxx.h" | |
#include "../../CMSIS/sys_init_cfg_types.h" | |
#include "sys_config.h" | |
/*============================================================================== | |
* !!! WARNING !!! | |
*============================================================================== | |
* The project including this file must be linked so that the content of this | |
* file is located in internal eNVM at run time. The content of this file is | |
* used to configure the system prior to RAM content initialization. This means | |
* that the content of the data structures below will be used before the copy | |
* from LMA to VMA takes place. The LMA and VMA locations of the content of this | |
* file must be identical for the system to be seamlessly configured as part of | |
* the CMSIS boot process. | |
*/ | |
/*============================================================================== | |
* Clock configuration | |
*/ | |
/* No configuration data structure required. */ | |
/*============================================================================== | |
* Memory remapping configuration | |
*/ | |
/* TBD. */ | |
/*============================================================================== | |
* MDDR configuration | |
*/ | |
#if MSS_SYS_MDDR_CONFIG_BY_CORTEX | |
#include "sys_config_mddr_define.h" | |
MDDR_TypeDef * const g_m2s_mddr_addr = (MDDR_TypeDef *)0x40020800; | |
const ddr_subsys_cfg_t g_m2s_mddr_subsys_config = | |
{ | |
/*--------------------------------------------------------------------- | |
* DDR Controller registers. | |
* All registers are 16-bit wide unless mentioned beside the definition. | |
*/ | |
{ | |
MDDR_DDRC_DYN_SOFT_RESET_CR, | |
MDDR_DDRC_RESERVED0, | |
MDDR_DDRC_DYN_REFRESH_1_CR, | |
MDDR_DDRC_DYN_REFRESH_2_CR, | |
MDDR_DDRC_DYN_POWERDOWN_CR, | |
MDDR_DDRC_DYN_DEBUG_CR, | |
MDDR_DDRC_MODE_CR, | |
MDDR_DDRC_ADDR_MAP_BANK_CR, | |
MDDR_DDRC_ECC_DATA_MASK_CR, | |
MDDR_DDRC_ADDR_MAP_COL_1_CR, | |
MDDR_DDRC_ADDR_MAP_COL_2_CR, | |
MDDR_DDRC_ADDR_MAP_ROW_1_CR, | |
MDDR_DDRC_ADDR_MAP_ROW_2_CR, | |
MDDR_DDRC_INIT_1_CR, | |
MDDR_DDRC_CKE_RSTN_CYCLES_1_CR, | |
MDDR_DDRC_CKE_RSTN_CYCLES_2_CR, | |
MDDR_DDRC_INIT_MR_CR, | |
MDDR_DDRC_INIT_EMR_CR, | |
MDDR_DDRC_INIT_EMR2_CR, | |
MDDR_DDRC_INIT_EMR3_CR, | |
MDDR_DDRC_DRAM_BANK_TIMING_PARAM_CR, | |
MDDR_DDRC_DRAM_RD_WR_LATENCY_CR, | |
MDDR_DDRC_DRAM_RD_WR_PRE_CR, | |
MDDR_DDRC_DRAM_MR_TIMING_PARAM_CR, | |
MDDR_DDRC_DRAM_RAS_TIMING_CR, | |
MDDR_DDRC_DRAM_RD_WR_TRNARND_TIME_CR, | |
MDDR_DDRC_DRAM_T_PD_CR, | |
MDDR_DDRC_DRAM_BANK_ACT_TIMING_CR, | |
MDDR_DDRC_ODT_PARAM_1_CR, | |
MDDR_DDRC_ODT_PARAM_2_CR, | |
MDDR_DDRC_ADDR_MAP_COL_3_CR, | |
MDDR_DDRC_MODE_REG_RD_WR_CR, | |
MDDR_DDRC_MODE_REG_DATA_CR, | |
MDDR_DDRC_PWR_SAVE_1_CR, | |
MDDR_DDRC_PWR_SAVE_2_CR, | |
MDDR_DDRC_ZQ_LONG_TIME_CR, | |
MDDR_DDRC_ZQ_SHORT_TIME_CR, | |
MDDR_DDRC_ZQ_SHORT_INT_REFRESH_MARGIN_1_CR, | |
MDDR_DDRC_ZQ_SHORT_INT_REFRESH_MARGIN_2_CR, | |
MDDR_DDRC_PERF_PARAM_1_CR, | |
MDDR_DDRC_HPR_QUEUE_PARAM_1_CR, | |
MDDR_DDRC_HPR_QUEUE_PARAM_2_CR, | |
MDDR_DDRC_LPR_QUEUE_PARAM_1_CR, | |
MDDR_DDRC_LPR_QUEUE_PARAM_2_CR, | |
MDDR_DDRC_WR_QUEUE_PARAM_CR, | |
MDDR_DDRC_PERF_PARAM_2_CR, | |
MDDR_DDRC_PERF_PARAM_3_CR, | |
MDDR_DDRC_DFI_RDDATA_EN_CR, | |
MDDR_DDRC_DFI_MIN_CTRLUPD_TIMING_CR, | |
MDDR_DDRC_DFI_MAX_CTRLUPD_TIMING_CR, | |
MDDR_DDRC_DFI_WR_LVL_CONTROL_1_CR, | |
MDDR_DDRC_DFI_WR_LVL_CONTROL_2_CR, | |
MDDR_DDRC_DFI_RD_LVL_CONTROL_1_CR, | |
MDDR_DDRC_DFI_RD_LVL_CONTROL_2_CR, | |
MDDR_DDRC_DFI_CTRLUPD_TIME_INTERVAL_CR, | |
MDDR_DDRC_DYN_SOFT_RESET_ALIAS_CR, | |
MDDR_DDRC_AXI_FABRIC_PRI_ID_CR, | |
}, | |
/*--------------------------------------------------------------------- | |
* DDR PHY configuration registers | |
*/ | |
{ | |
MDDR_PHY_LOOPBACK_TEST_CR, | |
MDDR_PHY_BOARD_LOOPBACK_CR, | |
MDDR_PHY_CTRL_SLAVE_RATIO_CR, | |
MDDR_PHY_CTRL_SLAVE_FORCE_CR, | |
MDDR_PHY_CTRL_SLAVE_DELAY_CR, | |
MDDR_PHY_DATA_SLICE_IN_USE_CR, | |
MDDR_PHY_LVL_NUM_OF_DQ0_CR, | |
MDDR_PHY_DQ_OFFSET_1_CR, | |
MDDR_PHY_DQ_OFFSET_2_CR, | |
MDDR_PHY_DQ_OFFSET_3_CR, | |
MDDR_PHY_DIS_CALIB_RST_CR, | |
MDDR_PHY_DLL_LOCK_DIFF_CR, | |
MDDR_PHY_FIFO_WE_IN_DELAY_1_CR, | |
MDDR_PHY_FIFO_WE_IN_DELAY_2_CR, | |
MDDR_PHY_FIFO_WE_IN_DELAY_3_CR, | |
MDDR_PHY_FIFO_WE_IN_FORCE_CR, | |
MDDR_PHY_FIFO_WE_SLAVE_RATIO_1_CR, | |
MDDR_PHY_FIFO_WE_SLAVE_RATIO_2_CR, | |
MDDR_PHY_FIFO_WE_SLAVE_RATIO_3_CR, | |
MDDR_PHY_FIFO_WE_SLAVE_RATIO_4_CR, | |
MDDR_PHY_GATELVL_INIT_MODE_CR, | |
MDDR_PHY_GATELVL_INIT_RATIO_1_CR, | |
MDDR_PHY_GATELVL_INIT_RATIO_2_CR, | |
MDDR_PHY_GATELVL_INIT_RATIO_3_CR, | |
MDDR_PHY_GATELVL_INIT_RATIO_4_CR, | |
MDDR_PHY_LOCAL_ODT_CR, | |
MDDR_PHY_INVERT_CLKOUT_CR, | |
MDDR_PHY_RD_DQS_SLAVE_DELAY_1_CR, | |
MDDR_PHY_RD_DQS_SLAVE_DELAY_2_CR, | |
MDDR_PHY_RD_DQS_SLAVE_DELAY_3_CR, | |
MDDR_PHY_RD_DQS_SLAVE_FORCE_CR, | |
MDDR_PHY_RD_DQS_SLAVE_RATIO_1_CR, | |
MDDR_PHY_RD_DQS_SLAVE_RATIO_2_CR, | |
MDDR_PHY_RD_DQS_SLAVE_RATIO_3_CR, | |
MDDR_PHY_RD_DQS_SLAVE_RATIO_4_CR, | |
MDDR_PHY_WR_DQS_SLAVE_DELAY_1_CR, | |
MDDR_PHY_WR_DQS_SLAVE_DELAY_2_CR, | |
MDDR_PHY_WR_DQS_SLAVE_DELAY_3_CR, | |
MDDR_PHY_WR_DQS_SLAVE_FORCE_CR, | |
MDDR_PHY_WR_DQS_SLAVE_RATIO_1_CR, | |
MDDR_PHY_WR_DQS_SLAVE_RATIO_2_CR, | |
MDDR_PHY_WR_DQS_SLAVE_RATIO_3_CR, | |
MDDR_PHY_WR_DQS_SLAVE_RATIO_4_CR, | |
MDDR_PHY_WR_DATA_SLAVE_DELAY_1_CR, | |
MDDR_PHY_WR_DATA_SLAVE_DELAY_2_CR, | |
MDDR_PHY_WR_DATA_SLAVE_DELAY_3_CR, | |
MDDR_PHY_WR_DATA_SLAVE_FORCE_CR, | |
MDDR_PHY_WR_DATA_SLAVE_RATIO_1_CR, | |
MDDR_PHY_WR_DATA_SLAVE_RATIO_2_CR, | |
MDDR_PHY_WR_DATA_SLAVE_RATIO_3_CR, | |
MDDR_PHY_WR_DATA_SLAVE_RATIO_4_CR, | |
MDDR_PHY_WRLVL_INIT_MODE_CR, | |
MDDR_PHY_WRLVL_INIT_RATIO_1_CR, | |
MDDR_PHY_WRLVL_INIT_RATIO_2_CR, | |
MDDR_PHY_WRLVL_INIT_RATIO_3_CR, | |
MDDR_PHY_WRLVL_INIT_RATIO_4_CR, | |
MDDR_PHY_WR_RD_RL_CR, | |
MDDR_PHY_RDC_FIFO_RST_ERR_CNT_CLR_CR, | |
MDDR_PHY_RDC_WE_TO_RE_DELAY_CR, | |
MDDR_PHY_USE_FIXED_RE_CR, | |
MDDR_PHY_USE_RANK0_DELAYS_CR, | |
MDDR_PHY_USE_LVL_TRNG_LEVEL_CR, | |
MDDR_PHY_DYN_CONFIG_CR, | |
MDDR_PHY_RD_WR_GATE_LVL_CR, | |
MDDR_PHY_DYN_RESET_CR | |
}, | |
/*--------------------------------------------------------------------- | |
* FIC-64 registers | |
* These registers are 16-bit wide and 32-bit aligned. | |
*/ | |
{ | |
MDDR_DDR_FIC_NB_ADDR_CR, | |
MDDR_DDR_FIC_NBRWB_SIZE_CR, | |
MDDR_DDR_FIC_WB_TIMEOUT_CR, | |
MDDR_DDR_FIC_HPD_SW_RW_EN_CR, | |
MDDR_DDR_FIC_HPD_SW_RW_INVAL_CR, | |
MDDR_DDR_FIC_SW_WR_ERCLR_CR, | |
MDDR_DDR_FIC_ERR_INT_ENABLE_CR, | |
MDDR_DDR_FIC_NUM_AHB_MASTERS_CR, | |
MDDR_DDR_FIC_LOCK_TIMEOUTVAL_1_CR, | |
MDDR_DDR_FIC_LOCK_TIMEOUTVAL_2_CR, | |
MDDR_DDR_FIC_LOCK_TIMEOUT_EN_CR | |
} | |
}; | |
#endif | |
/*============================================================================== | |
* FDDR configuration | |
*/ | |
#if MSS_SYS_FDDR_CONFIG_BY_CORTEX | |
#include "sys_config_fddr_define.h" | |
FDDR_TypeDef * const g_m2s_fddr_addr = (FDDR_TypeDef *)0x40021000; | |
const fddr_sysreg_t g_m2s_fddr_sysreg_subsys_config = | |
{ | |
0x0001u, /* PLL_CONFIG_LOW_1 */ | |
0x0002u, /* PLL_CONFIG_LOW_2 */ | |
0x0003u, /* PLL_CONFIG_HIGH */ | |
0x0004u, /* FACC_CLK_EN */ | |
0x0005u, /* FACC_MUX_CONFIG */ | |
0x0006u, /* FACC_DIVISOR_RATIO */ | |
0x0007u, /* PLL_DELAY_LINE_SEL */ | |
0x0008u, /* SOFT_RESET */ | |
0x0009u, /* IO_CALIB */ | |
0x000Au, /* INTERRUPT_ENABLE */ | |
0x000Bu, /* AXI_AHB_MODE_SEL */ | |
0x000Cu /* PHY_SELF_REF_EN */ | |
}; | |
const ddr_subsys_cfg_t g_m2s_fddr_subsys_config = | |
{ | |
/*--------------------------------------------------------------------- | |
* DDR Controller registers. | |
* All registers are 16-bit wide unless mentioned beside the definition. | |
*/ | |
{ | |
FDDR_DDRC_DYN_SOFT_RESET_CR, | |
FDDR_DDRC_RESERVED0, | |
FDDR_DDRC_DYN_REFRESH_1_CR, | |
FDDR_DDRC_DYN_REFRESH_2_CR, | |
FDDR_DDRC_DYN_POWERDOWN_CR, | |
FDDR_DDRC_DYN_DEBUG_CR, | |
FDDR_DDRC_MODE_CR, | |
FDDR_DDRC_ADDR_MAP_BANK_CR, | |
FDDR_DDRC_ECC_DATA_MASK_CR, | |
FDDR_DDRC_ADDR_MAP_COL_1_CR, | |
FDDR_DDRC_ADDR_MAP_COL_2_CR, | |
FDDR_DDRC_ADDR_MAP_ROW_1_CR, | |
FDDR_DDRC_ADDR_MAP_ROW_2_CR, | |
FDDR_DDRC_INIT_1_CR, | |
FDDR_DDRC_CKE_RSTN_CYCLES_1_CR, | |
FDDR_DDRC_CKE_RSTN_CYCLES_2_CR, | |
FDDR_DDRC_INIT_MR_CR, | |
FDDR_DDRC_INIT_EMR_CR, | |
FDDR_DDRC_INIT_EMR2_CR, | |
FDDR_DDRC_INIT_EMR3_CR, | |
FDDR_DDRC_DRAM_BANK_TIMING_PARAM_CR, | |
FDDR_DDRC_DRAM_RD_WR_LATENCY_CR, | |
FDDR_DDRC_DRAM_RD_WR_PRE_CR, | |
FDDR_DDRC_DRAM_MR_TIMING_PARAM_CR, | |
FDDR_DDRC_DRAM_RAS_TIMING_CR, | |
FDDR_DDRC_DRAM_RD_WR_TRNARND_TIME_CR, | |
FDDR_DDRC_DRAM_T_PD_CR, | |
FDDR_DDRC_DRAM_BANK_ACT_TIMING_CR, | |
FDDR_DDRC_ODT_PARAM_1_CR, | |
FDDR_DDRC_ODT_PARAM_2_CR, | |
FDDR_DDRC_ADDR_MAP_COL_3_CR, | |
FDDR_DDRC_MODE_REG_RD_WR_CR, | |
FDDR_DDRC_MODE_REG_DATA_CR, | |
FDDR_DDRC_PWR_SAVE_1_CR, | |
FDDR_DDRC_PWR_SAVE_2_CR, | |
FDDR_DDRC_ZQ_LONG_TIME_CR, | |
FDDR_DDRC_ZQ_SHORT_TIME_CR, | |
FDDR_DDRC_ZQ_SHORT_INT_REFRESH_MARGIN_1_CR, | |
FDDR_DDRC_ZQ_SHORT_INT_REFRESH_MARGIN_2_CR, | |
FDDR_DDRC_PERF_PARAM_1_CR, | |
FDDR_DDRC_HPR_QUEUE_PARAM_1_CR, | |
FDDR_DDRC_HPR_QUEUE_PARAM_2_CR, | |
FDDR_DDRC_LPR_QUEUE_PARAM_1_CR, | |
FDDR_DDRC_LPR_QUEUE_PARAM_2_CR, | |
FDDR_DDRC_WR_QUEUE_PARAM_CR, | |
FDDR_DDRC_PERF_PARAM_2_CR, | |
FDDR_DDRC_PERF_PARAM_3_CR, | |
FDDR_DDRC_DFI_RDDATA_EN_CR, | |
FDDR_DDRC_DFI_MIN_CTRLUPD_TIMING_CR, | |
FDDR_DDRC_DFI_MAX_CTRLUPD_TIMING_CR, | |
FDDR_DDRC_DFI_WR_LVL_CONTROL_1_CR, | |
FDDR_DDRC_DFI_WR_LVL_CONTROL_2_CR, | |
FDDR_DDRC_DFI_RD_LVL_CONTROL_1_CR, | |
FDDR_DDRC_DFI_RD_LVL_CONTROL_2_CR, | |
FDDR_DDRC_DFI_CTRLUPD_TIME_INTERVAL_CR, | |
FDDR_DDRC_DYN_SOFT_RESET_ALIAS_CR, | |
FDDR_DDRC_AXI_FABRIC_PRI_ID_CR | |
}, | |
/*--------------------------------------------------------------------- | |
* DDR PHY configuration registers | |
*/ | |
{ | |
FDDR_PHY_LOOPBACK_TEST_CR, | |
FDDR_PHY_BOARD_LOOPBACK_CR, | |
FDDR_PHY_CTRL_SLAVE_RATIO_CR, | |
FDDR_PHY_CTRL_SLAVE_FORCE_CR, | |
FDDR_PHY_CTRL_SLAVE_DELAY_CR, | |
FDDR_PHY_DATA_SLICE_IN_USE_CR, | |
FDDR_PHY_LVL_NUM_OF_DQ0_CR, | |
FDDR_PHY_DQ_OFFSET_1_CR, | |
FDDR_PHY_DQ_OFFSET_2_CR, | |
FDDR_PHY_DQ_OFFSET_3_CR, | |
FDDR_PHY_DIS_CALIB_RST_CR, | |
FDDR_PHY_DLL_LOCK_DIFF_CR, | |
FDDR_PHY_FIFO_WE_IN_DELAY_1_CR, | |
FDDR_PHY_FIFO_WE_IN_DELAY_2_CR, | |
FDDR_PHY_FIFO_WE_IN_DELAY_3_CR, | |
FDDR_PHY_FIFO_WE_IN_FORCE_CR, | |
FDDR_PHY_FIFO_WE_SLAVE_RATIO_1_CR, | |
FDDR_PHY_FIFO_WE_SLAVE_RATIO_2_CR, | |
FDDR_PHY_FIFO_WE_SLAVE_RATIO_3_CR, | |
FDDR_PHY_FIFO_WE_SLAVE_RATIO_4_CR, | |
FDDR_PHY_GATELVL_INIT_MODE_CR, | |
FDDR_PHY_GATELVL_INIT_RATIO_1_CR, | |
FDDR_PHY_GATELVL_INIT_RATIO_2_CR, | |
FDDR_PHY_GATELVL_INIT_RATIO_3_CR, | |
FDDR_PHY_GATELVL_INIT_RATIO_4_CR, | |
FDDR_PHY_LOCAL_ODT_CR, | |
FDDR_PHY_INVERT_CLKOUT_CR, | |
FDDR_PHY_RD_DQS_SLAVE_DELAY_1_CR, | |
FDDR_PHY_RD_DQS_SLAVE_DELAY_2_CR, | |
FDDR_PHY_RD_DQS_SLAVE_DELAY_3_CR, | |
FDDR_PHY_RD_DQS_SLAVE_FORCE_CR, | |
FDDR_PHY_RD_DQS_SLAVE_RATIO_1_CR, | |
FDDR_PHY_RD_DQS_SLAVE_RATIO_2_CR, | |
FDDR_PHY_RD_DQS_SLAVE_RATIO_3_CR, | |
FDDR_PHY_RD_DQS_SLAVE_RATIO_4_CR, | |
FDDR_PHY_WR_DQS_SLAVE_DELAY_1_CR, | |
FDDR_PHY_WR_DQS_SLAVE_DELAY_2_CR, | |
FDDR_PHY_WR_DQS_SLAVE_DELAY_3_CR, | |
FDDR_PHY_WR_DQS_SLAVE_FORCE_CR, | |
FDDR_PHY_WR_DQS_SLAVE_RATIO_1_CR, | |
FDDR_PHY_WR_DQS_SLAVE_RATIO_2_CR, | |
FDDR_PHY_WR_DQS_SLAVE_RATIO_3_CR, | |
FDDR_PHY_WR_DQS_SLAVE_RATIO_4_CR, | |
FDDR_PHY_WR_DATA_SLAVE_DELAY_1_CR, | |
FDDR_PHY_WR_DATA_SLAVE_DELAY_2_CR, | |
FDDR_PHY_WR_DATA_SLAVE_DELAY_3_CR, | |
FDDR_PHY_WR_DATA_SLAVE_FORCE_CR, | |
FDDR_PHY_WR_DATA_SLAVE_RATIO_1_CR, | |
FDDR_PHY_WR_DATA_SLAVE_RATIO_2_CR, | |
FDDR_PHY_WR_DATA_SLAVE_RATIO_3_CR, | |
FDDR_PHY_WR_DATA_SLAVE_RATIO_4_CR, | |
FDDR_PHY_WRLVL_INIT_MODE_CR, | |
FDDR_PHY_WRLVL_INIT_RATIO_1_CR, | |
FDDR_PHY_WRLVL_INIT_RATIO_2_CR, | |
FDDR_PHY_WRLVL_INIT_RATIO_3_CR, | |
FDDR_PHY_WRLVL_INIT_RATIO_4_CR, | |
FDDR_PHY_WR_RD_RL_CR, | |
FDDR_PHY_RDC_FIFO_RST_ERR_CNT_CLR_CR, | |
FDDR_PHY_RDC_WE_TO_RE_DELAY_CR, | |
FDDR_PHY_USE_FIXED_RE_CR, | |
FDDR_PHY_USE_RANK0_DELAYS_CR, | |
FDDR_PHY_USE_LVL_TRNG_LEVEL_CR, | |
FDDR_PHY_DYN_CONFIG_CR, | |
FDDR_PHY_RD_WR_GATE_LVL_CR, | |
FDDR_PHY_DYN_RESET_CR, | |
}, | |
/*--------------------------------------------------------------------- | |
* FIC-64 registers | |
* These registers are 16-bit wide and 32-bit aligned. | |
*/ | |
{ | |
FDDR_DDR_FIC_NB_ADDR_CR, | |
FDDR_DDR_FIC_NBRWB_SIZE_CR, | |
FDDR_DDR_FIC_WB_TIMEOUT_CR, | |
FDDR_DDR_FIC_HPD_SW_RW_EN_CR, | |
FDDR_DDR_FIC_HPD_SW_RW_INVAL_CR, | |
FDDR_DDR_FIC_SW_WR_ERCLR_CR, | |
FDDR_DDR_FIC_ERR_INT_ENABLE_CR, | |
FDDR_DDR_FIC_NUM_AHB_MASTERS_CR, | |
FDDR_DDR_FIC_LOCK_TIMEOUTVAL_1_CR, | |
FDDR_DDR_FIC_LOCK_TIMEOUTVAL_2_CR, | |
FDDR_DDR_FIC_LOCK_TIMEOUT_EN_CR | |
} | |
}; | |
#endif | |