coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
meminit.c File Reference
#include <console/console.h>
#include <fsp/util.h>
#include <soc/meminit.h>
#include <string.h>
Include dependency graph for meminit.c:

Go to the source code of this file.

Macros

#define LPX_PHYSICAL_CH_WIDTH   16
 
#define LPX_CHANNELS   CHANNEL_COUNT(LPX_PHYSICAL_CH_WIDTH)
 
#define DDR4_PHYSICAL_CH_WIDTH   64
 
#define DDR4_CHANNELS   CHANNEL_COUNT(DDR4_PHYSICAL_CH_WIDTH)
 
#define DDR5_PHYSICAL_CH_WIDTH   32
 
#define DDR5_CHANNELS   CHANNEL_COUNT(DDR5_PHYSICAL_CH_WIDTH)
 
#define DDR5_CH_DIMM_OFFSET(ch, dimm)   ((ch) * CONFIG_DIMMS_PER_CHANNEL + (dimm))
 

Functions

static void set_rcomp_config (FSP_M_CONFIG *mem_cfg, const struct mb_cfg *mb_cfg)
 
static void meminit_lp4x (FSP_M_CONFIG *mem_cfg)
 
static void meminit_lp5x (FSP_M_CONFIG *mem_cfg, const struct mem_lp5x_config *lp5x_config)
 
static void meminit_ddr (FSP_M_CONFIG *mem_cfg, const struct mem_ddr_config *ddr_config)
 
static void mem_init_spd_upds (FSP_M_CONFIG *mem_cfg, const struct mem_channel_data *data)
 
static void mem_init_dq_dqs_upds (void *upds[MRC_CHANNELS], const void *map, size_t upd_size, const struct mem_channel_data *data, bool auto_detect)
 
static void mem_init_dq_upds (FSP_M_CONFIG *mem_cfg, const struct mem_channel_data *data, const struct mb_cfg *mb_cfg, bool auto_detect)
 
static void mem_init_dqs_upds (FSP_M_CONFIG *mem_cfg, const struct mem_channel_data *data, const struct mb_cfg *mb_cfg, bool auto_detect)
 
static void ddr5_fill_dimm_module_info (FSP_M_CONFIG *mem_cfg, const struct mb_cfg *mb_cfg, const struct mem_spd *spd_info)
 
void memcfg_init (FSPM_UPD *memupd, const struct mb_cfg *mb_cfg, const struct mem_spd *spd_info, bool half_populated)
 

Variables

static const struct soc_mem_cfg soc_mem_cfg []
 

Macro Definition Documentation

◆ DDR4_CHANNELS

#define DDR4_CHANNELS   CHANNEL_COUNT(DDR4_PHYSICAL_CH_WIDTH)

Definition at line 12 of file meminit.c.

◆ DDR4_PHYSICAL_CH_WIDTH

#define DDR4_PHYSICAL_CH_WIDTH   64

Definition at line 11 of file meminit.c.

◆ DDR5_CH_DIMM_OFFSET

#define DDR5_CH_DIMM_OFFSET (   ch,
  dimm 
)    ((ch) * CONFIG_DIMMS_PER_CHANNEL + (dimm))

Definition at line 222 of file meminit.c.

◆ DDR5_CHANNELS

#define DDR5_CHANNELS   CHANNEL_COUNT(DDR5_PHYSICAL_CH_WIDTH)

Definition at line 15 of file meminit.c.

◆ DDR5_PHYSICAL_CH_WIDTH

#define DDR5_PHYSICAL_CH_WIDTH   32

Definition at line 14 of file meminit.c.

◆ LPX_CHANNELS

#define LPX_CHANNELS   CHANNEL_COUNT(LPX_PHYSICAL_CH_WIDTH)

Definition at line 9 of file meminit.c.

◆ LPX_PHYSICAL_CH_WIDTH

#define LPX_PHYSICAL_CH_WIDTH   16

Definition at line 8 of file meminit.c.

Function Documentation

◆ ddr5_fill_dimm_module_info()

