aboutsummaryrefslogtreecommitdiff
path: root/src/vendorcode/google/chromeos/dram_part_num_override.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/vendorcode/google/chromeos/dram_part_num_override.c')
-rw-r--r--src/vendorcode/google/chromeos/dram_part_num_override.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/vendorcode/google/chromeos/dram_part_num_override.c b/src/vendorcode/google/chromeos/dram_part_num_override.c
new file mode 100644
index 0000000000..d624e13c7e
--- /dev/null
+++ b/src/vendorcode/google/chromeos/dram_part_num_override.c
@@ -0,0 +1,31 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#include <console/console.h>
+#include <ec/google/chromeec/ec.h>
+#include <memory_info.h>
+
+const char *mainboard_get_dram_part_num(void)
+{
+ static char part_num_store[DIMM_INFO_PART_NUMBER_SIZE];
+ static enum {
+ PART_NUM_NOT_READ,
+ PART_NUM_AVAILABLE,
+ PART_NUM_NOT_IN_CBI,
+ } part_num_state = PART_NUM_NOT_READ;
+
+ if (part_num_state == PART_NUM_NOT_READ) {
+ if (google_chromeec_cbi_get_dram_part_num(part_num_store,
+ sizeof(part_num_store)) < 0) {
+ printk(BIOS_ERR,
+ "ERROR: Couldn't obtain DRAM part number from CBI\n");
+ part_num_state = PART_NUM_NOT_IN_CBI;
+ } else {
+ part_num_state = PART_NUM_AVAILABLE;
+ }
+ }
+
+ if (part_num_state == PART_NUM_NOT_IN_CBI)
+ return NULL;
+
+ return part_num_store;
+}