soc/intel/common: Pass `FSPM_UPD *` argument for spd functions
This patch adds `FSPM_UPD *` as argument for mem_populate_channel_data() and read_spd_dimm(). This change will help to update the architectural FSP-M UPDs in read_spd_dimm(). BUG=b:200243989 BRANCH=firmware-brya-14505.B TEST=Able to build and boot redrix without any visible failure/errors. Signed-off-by: Subrata Banik <subratabanik@google.com> Change-Id: I770cfd05194c33e11f98f95c5b93157b0ead70c1 Reviewed-on: https://review.coreboot.org/c/coreboot/+/62737 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Eric Lai <eric_lai@quanta.corp-partner.google.com> Reviewed-by: Zhuohao Lee <zhuohao@google.com>
This commit is contained in:
parent
2eb51aace5
commit
47b836af96
|
@ -279,8 +279,8 @@ void memcfg_init(FSPM_UPD *memupd, const struct mb_cfg *mb_cfg,
|
|||
die("Unsupported memory type(%d)\n", mb_cfg->type);
|
||||
}
|
||||
|
||||
mem_populate_channel_data(&soc_mem_cfg[mb_cfg->type], spd_info, half_populated, &data,
|
||||
dimms_changed);
|
||||
mem_populate_channel_data(memupd, &soc_mem_cfg[mb_cfg->type], spd_info, half_populated,
|
||||
&data, dimms_changed);
|
||||
mem_init_spd_upds(mem_cfg, &data);
|
||||
mem_init_dq_upds(mem_cfg, &data, mb_cfg, dq_dqs_auto_detect);
|
||||
mem_init_dqs_upds(mem_cfg, &data, mb_cfg, dq_dqs_auto_detect);
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -157,8 +157,8 @@ void memcfg_init(FSPM_UPD *memupd, const struct mb_cfg *mb_cfg,
|
|||
if (mb_cfg->type >= ARRAY_SIZE(soc_mem_cfg))
|
||||
die("Invalid memory type(%x)!\n", mb_cfg->type);
|
||||
|
||||
mem_populate_channel_data(&soc_mem_cfg[mb_cfg->type], spd_info, half_populated, &data,
|
||||
&dimms_changed);
|
||||
mem_populate_channel_data(memupd, &soc_mem_cfg[mb_cfg->type], spd_info, half_populated,
|
||||
&data, &dimms_changed);
|
||||
mem_init_spd_upds(mem_cfg, &data);
|
||||
mem_init_dq_upds(mem_cfg, &data, mb_cfg);
|
||||
mem_init_dqs_upds(mem_cfg, &data, mb_cfg);
|
||||
|
|
Loading…
Reference in New Issue