summaryrefslogtreecommitdiff
path: root/src/soc
diff options
context:
space:
mode:
Diffstat (limited to 'src/soc')
-rw-r--r--src/soc/intel/alderlake/include/soc/romstage.h2
-rw-r--r--src/soc/intel/alderlake/romstage/romstage.c8
-rw-r--r--src/soc/intel/cannonlake/include/soc/romstage.h2
-rw-r--r--src/soc/intel/cannonlake/romstage/romstage.c24
-rw-r--r--src/soc/intel/elkhartlake/include/soc/romstage.h2
-rw-r--r--src/soc/intel/elkhartlake/romstage/romstage.c13
-rw-r--r--src/soc/intel/jasperlake/include/soc/romstage.h2
-rw-r--r--src/soc/intel/jasperlake/romstage/romstage.c13
-rw-r--r--src/soc/intel/tigerlake/include/soc/romstage.h2
-rw-r--r--src/soc/intel/tigerlake/romstage/romstage.c13
10 files changed, 50 insertions, 31 deletions
diff --git a/src/soc/intel/alderlake/include/soc/romstage.h b/src/soc/intel/alderlake/include/soc/romstage.h
index 716602c652..55469a326b 100644
--- a/src/soc/intel/alderlake/include/soc/romstage.h
+++ b/src/soc/intel/alderlake/include/soc/romstage.h
@@ -7,7 +7,7 @@
#include <stddef.h>
/* Provide a callback to allow mainboard to override the DRAM part number. */
-const char *mainboard_get_dram_part_num(size_t *len);
+const char *mainboard_get_dram_part_num(void);
void mainboard_memory_init_params(FSPM_UPD *mupd);
void systemagent_early_init(void);
void romstage_pch_init(void);
diff --git a/src/soc/intel/alderlake/romstage/romstage.c b/src/soc/intel/alderlake/romstage/romstage.c
index 9f4fbb67b0..32657c78c4 100644
--- a/src/soc/intel/alderlake/romstage/romstage.c
+++ b/src/soc/intel/alderlake/romstage/romstage.c
@@ -21,7 +21,7 @@
0x8d, 0x09, 0x11, 0xcf, 0x8b, 0x9f, 0x03, 0x23 \
}
-__weak const char *mainboard_get_dram_part_num(size_t *len)
+const char * __weak mainboard_get_dram_part_num(void)
{
/* Default weak implementation, no need to override part number. */
return NULL;
@@ -41,7 +41,7 @@ static void save_dimm_info(void)
const uint8_t smbios_memory_info_guid[sizeof(EFI_GUID)] = FSP_SMBIOS_MEMORY_INFO_GUID;
const uint8_t *serial_num;
const char *dram_part_num = NULL;
- size_t dram_part_num_len;
+ size_t dram_part_num_len = 0;
/* Locate the memory info HOB, presence validated by raminit */
meminfo_hob = fsp_find_extension_hob_by_guid(
@@ -64,7 +64,9 @@ static void save_dimm_info(void)
memset(mem_info, 0, sizeof(*mem_info));
/* Allow mainboard to override DRAM part number. */
- dram_part_num = mainboard_get_dram_part_num(&dram_part_num_len);
+ dram_part_num = mainboard_get_dram_part_num();
+ if (dram_part_num)
+ dram_part_num_len = strlen(dram_part_num);
/* Save available DIMM information */
index = 0;
diff --git a/src/soc/intel/cannonlake/include/soc/romstage.h b/src/soc/intel/cannonlake/include/soc/romstage.h
index 4e513f0f3c..f99175f769 100644
--- a/src/soc/intel/cannonlake/include/soc/romstage.h
+++ b/src/soc/intel/cannonlake/include/soc/romstage.h
@@ -8,7 +8,7 @@
void mainboard_memory_init_params(FSPM_UPD *mupd);
/* Provide a callback to allow mainboard to override the DRAM part number. */
-void mainboard_get_dram_part_num(const char **part_num, size_t *len);
+const char *mainboard_get_dram_part_num(void);
void systemagent_early_init(void);
void romstage_pch_init(void);
diff --git a/src/soc/intel/cannonlake/romstage/romstage.c b/src/soc/intel/cannonlake/romstage/romstage.c
index c56add7fb8..e8947f1ea4 100644
--- a/src/soc/intel/cannonlake/romstage/romstage.c
+++ b/src/soc/intel/cannonlake/romstage/romstage.c
@@ -23,9 +23,10 @@
0x8d, 0x09, 0x11, 0xcf, 0x8b, 0x9f, 0x03, 0x23 \
}
-void __weak mainboard_get_dram_part_num(const char **part_num, size_t *len)
+const char * __weak mainboard_get_dram_part_num(void)
{
/* Default weak implementation, no need to override part number. */
+ return NULL;
}
/* Save the DIMM information for SMBIOS table 17 */
@@ -42,7 +43,8 @@ static void save_dimm_info(void)
const uint8_t smbios_memory_info_guid[16] =
FSP_SMBIOS_MEMORY_INFO_GUID;
const char *dram_part_num;
- size_t dram_part_num_len;
+ size_t dram_part_num_len = 0;
+ bool part_num_overridden = false;
/* Locate the memory info HOB, presence validated by raminit */
memory_info_hob = fsp_find_extension_hob_by_guid(
@@ -64,6 +66,13 @@ static void save_dimm_info(void)
}
memset(mem_info, 0, sizeof(*mem_info));
+ /* Allow mainboard to override DRAM part number. */
+ dram_part_num = mainboard_get_dram_part_num();
+ if (dram_part_num) {
+ dram_part_num_len = strlen(dram_part_num);
+ part_num_overridden = true;
+ }
+
/* Describe the first N DIMMs in the system */
index = 0;
dimm_max = ARRAY_SIZE(mem_info->dimm);
@@ -79,13 +88,12 @@ static void save_dimm_info(void)
if (src_dimm->Status != DIMM_PRESENT)
continue;
- dram_part_num_len = sizeof(src_dimm->ModulePartNum);
- dram_part_num = (const char *)
+ if (!part_num_overridden) {
+ dram_part_num_len =
+ sizeof(src_dimm->ModulePartNum);
+ dram_part_num = (const char *)
&src_dimm->ModulePartNum[0];
-
- /* Allow mainboard to override DRAM part number. */
- mainboard_get_dram_part_num(&dram_part_num,
- &dram_part_num_len);
+ }
u8 memProfNum = memory_info_hob->MemoryProfile;
diff --git a/src/soc/intel/elkhartlake/include/soc/romstage.h b/src/soc/intel/elkhartlake/include/soc/romstage.h
index baa35c5216..1cffcb93ae 100644
--- a/src/soc/intel/elkhartlake/include/soc/romstage.h
+++ b/src/soc/intel/elkhartlake/include/soc/romstage.h
@@ -6,7 +6,7 @@
#include <fsp/api.h>
/* Provide a callback to allow mainboard to override the DRAM part number. */
-bool mainboard_get_dram_part_num(const char **part_num, size_t *len);
+const char *mainboard_get_dram_part_num(void);
void mainboard_memory_init_params(FSPM_UPD *mupd);
void systemagent_early_init(void);
void romstage_pch_init(void);
diff --git a/src/soc/intel/elkhartlake/romstage/romstage.c b/src/soc/intel/elkhartlake/romstage/romstage.c
index 09b1744946..06fa11400e 100644
--- a/src/soc/intel/elkhartlake/romstage/romstage.c
+++ b/src/soc/intel/elkhartlake/romstage/romstage.c
@@ -21,10 +21,10 @@
0x8d, 0x09, 0x11, 0xcf, 0x8b, 0x9f, 0x03, 0x23 \
}
-bool __weak mainboard_get_dram_part_num(const char **part_num, size_t *len)
+const char * __weak mainboard_get_dram_part_num(void)
{
/* Default implementation, no need to override part number. */
- return false;
+ return NULL;
}
/* Save the DIMM information for SMBIOS table 17 */
@@ -42,7 +42,7 @@ static void save_dimm_info(void)
FSP_SMBIOS_MEMORY_INFO_GUID;
const uint8_t *serial_num;
const char *dram_part_num = NULL;
- size_t dram_part_num_len;
+ size_t dram_part_num_len = 0;
bool is_dram_part_overridden = false;
/* Locate the memory info HOB, presence validated by raminit */
@@ -66,8 +66,11 @@ static void save_dimm_info(void)
memset(mem_info, 0, sizeof(*mem_info));
/* Allow mainboard to override DRAM part number. */
- is_dram_part_overridden = mainboard_get_dram_part_num(&dram_part_num,
- &dram_part_num_len);
+ dram_part_num = mainboard_get_dram_part_num();
+ if (dram_part_num) {
+ dram_part_num = strlen(dram_part_num);
+ is_dram_part_overridden = true;
+ }
/* Save available DIMM information */
index = 0;
diff --git a/src/soc/intel/jasperlake/include/soc/romstage.h b/src/soc/intel/jasperlake/include/soc/romstage.h
index baa35c5216..1cffcb93ae 100644
--- a/src/soc/intel/jasperlake/include/soc/romstage.h
+++ b/src/soc/intel/jasperlake/include/soc/romstage.h
@@ -6,7 +6,7 @@
#include <fsp/api.h>
/* Provide a callback to allow mainboard to override the DRAM part number. */
-bool mainboard_get_dram_part_num(const char **part_num, size_t *len);
+const char *mainboard_get_dram_part_num(void);
void mainboard_memory_init_params(FSPM_UPD *mupd);
void systemagent_early_init(void);
void romstage_pch_init(void);
diff --git a/src/soc/intel/jasperlake/romstage/romstage.c b/src/soc/intel/jasperlake/romstage/romstage.c
index db014ea5d6..6fddbc4f44 100644
--- a/src/soc/intel/jasperlake/romstage/romstage.c
+++ b/src/soc/intel/jasperlake/romstage/romstage.c
@@ -21,10 +21,10 @@
0x8d, 0x09, 0x11, 0xcf, 0x8b, 0x9f, 0x03, 0x23 \
}
-bool __weak mainboard_get_dram_part_num(const char **part_num, size_t *len)
+const char * __weak mainboard_get_dram_part_num(void)
{
/* Default weak implementation, no need to override part number. */
- return false;
+ return NULL;
}
/* Save the DIMM information for SMBIOS table 17 */
@@ -42,7 +42,7 @@ static void save_dimm_info(void)
FSP_SMBIOS_MEMORY_INFO_GUID;
const uint8_t *serial_num;
const char *dram_part_num = NULL;
- size_t dram_part_num_len;
+ size_t dram_part_num_len = 0;
bool is_dram_part_overridden = false;
/* Locate the memory info HOB, presence validated by raminit */
@@ -66,8 +66,11 @@ static void save_dimm_info(void)
memset(mem_info, 0, sizeof(*mem_info));
/* Allow mainboard to override DRAM part number. */
- is_dram_part_overridden = mainboard_get_dram_part_num(&dram_part_num,
- &dram_part_num_len);
+ dram_part_num = mainboard_get_dram_part_num();
+ if (dram_part_num) {
+ dram_part_num_len = strlen(dram_part_num);
+ is_dram_part_overridden = true;
+ }
/* Save available DIMM information */
index = 0;
diff --git a/src/soc/intel/tigerlake/include/soc/romstage.h b/src/soc/intel/tigerlake/include/soc/romstage.h
index baa35c5216..1cffcb93ae 100644
--- a/src/soc/intel/tigerlake/include/soc/romstage.h
+++ b/src/soc/intel/tigerlake/include/soc/romstage.h
@@ -6,7 +6,7 @@
#include <fsp/api.h>
/* Provide a callback to allow mainboard to override the DRAM part number. */
-bool mainboard_get_dram_part_num(const char **part_num, size_t *len);
+const char *mainboard_get_dram_part_num(void);
void mainboard_memory_init_params(FSPM_UPD *mupd);
void systemagent_early_init(void);
void romstage_pch_init(void);
diff --git a/src/soc/intel/tigerlake/romstage/romstage.c b/src/soc/intel/tigerlake/romstage/romstage.c
index db014ea5d6..6fddbc4f44 100644
--- a/src/soc/intel/tigerlake/romstage/romstage.c
+++ b/src/soc/intel/tigerlake/romstage/romstage.c
@@ -21,10 +21,10 @@
0x8d, 0x09, 0x11, 0xcf, 0x8b, 0x9f, 0x03, 0x23 \
}
-bool __weak mainboard_get_dram_part_num(const char **part_num, size_t *len)
+const char * __weak mainboard_get_dram_part_num(void)
{
/* Default weak implementation, no need to override part number. */
- return false;
+ return NULL;
}
/* Save the DIMM information for SMBIOS table 17 */
@@ -42,7 +42,7 @@ static void save_dimm_info(void)
FSP_SMBIOS_MEMORY_INFO_GUID;
const uint8_t *serial_num;
const char *dram_part_num = NULL;
- size_t dram_part_num_len;
+ size_t dram_part_num_len = 0;
bool is_dram_part_overridden = false;
/* Locate the memory info HOB, presence validated by raminit */
@@ -66,8 +66,11 @@ static void save_dimm_info(void)
memset(mem_info, 0, sizeof(*mem_info));
/* Allow mainboard to override DRAM part number. */
- is_dram_part_overridden = mainboard_get_dram_part_num(&dram_part_num,
- &dram_part_num_len);
+ dram_part_num = mainboard_get_dram_part_num();
+ if (dram_part_num) {
+ dram_part_num_len = strlen(dram_part_num);
+ is_dram_part_overridden = true;
+ }
/* Save available DIMM information */
index = 0;