[coreboot-gerrit] New patch to review for coreboot: mainboard/google/reef: add board SKU'ing support

Aaron Durbin (adurbin@chromium.org) gerrit at coreboot.org
Thu Dec 8 00:44:41 CET 2016


Aaron Durbin (adurbin at chromium.org) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/17771

-gerrit

commit e0ec54490df08e286b0e9b7893da53dce56b9642
Author: Aaron Durbin <adurbin at chromium.org>
Date:   Wed Dec 7 17:34:06 2016 -0600

    mainboard/google/reef: add board SKU'ing support
    
    There are 2 gpios on reef-like boards that can be composed
    into a SKU. Add support for identifying the SKU value using
    the base 3 gpio logic. Also export the SKU information to the
    SMBIOS type 1 table.
    
    BUG=chrome-os-partner:59887,chrome-os-partner:60494
    BRANCH=reef
    
    Change-Id: I8bb94207b0b7833d758054a817b655e248f1b239
    Signed-off-by: Aaron Durbin <adurbin at chromium.org>
---
 src/mainboard/google/reef/mainboard.c | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/src/mainboard/google/reef/mainboard.c b/src/mainboard/google/reef/mainboard.c
index 4425c01..e350df2 100644
--- a/src/mainboard/google/reef/mainboard.c
+++ b/src/mainboard/google/reef/mainboard.c
@@ -19,9 +19,12 @@
 #include <console/console.h>
 #include <device/device.h>
 #include <ec/ec.h>
+#include <gpio.h>
 #include <nhlt.h>
+#include <smbios.h>
 #include <soc/gpio.h>
 #include <soc/nhlt.h>
+#include <string.h>
 #include <vendorcode/google/chromeos/chromeos.h>
 #include <variant/ec.h>
 #include <variant/gpio.h>
@@ -41,6 +44,35 @@ static void mainboard_init(void *chip_info)
 	mainboard_ec_init();
 }
 
+/*
+ * There are 2 pins on reef-like boards that can be used for SKU'ing
+ * board differences. They each have optional stuffing for a pullup and
+ * a pulldown. This way we can generate 9 different values with the
+ * 2 pins.
+ */
+static int board_sku(void)
+{
+	static int board_sku_num = -1;
+	gpio_t board_sku_gpios[] = {
+		[1] = GPIO_17, [0] = GPIO_16,
+	};
+	const size_t num = ARRAY_SIZE(board_sku_gpios);
+
+	if (board_sku_num < 0)
+		board_sku_num = gpio_base3_value(board_sku_gpios, num);
+
+	return board_sku_num;
+}
+
+const char *smbios_mainboard_sku(void)
+{
+	static char sku_str[5]; /* sku[0-8] */
+
+	snprintf(sku_str, sizeof(sku_str), "sku%d", board_sku());
+
+	return sku_str;
+}
+
 void __attribute__((weak)) variant_nhlt_oem_overrides(const char **oem_id,
 						const char **oem_table_id,
 						uint32_t *oem_revision)



More information about the coreboot-gerrit mailing list