static void ddr5_fill_dimm_module_info ( FSP_M_CONFIG mem_cfg,
const struct mb_cfg mb_cfg,
const struct mem_spd spd_info 
)
static

Definition at line 224 of file meminit.c.

References ch, DDR5_CH_DIMM_OFFSET, mem_init_dq_upds(), mem_init_dqs_upds(), MEM_TYPE_DDR5, NULL, soc_mem_cfg::num_phys_channels, and soc_mem_cfg::phys_to_mrc_map.

Referenced by memcfg_init().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ mem_init_dq_dqs_upds()

static void mem_init_dq_dqs_upds ( void upds[MRC_CHANNELS],
const void map,
size_t  upd_size,
const struct mem_channel_data data,
bool  auto_detect 
)
static

Definition at line 164 of file meminit.c.

References mem_channel_data::ch_population_flags, channel_is_populated(), memcpy(), memset(), and MRC_CHANNELS.

Referenced by mem_init_dq_upds(), and mem_init_dqs_upds().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ mem_init_dq_upds()

static void mem_init_dq_upds ( FSP_M_CONFIG mem_cfg,
const struct mem_channel_data data,
const struct mb_cfg mb_cfg,
bool  auto_detect 
)
static

Definition at line 178 of file meminit.c.

References _Static_assert(), mb_cfg::dq_map, mem_init_dq_dqs_upds(), and MRC_CHANNELS.

Referenced by ddr5_fill_dimm_module_info(), and memcfg_init().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ mem_init_dqs_upds()

static void mem_init_dqs_upds ( FSP_M_CONFIG mem_cfg,
const struct mem_channel_data data,
const struct mb_cfg mb_cfg,
bool  auto_detect 
)
static

Definition at line 200 of file meminit.c.

References _Static_assert(), mb_cfg::dqs_map, mem_init_dq_dqs_upds(), and MRC_CHANNELS.

Referenced by ddr5_fill_dimm_module_info(), and memcfg_init().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ mem_init_spd_upds()

static void mem_init_spd_upds ( FSP_M_CONFIG mem_cfg,
const struct mem_channel_data data 
)
static

Definition at line 123 of file meminit.c.

References ch, MRC_CHANNELS, mem_channel_data::spd, and mem_channel_data::spd_len.

Referenced by memcfg_init().

Here is the caller graph for this function:

◆ memcfg_init()

void memcfg_init ( FSPM_UPD *  memupd,
const struct mb_cfg mb_cfg,
const struct mem_spd spd_info,
bool  half_populated 
)

Definition at line 238 of file meminit.c.

◆ meminit_ddr()

static void meminit_ddr ( FSP_M_CONFIG mem_cfg,
const struct mem_ddr_config ddr_config 
)
static

Definition at line 39 of file meminit.c.

References mem_ddr_config::dq_pins_interleaved.

Referenced by memcfg_init().

Here is the caller graph for this function:

◆ meminit_lp4x()

static void meminit_lp4x ( FSP_M_CONFIG mem_cfg)
static

Definition at line 28 of file meminit.c.

Referenced by memcfg_init().

Here is the caller graph for this function:

◆ meminit_lp5x()

static void meminit_lp5x ( FSP_M_CONFIG mem_cfg,
const struct mem_lp5x_config lp5x_config 
)
static

Definition at line 33 of file meminit.c.

References mem_lp5x_config::ccc_config.

Referenced by memcfg_init().

Here is the caller graph for this function:

◆ set_rcomp_config()

static void set_rcomp_config ( FSP_M_CONFIG mem_cfg,
const struct mb_cfg mb_cfg 
)
static

Definition at line 17 of file meminit.c.

References ARRAY_SIZE, mb_cfg::rcomp, rcomp::resistor, and rcomp::targets.

Referenced by memcfg_init().

Here is the caller graph for this function:

Variable Documentation

◆ soc_mem_cfg

const struct soc_mem_cfg soc_mem_cfg[]
static

Definition at line 39 of file meminit.c.