8 #ifndef _HPM_FEMC_DRV_H
9 #define _HPM_FEMC_DRV_H
10 #include "hpm_femc_regs.h"
20 #define FEMC_SDRAM_MAX_BURST_LENGTH_IN_BYTE (8UL)
22 #define FEMC_SDRAM_COLUMN_ADDR_12_BITS (0U)
23 #define FEMC_SDRAM_COLUMN_ADDR_11_BITS (1U)
24 #define FEMC_SDRAM_COLUMN_ADDR_10_BITS (2U)
25 #define FEMC_SDRAM_COLUMN_ADDR_9_BITS (3U)
26 #define FEMC_SDRAM_COLUMN_ADDR_8_BITS (4U)
28 #define FEMC_SDRAM_CAS_LATENCY_1 (1U)
29 #define FEMC_SDRAM_CAS_LATENCY_2 (2U)
30 #define FEMC_SDRAM_CAS_LATENCY_3 (3U)
32 #define FEMC_SDRAM_BANK_NUM_4 (0U)
33 #define FEMC_SDRAM_BANK_NUM_2 (1U)
35 #define FEMC_SDRAM_CS0 (0U)
36 #define FEMC_SDRAM_CS1 (1U)
38 #define FEMC_SDRAM_PORT_SIZE_8_BITS (0U)
39 #define FEMC_SDRAM_PORT_SIZE_16_BITS (1U)
40 #define FEMC_SDRAM_PORT_SIZE_32_BITS (2U)
42 #define FEMC_AXI_Q_COUNT (2U)
43 #define FEMC_AXI_Q_A (0U)
44 #define FEMC_AXI_Q_B (1U)
46 #define FEMC_DQS_INTERNAL (0U)
47 #define FEMC_DQS_FROM_PAD (1U)
49 #define FEMC_CMD_KEY FEMC_IPCMD_KEY_SET(0xA55A)
50 #define FEMC_CMD_WRITE_FLAG (1UL << 31)
51 #define FEMC_CMD_SDRAM_READ (0x8U)
52 #define FEMC_CMD_SDRAM_WRITE (FEMC_CMD_WRITE_FLAG | 0x9U)
53 #define FEMC_CMD_SDRAM_MODE_SET (FEMC_CMD_WRITE_FLAG | 0xAU)
54 #define FEMC_CMD_SDRAM_ACTIVE (0xBU)
55 #define FEMC_CMD_SDRAM_AUTO_REFRESH (0xCU)
56 #define FEMC_CMD_SDRAM_SELF_REFRESH (0xDU)
57 #define FEMC_CMD_SDRAM_PRECHARGE (0xEU)
58 #define FEMC_CMD_SDRAM_PRECHARGE_ALL (0xFU)
61 #define FEMC_SRAM_AD_MUX_MODE (0U)
62 #define FEMC_SRAM_AD_NONMUX_MODE (3U)
65 #define FEMC_SRAM_ADV_HOLD_HIGH (0U)
66 #define FEMC_SRAM_ADV_HOLD_LOW (1U)
69 #define FEMC_SRAM_ADV_ACTIVE_LOW (0U)
70 #define FEMC_SRAM_ADV_ACTIVE_HIGH (1U)
73 #define FEMC_SRAM_PORT_SIZE_8_BITS (0U)
74 #define FEMC_SRAM_PORT_SIZE_16_BITS (1U)
77 #define FEMC_IO_CSX_SDRAM_CS1 (1U)
78 #define FEMC_IO_CSX_SRAM_CE (6U)
#define FEMC_CTRL_RST_MASK
Definition: hpm_femc_regs.h:101
#define FEMC_CTRL_DIS_MASK
Definition: hpm_femc_regs.h:90
#define FEMC_STAT0_IDLE_MASK
Definition: hpm_femc_regs.h:938
uint32_t hpm_stat_t
Definition: hpm_common.h:123
#define MAKE_STATUS(group, code)
Definition: hpm_common.h:132
@ status_group_femc
Definition: hpm_common.h:144
void femc_get_typical_sram_config(FEMC_Type *ptr, femc_sram_config_t *config)
femc get typical sram config
Definition: hpm_femc_drv.c:326
static void femc_sw_reset(FEMC_Type *ptr)
femc software reset
Definition: hpm_femc_drv.h:207
hpm_stat_t femc_config_sdram(FEMC_Type *ptr, uint32_t clk_in_hz, femc_sdram_config_t *config)
femc config sdram
Definition: hpm_femc_drv.c:225
#define FEMC_AXI_Q_COUNT
Definition: hpm_femc_drv.h:42
void femc_init(FEMC_Type *ptr, femc_config_t *config)
femc init controller
Definition: hpm_femc_drv.c:132
static void femc_disable(FEMC_Type *ptr)
femc disable
Definition: hpm_femc_drv.h:193
static void femc_enable(FEMC_Type *ptr)
femc enable
Definition: hpm_femc_drv.h:181
void femc_get_typical_sdram_config(FEMC_Type *ptr, femc_sdram_config_t *config)
femc get typical sdram config
Definition: hpm_femc_drv.c:108
void femc_default_config(FEMC_Type *ptr, femc_config_t *config)
femc get default config
Definition: hpm_femc_drv.c:85
hpm_stat_t femc_config_sram(FEMC_Type *ptr, uint32_t clk_in_hz, femc_sram_config_t *config)
femc config sram
Definition: hpm_femc_drv.c:346
@ status_femc_cmd_err
Definition: hpm_femc_drv.h:167
Definition: hpm_femc_regs.h:12
__R uint32_t STAT0
Definition: hpm_femc_regs.h:37
__RW uint32_t CTRL
Definition: hpm_femc_regs.h:13
Structure for specifying the configuration of AXI queue weight.
Definition: hpm_femc_drv.h:83
uint8_t slave_hit_wo_rw
Definition: hpm_femc_drv.h:87
uint8_t age
Definition: hpm_femc_drv.h:86
uint8_t slave_hit
Definition: hpm_femc_drv.h:88
uint8_t qos
Definition: hpm_femc_drv.h:85
uint8_t page_hit
Definition: hpm_femc_drv.h:89
uint8_t bank_rotation
Definition: hpm_femc_drv.h:90
bool enable
Definition: hpm_femc_drv.h:84
Structure for FEMC command.
Definition: hpm_femc_drv.h:158
uint32_t opcode
Definition: hpm_femc_drv.h:159
uint32_t data
Definition: hpm_femc_drv.h:160
Structure for specifying the configuration of FEMC.
Definition: hpm_femc_drv.h:148
uint8_t bus_timeout
Definition: hpm_femc_drv.h:151
uint8_t dqs
Definition: hpm_femc_drv.h:149
uint8_t cmd_timeout
Definition: hpm_femc_drv.h:150
Structure for specifying the configuration of SDRAM.
Definition: hpm_femc_drv.h:96
uint8_t cas_latency
Definition: hpm_femc_drv.h:101
uint8_t self_refresh_recover_in_ns
Definition: hpm_femc_drv.h:114
uint8_t act_to_act_in_ns
Definition: hpm_femc_drv.h:111
uint8_t auto_refresh_count_in_one_burst
Definition: hpm_femc_drv.h:119
uint8_t refresh_in_ms
Definition: hpm_femc_drv.h:116
uint32_t refresh_count
Definition: hpm_femc_drv.h:99
uint8_t act_to_precharge_in_ns
Definition: hpm_femc_drv.h:108
uint8_t cke_off_in_ns
Definition: hpm_femc_drv.h:107
uint8_t cmd_data_width
Definition: hpm_femc_drv.h:118
uint32_t size_in_byte
Definition: hpm_femc_drv.h:98
uint32_t base_address
Definition: hpm_femc_drv.h:97
uint8_t delay_cell_value
Definition: hpm_femc_drv.h:121
uint8_t idle_timeout_in_ns
Definition: hpm_femc_drv.h:117
uint8_t refresh_recover_in_ns
Definition: hpm_femc_drv.h:115
uint8_t col_addr_bits
Definition: hpm_femc_drv.h:100
uint8_t bank_num
Definition: hpm_femc_drv.h:103
uint8_t precharge_to_act_in_ns
Definition: hpm_femc_drv.h:109
uint8_t burst_len_in_byte
Definition: hpm_femc_drv.h:106
uint8_t act_to_rw_in_ns
Definition: hpm_femc_drv.h:110
uint8_t refresh_to_refresh_in_ns
Definition: hpm_femc_drv.h:112
uint8_t cs
Definition: hpm_femc_drv.h:102
uint8_t port_size
Definition: hpm_femc_drv.h:105
uint8_t prescaler
Definition: hpm_femc_drv.h:104
bool delay_cell_disable
Definition: hpm_femc_drv.h:120
uint8_t write_recover_in_ns
Definition: hpm_femc_drv.h:113
Structure for specifying the configuration of SRAM.
Definition: hpm_femc_drv.h:127
uint32_t base_address
Definition: hpm_femc_drv.h:128
uint8_t oel_in_ns
Definition: hpm_femc_drv.h:136
uint8_t as_in_ns
Definition: hpm_femc_drv.h:140
uint8_t weh_in_ns
Definition: hpm_femc_drv.h:137
uint8_t adv_hold_state
Definition: hpm_femc_drv.h:133
uint8_t port_size
Definition: hpm_femc_drv.h:132
uint8_t cs_index
Definition: hpm_femc_drv.h:130
uint32_t size_in_byte
Definition: hpm_femc_drv.h:129
uint8_t oeh_in_ns
Definition: hpm_femc_drv.h:135
uint8_t ces_in_ns
Definition: hpm_femc_drv.h:142
uint8_t adv_polarity
Definition: hpm_femc_drv.h:134
uint8_t ah_in_ns
Definition: hpm_femc_drv.h:139
uint8_t wel_in_ns
Definition: hpm_femc_drv.h:138
uint8_t address_mode
Definition: hpm_femc_drv.h:131
uint8_t ceh_in_ns
Definition: hpm_femc_drv.h:141