diff --git a/src/soc/intel/common/block/include/intelblocks/meminit.h b/src/soc/intel/common/block/include/intelblocks/meminit.h index 566efa03d9..050e325c1c 100644 --- a/src/soc/intel/common/block/include/intelblocks/meminit.h +++ b/src/soc/intel/common/block/include/intelblocks/meminit.h @@ -24,6 +24,7 @@ enum mem_topology { MEM_TOPO_MEMORY_DOWN = BIT(0), // memory is soldered onto board MEM_TOPO_DIMM_MODULE = BIT(1), // memory is composed of DIMM modules + MEM_TOPO_LP5_CAMM = BIT(2), // memory is composed of LPCAMM modules MEM_TOPO_MIXED = MEM_TOPO_MEMORY_DOWN | MEM_TOPO_DIMM_MODULE, }; diff --git a/src/soc/intel/common/block/memory/meminit.c b/src/soc/intel/common/block/memory/meminit.c index fa80017c50..59c1b2a8bc 100644 --- a/src/soc/intel/common/block/memory/meminit.c +++ b/src/soc/intel/common/block/memory/meminit.c @@ -117,7 +117,7 @@ static bool read_spd_dimm(FSPM_UPD *memupd, const struct soc_mem_cfg *soc_mem_cf */ uint32_t pop_mask = 0; - if (!(info->topo & MEM_TOPO_DIMM_MODULE)) + if (!(info->topo & (MEM_TOPO_DIMM_MODULE | MEM_TOPO_LP5_CAMM))) return false; for (ch = 0; ch < num_phys_ch; ch++) { @@ -212,7 +212,8 @@ void mem_populate_channel_data(FSPM_UPD *memupd, const struct soc_mem_cfg *soc_m if (spd_info->topo == MEM_TOPO_MEMORY_DOWN) { data->spd_len = spd_md_len; - } else if (spd_info->topo == MEM_TOPO_DIMM_MODULE) { + } else if (spd_info->topo == MEM_TOPO_DIMM_MODULE || + spd_info->topo == MEM_TOPO_LP5_CAMM) { data->spd_len = spd_dimm_len; } else { /*