diff options
author | Philip Chen <philipchen@google.com> | 2021-07-16 12:03:41 -0700 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-07-19 21:34:50 +0000 |
commit | 1a1642026a41cd6d44ea4d5eedf384c4eb8c77d6 (patch) | |
tree | 16b5ca1922da7105e92db50e39eaac36fd36cdb5 | |
parent | 8c4903ae22ba6bb1977dbff8a8b88c41f779a1dd (diff) | |
download | chrome-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.h | 2 | ||||
-rw-r--r-- | board/herobrine_npcx7/board.c | 21 | ||||
-rw-r--r-- | board/herobrine_npcx9/board.c | 21 |
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) { |