| /* SPDX-License-Identifier: BSD-3-Clause */ |
| |
| #ifndef __EMI_H__ |
| #define __EMI_H__ |
| |
| #include <dramc_top.h> |
| |
| #if __ETT__ |
| #define emi_log printf |
| #elif __FLASH_TOOL_DA__ |
| #define emi_log LOGD |
| #else |
| #define emi_log print |
| #endif |
| |
| struct isu_info_t { |
| unsigned int buf_size; |
| unsigned long long buf_addr; |
| unsigned long long ver_addr; |
| unsigned long long con_addr; |
| }; |
| |
| #define EMI_ISU_BUF_SIZE 0x800000 |
| #define LAST_EMI_MAGIC_PATTERN 0x19870611 |
| typedef struct { |
| unsigned int isu_magic; |
| unsigned int isu_ctrl; |
| unsigned int isu_dram_type; |
| unsigned int isu_diff_us; |
| unsigned int isu_buf_l; |
| unsigned int isu_buf_h; |
| unsigned int isu_version; |
| unsigned int snst_last; |
| unsigned int snst_past; |
| unsigned int os_flag_sspm; |
| unsigned int os_flag_ap; |
| } LAST_EMI_INFO_T; |
| #define DEF_LAST_EMI LAST_EMI_INFO_T |
| |
| typedef struct { |
| unsigned int dram_type; |
| unsigned int ch_num; |
| unsigned int rk_num; |
| unsigned int bank_width[DRAMC_MAX_RK]; |
| unsigned int row_width[DRAMC_MAX_RK]; |
| unsigned int col_width[DRAMC_MAX_RK]; |
| U64 rank_size[DRAMC_MAX_RK]; |
| } EMI_INFO_T; |
| |
| void emi_init(void); |
| void emi_init2(void); |
| void clr_emi_mpu_prot(void); |
| void dis_emi_apb_prot(void); |
| int get_row_width_by_emi(unsigned int rank); |
| int get_channel_nr_by_emi(void); |
| int get_rank_nr_by_emi(void); |
| void get_rank_size_by_emi(unsigned long long dram_rank_size[DRAMC_MAX_RK]); |
| void set_cen_emi_cona(unsigned int cona_val); |
| void set_cen_emi_conf(unsigned int conf_val); |
| void set_cen_emi_conh(unsigned int conh_val); |
| void set_chn_emi_cona(unsigned int cona_val); |
| void set_chn_emi_conc(unsigned int conc_val); |
| unsigned int get_cen_emi_cona(void); |
| unsigned int get_chn_emi_cona(void); |
| void enable_infra_emi_broadcast(unsigned int enable); |
| void phy_addr_to_dram_addr(dram_addr_t *dram_addr, unsigned long long phy_addr); |
| unsigned int set_emi_before_rank1_mem_test(void); |
| void restore_emi_after_rank1_mem_test(void); |
| void get_emi_isu_info(struct isu_info_t *isu_info_ptr); |
| void reserve_emi_isu_buf(void); |
| void reserve_emi_mbist_buf(void); |
| void record_emi_snst(void); |
| unsigned long long platform_memory_size(void); |
| int update_emi_setting(EMI_SETTINGS *default_emi_setting, EMI_INFO_T *emi_info); |
| //int mt_mem_init(); |
| |
| #endif /* __EMI_H__ */ |
| |