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_IO_MUX_NOT_USED (0U)
33 #define FEMC_IO_MUX_CSX0 (1U)
34 #define FEMC_IO_MUX_CSX1 (2U)
35 #define FEMC_IO_MUX_CSX2 (3U)
36 #define FEMC_IO_MUX_CSX3 (4U)
37 #define FEMC_IO_MUX_RDY (5U)
39 #define FEMC_SDRAM_BANK_NUM_4 (0U)
40 #define FEMC_SDRAM_BANK_NUM_2 (1U)
42 #define FEMC_SDRAM_CS0 (0U)
43 #define FEMC_SDRAM_CS1 (1U)
45 #define FEMC_SDRAM_PORT_SIZE_8_BITS (0U)
46 #define FEMC_SDRAM_PORT_SIZE_16_BITS (1U)
47 #define FEMC_SDRAM_PORT_SIZE_32_BITS (2U)
49 #define FEMC_AXI_Q_COUNT (2U)
50 #define FEMC_AXI_Q_A (0U)
51 #define FEMC_AXI_Q_B (1U)
53 #define FEMC_DQS_INTERNAL (0U)
54 #define FEMC_DQS_FROM_PAD (1U)
56 #define FEMC_BR_COUNT (2U)
58 #define FEMC_CMD_KEY FEMC_IPCMD_KEY_SET(0xA55A)
59 #define FEMC_CMD_WRITE_FLAG (1UL << 31)
60 #define FEMC_CMD_SDRAM_READ (0x8U)
61 #define FEMC_CMD_SDRAM_WRITE (FEMC_CMD_WRITE_FLAG | 0x9U)
62 #define FEMC_CMD_SDRAM_MODE_SET (FEMC_CMD_WRITE_FLAG | 0xAU)
63 #define FEMC_CMD_SDRAM_ACTIVE (0xBU)
64 #define FEMC_CMD_SDRAM_AUTO_REFRESH (0xCU)
65 #define FEMC_CMD_SDRAM_SELF_REFRESH (0xDU)
66 #define FEMC_CMD_SDRAM_PRECHARGE (0xEU)
67 #define FEMC_CMD_SDRAM_PRECHARGE_ALL (0xFU)
70 #define FEMC_SRAM_AD_MUX_MODE (0U)
71 #define FEMC_SRAM_AD_NONMUX_MODE (3U)
74 #define FEMC_SRAM_ADV_HOLD_HIGH (0U)
75 #define FEMC_SRAM_ADV_HOLD_LOW (1U)
78 #define FEMC_SRAM_ADV_ACTIVE_LOW (0U)
79 #define FEMC_SRAM_ADV_ACTIVE_HIGH (1U)
82 #define FEMC_SRAM_PORT_SIZE_8_BITS (0U)
83 #define FEMC_SRAM_PORT_SIZE_16_BITS (1U)
86 #define FEMC_IO_CSX_SDRAM_CS1 (1U)
87 #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:317
static void femc_sw_reset(FEMC_Type *ptr)
femc software reset
Definition: hpm_femc_drv.h:216
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:219
#define FEMC_AXI_Q_COUNT
Definition: hpm_femc_drv.h:49
void femc_init(FEMC_Type *ptr, femc_config_t *config)
femc init controller
Definition: hpm_femc_drv.c:129
static void femc_disable(FEMC_Type *ptr)
femc disable
Definition: hpm_femc_drv.h:202
static void femc_enable(FEMC_Type *ptr)
femc enable
Definition: hpm_femc_drv.h:190
void femc_get_typical_sdram_config(FEMC_Type *ptr, femc_sdram_config_t *config)
femc get typical sdram config
Definition: hpm_femc_drv.c:104
void femc_default_config(FEMC_Type *ptr, femc_config_t *config)
femc get default config
Definition: hpm_femc_drv.c:81
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:336
@ status_femc_cmd_err
Definition: hpm_femc_drv.h:176
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:92
uint8_t slave_hit_wo_rw
Definition: hpm_femc_drv.h:96
uint8_t age
Definition: hpm_femc_drv.h:95
uint8_t slave_hit
Definition: hpm_femc_drv.h:97
uint8_t qos
Definition: hpm_femc_drv.h:94
uint8_t page_hit
Definition: hpm_femc_drv.h:98
uint8_t bank_rotation
Definition: hpm_femc_drv.h:99
bool enable
Definition: hpm_femc_drv.h:93
Structure for FEMC command.
Definition: hpm_femc_drv.h:167
uint32_t opcode
Definition: hpm_femc_drv.h:168
uint32_t data
Definition: hpm_femc_drv.h:169
Structure for specifying the configuration of FEMC.
Definition: hpm_femc_drv.h:157
uint8_t bus_timeout
Definition: hpm_femc_drv.h:160
uint8_t dqs
Definition: hpm_femc_drv.h:158
uint8_t cmd_timeout
Definition: hpm_femc_drv.h:159
Structure for specifying the configuration of SDRAM.
Definition: hpm_femc_drv.h:105
uint8_t cas_latency
Definition: hpm_femc_drv.h:110
uint8_t self_refresh_recover_in_ns
Definition: hpm_femc_drv.h:124
uint8_t act_to_act_in_ns
Definition: hpm_femc_drv.h:121
uint8_t auto_refresh_count_in_one_burst
Definition: hpm_femc_drv.h:129
uint8_t refresh_in_ms
Definition: hpm_femc_drv.h:126
uint32_t refresh_count
Definition: hpm_femc_drv.h:108
uint8_t act_to_precharge_in_ns
Definition: hpm_femc_drv.h:118
uint8_t cke_off_in_ns
Definition: hpm_femc_drv.h:117
uint8_t cmd_data_width
Definition: hpm_femc_drv.h:128
uint32_t size_in_byte
Definition: hpm_femc_drv.h:107
uint32_t base_address
Definition: hpm_femc_drv.h:106
uint8_t delay_cell_value
Definition: hpm_femc_drv.h:131
uint8_t idle_timeout_in_ns
Definition: hpm_femc_drv.h:127
uint8_t refresh_recover_in_ns
Definition: hpm_femc_drv.h:125
uint8_t col_addr_bits
Definition: hpm_femc_drv.h:109
uint8_t bank_num
Definition: hpm_femc_drv.h:113
uint8_t cs_mux_pin
Definition: hpm_femc_drv.h:112
uint8_t precharge_to_act_in_ns
Definition: hpm_femc_drv.h:119
uint8_t burst_len_in_byte
Definition: hpm_femc_drv.h:116
uint8_t act_to_rw_in_ns
Definition: hpm_femc_drv.h:120
uint8_t refresh_to_refresh_in_ns
Definition: hpm_femc_drv.h:122
uint8_t cs
Definition: hpm_femc_drv.h:111
uint8_t port_size
Definition: hpm_femc_drv.h:115
uint8_t prescaler
Definition: hpm_femc_drv.h:114
bool delay_cell_disable
Definition: hpm_femc_drv.h:130
uint8_t write_recover_in_ns
Definition: hpm_femc_drv.h:123
Structure for specifying the configuration of SRAM.
Definition: hpm_femc_drv.h:137
uint32_t base_address
Definition: hpm_femc_drv.h:138
uint8_t oel_in_ns
Definition: hpm_femc_drv.h:145
uint8_t as_in_ns
Definition: hpm_femc_drv.h:149
uint8_t weh_in_ns
Definition: hpm_femc_drv.h:146
uint8_t adv_hold_state
Definition: hpm_femc_drv.h:142
uint8_t port_size
Definition: hpm_femc_drv.h:141
uint32_t size_in_byte
Definition: hpm_femc_drv.h:139
uint8_t oeh_in_ns
Definition: hpm_femc_drv.h:144
uint8_t ces_in_ns
Definition: hpm_femc_drv.h:151
uint8_t adv_polarity
Definition: hpm_femc_drv.h:143
uint8_t ah_in_ns
Definition: hpm_femc_drv.h:148
uint8_t wel_in_ns
Definition: hpm_femc_drv.h:147
uint8_t address_mode
Definition: hpm_femc_drv.h:140
uint8_t ceh_in_ns
Definition: hpm_femc_drv.h:150