diff options
Diffstat (limited to 'src/soc/intel/common/block')
-rw-r--r-- | src/soc/intel/common/block/include/intelblocks/meminit.h | 4 | ||||
-rw-r--r-- | src/soc/intel/common/block/memory/meminit.c | 9 |
2 files changed, 8 insertions, 5 deletions
diff --git a/src/soc/intel/common/block/include/intelblocks/meminit.h b/src/soc/intel/common/block/include/intelblocks/meminit.h index 130249cf71..6276a7e294 100644 --- a/src/soc/intel/common/block/include/intelblocks/meminit.h +++ b/src/soc/intel/common/block/include/intelblocks/meminit.h @@ -3,6 +3,7 @@ #ifndef __SOC_INTEL_COMMON_BLOCK_MEMINIT_H__ #define __SOC_INTEL_COMMON_BLOCK_MEMINIT_H__ +#include <fsp/api.h> #include <types.h> /* @@ -130,13 +131,14 @@ struct mem_channel_data { /* * This change populates data regarding memory channels in `struct * mem_channel_data` using the following inputs from SoC code: + * memupd : FSP-M UPD configuration. * soc_mem_cfg : SoC-specific information about the memory technology used by * the mainboard. * spd_info : Information about the memory topology. * half_populated: Hint from mainboard if channels are half populated. * dimms_changed: True if the dimms is changed after caching the spd data. */ -void mem_populate_channel_data(const struct soc_mem_cfg *soc_mem_cfg, +void mem_populate_channel_data(FSPM_UPD *memupd, const struct soc_mem_cfg *soc_mem_cfg, const struct mem_spd *spd_info, bool half_populated, struct mem_channel_data *data, diff --git a/src/soc/intel/common/block/memory/meminit.c b/src/soc/intel/common/block/memory/meminit.c index 89cd4e323e..272e6a1503 100644 --- a/src/soc/intel/common/block/memory/meminit.c +++ b/src/soc/intel/common/block/memory/meminit.c @@ -95,8 +95,9 @@ static void read_spd_md(const struct soc_mem_cfg *soc_mem_cfg, const struct mem_ #define CH_DIMM_OFFSET(ch, dimm) ((ch) * CONFIG_DIMMS_PER_CHANNEL + (dimm)) -static bool read_spd_dimm(const struct soc_mem_cfg *soc_mem_cfg, const struct mem_spd *info, - bool half_populated, struct mem_channel_data *channel_data, +static bool read_spd_dimm(FSPM_UPD *memupd, const struct soc_mem_cfg *soc_mem_cfg, + const struct mem_spd *info, bool half_populated, + struct mem_channel_data *channel_data, size_t *spd_len, bool *dimms_changed) { size_t ch, dimm; @@ -183,7 +184,7 @@ static bool read_spd_dimm(const struct soc_mem_cfg *soc_mem_cfg, const struct me return pop_mask != 0; } -void mem_populate_channel_data(const struct soc_mem_cfg *soc_mem_cfg, +void mem_populate_channel_data(FSPM_UPD *memupd, const struct soc_mem_cfg *soc_mem_cfg, const struct mem_spd *spd_info, bool half_populated, struct mem_channel_data *data, @@ -195,7 +196,7 @@ void mem_populate_channel_data(const struct soc_mem_cfg *soc_mem_cfg, memset(data, 0, sizeof(*data)); read_spd_md(soc_mem_cfg, spd_info, half_populated, data, &spd_md_len); - have_dimms = read_spd_dimm(soc_mem_cfg, spd_info, half_populated, data, + have_dimms = read_spd_dimm(memupd, soc_mem_cfg, spd_info, half_populated, data, &spd_dimm_len, dimms_changed); if (data->ch_population_flags == NO_CHANNEL_POPULATED) |