summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilip Chen <philipchen@google.com>2021-07-16 12:03:41 -0700
committerCommit Bot <commit-bot@chromium.org>2021-07-19 21:34:50 +0000
commit1a1642026a41cd6d44ea4d5eedf384c4eb8c77d6 (patch)
tree16b5ca1922da7105e92db50e39eaac36fd36cdb5
parent8c4903ae22ba6bb1977dbff8a8b88c41f779a1dd (diff)
downloadchrome-ec-1a1642026a41cd6d44ea4d5eedf384c4eb8c77d6.tar.gz
herobrine: Support SKU ID
BRANCH=none BUG=b:186264627, b:193807794 TEST=build herobrine_npcx7 and herobrine_npcx9 Signed-off-by: Philip Chen <philipchen@google.com> Change-Id: If8870e33643f96658f4902d0fe26081712eb6cf7 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3035787 Reviewed-by: Alexandru M Stan <amstan@chromium.org> Commit-Queue: Philip Chen <philipchen@chromium.org> Tested-by: Philip Chen <philipchen@chromium.org>
-rw-r--r--baseboard/herobrine/baseboard.h2
-rw-r--r--board/herobrine_npcx7/board.c21
-rw-r--r--board/herobrine_npcx9/board.c21
3 files changed, 44 insertions, 0 deletions
diff --git a/baseboard/herobrine/baseboard.h b/baseboard/herobrine/baseboard.h
index ca5e73856a..bcb62e9ef4 100644
--- a/baseboard/herobrine/baseboard.h
+++ b/baseboard/herobrine/baseboard.h
@@ -48,6 +48,8 @@
#define CONFIG_MKBP_USE_GPIO
#define CONFIG_BOARD_VERSION_GPIO
+#define CONFIG_CBI_GPIO
+#define CONFIG_CRC8
#define CONFIG_POWER_BUTTON
#define CONFIG_VOLUME_BUTTONS
#define CONFIG_EMULATED_SYSRQ
diff --git a/board/herobrine_npcx7/board.c b/board/herobrine_npcx7/board.c
index 2ad97b43a5..5d4e26ea38 100644
--- a/board/herobrine_npcx7/board.c
+++ b/board/herobrine_npcx7/board.c
@@ -31,6 +31,8 @@
#include "gpio_list.h"
+static uint8_t sku_id;
+
/* Wake-up pins for hibernate */
const enum gpio_signal hibernate_wake_pins[] = {
GPIO_LID_OPEN,
@@ -120,6 +122,25 @@ const struct pwm_t pwm_channels[] = {
};
BUILD_ASSERT(ARRAY_SIZE(pwm_channels) == PWM_CH_COUNT);
+/* Read SKU ID from GPIO and initialize variables for board variants */
+static void sku_id_init(void)
+{
+ int bits[3];
+
+ bits[0] = gpio_get_ternary(GPIO_SKU_ID0);
+ bits[1] = gpio_get_ternary(GPIO_SKU_ID1);
+ bits[2] = gpio_get_ternary(GPIO_SKU_ID2);
+
+ sku_id = binary_first_base3_from_bits(bits, ARRAY_SIZE(bits));
+ CPRINTS("SKU ID: %u", sku_id);
+}
+DECLARE_HOOK(HOOK_INIT, sku_id_init, HOOK_PRIO_INIT_I2C + 1);
+
+__override uint32_t board_get_sku_id(void)
+{
+ return sku_id;
+}
+
/* Initialize board. */
static void board_init(void)
{
diff --git a/board/herobrine_npcx9/board.c b/board/herobrine_npcx9/board.c
index b0f6923ff0..2f2e59bdae 100644
--- a/board/herobrine_npcx9/board.c
+++ b/board/herobrine_npcx9/board.c
@@ -31,6 +31,8 @@
#include "gpio_list.h"
+static uint8_t sku_id;
+
/* Wake-up pins for hibernate */
const enum gpio_signal hibernate_wake_pins[] = {
GPIO_LID_OPEN,
@@ -122,6 +124,25 @@ const struct pwm_t pwm_channels[] = {
};
BUILD_ASSERT(ARRAY_SIZE(pwm_channels) == PWM_CH_COUNT);
+/* Read SKU ID from GPIO and initialize variables for board variants */
+static void sku_id_init(void)
+{
+ int bits[3];
+
+ bits[0] = gpio_get_ternary(GPIO_SKU_ID0);
+ bits[1] = gpio_get_ternary(GPIO_SKU_ID1);
+ bits[2] = gpio_get_ternary(GPIO_SKU_ID2);
+
+ sku_id = binary_first_base3_from_bits(bits, ARRAY_SIZE(bits));
+ CPRINTS("SKU ID: %u", sku_id);
+}
+DECLARE_HOOK(HOOK_INIT, sku_id_init, HOOK_PRIO_INIT_I2C + 1);
+
+__override uint32_t board_get_sku_id(void)
+{
+ return sku_id;
+}
+
/* Initialize board. */
static void board_init(void)
{