6 #include <soc/meminit.h>
20 *spd_data_len = CONFIG_DIMM_SPD_SIZE;
23 die(
"spd.bin not found or incorrect index\n");
40 die(
"no valid way to read SPD info");
47 sizeof(mem_cfg->RcompResistor));
50 sizeof(mem_cfg->RcompTarget));
69 uintptr_t spd_data_ptr,
bool half_populated)
72 mem_cfg->MemorySpdPtr00 = spd_data_ptr;
73 mem_cfg->MemorySpdPtr01 = 0;
81 mem_cfg->MemorySpdPtr10 = spd_data_ptr;
82 mem_cfg->MemorySpdPtr11 = 0;
99 size_t spd_data_len = 0;
100 memset(&mem_cfg->SpdAddressTable, 0,
sizeof(mem_cfg->SpdAddressTable));
104 mem_cfg->MemorySpdDataLen = spd_data_len;
void memcfg_init(FSPM_UPD *memupd, const struct mb_cfg *mb_cfg, const struct mem_spd *spd_info, bool half_populated)
void * memcpy(void *dest, const void *src, size_t n)
void * memset(void *dstpp, int c, size_t len)
#define assert(statement)
#define printk(level,...)
void __noreturn die(const char *fmt,...)
static void meminit_dq_dqs_map(FSP_M_CONFIG *mem_cfg, const struct mb_cfg *board_cfg, bool half_populated)
static void meminit_channels(FSP_M_CONFIG *mem_cfg, const struct mb_cfg *board_cfg, uintptr_t spd_data_ptr, bool half_populated)
static void spd_read_from_cbfs(const struct spd_info *spd_info, uintptr_t *spd_data_ptr, size_t *spd_data_len)
static void get_spd_data(const struct spd_info *spd_info, uintptr_t *spd_data_ptr, size_t *spd_data_len)
#define BIOS_INFO
BIOS_INFO - Expected events.
#define BIOS_DEBUG
BIOS_DEBUG - Verbose output.
static const int spd_index[32]
static const struct mb_cfg board_cfg
uintptr_t spd_cbfs_map(u8 spd_index)
void print_spd_info(uint8_t spd[])
uint16_t rcomp_targets[5]
uint8_t dqs_map[CONFIG_DATA_BUS_WIDTH/BITS_PER_BYTE]
uint16_t rcomp_resistor[3]
uint8_t dq_map[CONFIG_DATA_BUS_WIDTH]
union spd_info::spd_data_by spd_spec
enum mem_info_read_type read_type
struct spd_by_pointer spd_data_ptr_info
uint8_t spd_smbus_address