soc/intel/common: Add LPCAMM memory topology support
Add MEM_TOPO_LP5_CAMM topology type to support Low Profile Compression Attached Memory Module (LPCAMM) configurations. LPCAMM is a removable memory module format that provides similar functionality to DIMMs but in a different physical form factor. Update the SPD reading logic to handle both traditional DIMM modules and LPCAMM modules, as both are removable memory types that require SPD detection and initialization. This change enables platforms to properly detect and initialize LPCAMM memory configurations alongside existing DIMM and memory-down support. BUG=none TEST=Build test on Intel platforms Change-Id: I6db2fd76300dd4c96212427d9283b078ca621ed9 Signed-off-by: Bora Guvendik <bora.guvendik@intel.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/90140 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Jérémy Compostella <jeremy.compostella@intel.com>
This commit is contained in:
parent
bb18e0b91d
commit
67777b7671
2 changed files with 4 additions and 2 deletions
|
|
@ -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,
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
/*
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue