summaryrefslogtreecommitdiff
path: root/src/mainboard
diff options
context:
space:
mode:
Diffstat (limited to 'src/mainboard')
-rw-r--r--src/mainboard/google/kahlee/mainboard.c17
-rw-r--r--src/mainboard/google/kahlee/variants/baseboard/include/baseboard/variants.h2
-rw-r--r--src/mainboard/google/kahlee/variants/grunt/Makefile.inc2
-rw-r--r--src/mainboard/google/kahlee/variants/grunt/mainboard.c27
4 files changed, 48 insertions, 0 deletions
diff --git a/src/mainboard/google/kahlee/mainboard.c b/src/mainboard/google/kahlee/mainboard.c
index 753a83ef70..e82569e485 100644
--- a/src/mainboard/google/kahlee/mainboard.c
+++ b/src/mainboard/google/kahlee/mainboard.c
@@ -13,6 +13,7 @@
* GNU General Public License for more details.
*/
+#include <string.h>
#include <console/console.h>
#include <device/device.h>
#include <arch/acpi.h>
@@ -21,6 +22,7 @@
#include <cbmem.h>
#include <baseboard/variants.h>
#include <boardid.h>
+#include <smbios.h>
#include <soc/nvs.h>
#include <soc/pci_devs.h>
#include <soc/smi.h>
@@ -221,3 +223,18 @@ struct chip_operations mainboard_ops = {
.enable_dev = kahlee_enable,
.final = mainboard_final,
};
+
+/* Variants may override this function so see definitions in variants/ */
+uint8_t __attribute__((weak)) variant_board_sku(void)
+{
+ return 0;
+}
+
+const char *smbios_mainboard_sku(void)
+{
+ static char sku_str[7]; /* sku{0..255} */
+
+ snprintf(sku_str, sizeof(sku_str), "sku%d", variant_board_sku());
+
+ return sku_str;
+}
diff --git a/src/mainboard/google/kahlee/variants/baseboard/include/baseboard/variants.h b/src/mainboard/google/kahlee/variants/baseboard/include/baseboard/variants.h
index 83ee1190e3..e5a348a35d 100644
--- a/src/mainboard/google/kahlee/variants/baseboard/include/baseboard/variants.h
+++ b/src/mainboard/google/kahlee/variants/baseboard/include/baseboard/variants.h
@@ -24,6 +24,8 @@
const struct sci_source *get_gpe_table(size_t *num);
uint8_t variant_memory_sku(void);
+/* Return board SKU. Limited to uint8_t, so it fits into 3 decimal digits */
+uint8_t variant_board_sku(void);
int variant_mainboard_read_spd(uint8_t spdAddress, char *buf, size_t len);
int variant_get_xhci_oc_map(uint16_t *usb_oc_map);
int variant_get_ehci_oc_map(uint16_t *usb_oc_map);
diff --git a/src/mainboard/google/kahlee/variants/grunt/Makefile.inc b/src/mainboard/google/kahlee/variants/grunt/Makefile.inc
index 319ff13b77..7a4b9940df 100644
--- a/src/mainboard/google/kahlee/variants/grunt/Makefile.inc
+++ b/src/mainboard/google/kahlee/variants/grunt/Makefile.inc
@@ -14,3 +14,5 @@
#
subdirs-y += spd
+
+ramstage-y += mainboard.c
diff --git a/src/mainboard/google/kahlee/variants/grunt/mainboard.c b/src/mainboard/google/kahlee/variants/grunt/mainboard.c
new file mode 100644
index 0000000000..c873299bf1
--- /dev/null
+++ b/src/mainboard/google/kahlee/variants/grunt/mainboard.c
@@ -0,0 +1,27 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright 2018 Google LLC
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#include <ec/google/chromeec/ec.h>
+#include <baseboard/variants.h>
+
+uint8_t variant_board_sku(void)
+{
+ static int sku = -1;
+
+ if (sku == -1)
+ sku = google_chromeec_get_sku_id();
+
+ return sku;
+}