diff options
-rw-r--r-- | baseboard/grunt/baseboard.c | 2 | ||||
-rw-r--r-- | board/cerise/board.h | 1 | ||||
-rw-r--r-- | board/coral/board.c | 8 | ||||
-rw-r--r-- | common/system.c | 20 | ||||
-rw-r--r-- | include/system.h | 5 |
5 files changed, 25 insertions, 11 deletions
diff --git a/baseboard/grunt/baseboard.c b/baseboard/grunt/baseboard.c index d5761768e0..35997db8d5 100644 --- a/baseboard/grunt/baseboard.c +++ b/baseboard/grunt/baseboard.c @@ -748,7 +748,7 @@ static void cbi_init(void) */ DECLARE_HOOK(HOOK_INIT, cbi_init, HOOK_PRIO_INIT_ADC + 1); -uint32_t system_get_sku_id(void) +__override uint32_t board_get_sku_id(void) { return sku_id; } diff --git a/board/cerise/board.h b/board/cerise/board.h index 15ae4c5180..d230c71513 100644 --- a/board/cerise/board.h +++ b/board/cerise/board.h @@ -145,7 +145,6 @@ int board_get_version(void); /* returns the i2c port number of charger */ int board_get_charger_i2c(void); -int board_get_sku_id(void); #endif /* !__ASSEMBLER__ */ diff --git a/board/coral/board.c b/board/coral/board.c index e25ca20e8f..d3be3c411a 100644 --- a/board/coral/board.c +++ b/board/coral/board.c @@ -892,7 +892,7 @@ int board_get_version(void) return version; } -static void board_get_sku_id(void) +static void sku_id_init(void) { int sku_id_lower; int sku_id_higher; @@ -916,7 +916,7 @@ static void board_get_sku_id(void) } } /* This can't run until after the ADC module has been initialized */ -DECLARE_HOOK(HOOK_INIT, board_get_sku_id, HOOK_PRIO_INIT_ADC + 1); +DECLARE_HOOK(HOOK_INIT, sku_id_init, HOOK_PRIO_INIT_ADC + 1); static void print_form_factor_list(int low, int high) { @@ -981,10 +981,10 @@ DECLARE_CONSOLE_COMMAND(sku, command_sku, "<board|line0|line1|form [low high]>", "Get board id, sku, form factor"); -uint32_t system_get_sku_id(void) +__override uint32_t board_get_sku_id(void) { if (sku_id == BOARD_VERSION_UNKNOWN) - board_get_sku_id(); + sku_id_init(); return (uint32_t)sku_id; } diff --git a/common/system.c b/common/system.c index d01253fdaf..54d5378095 100644 --- a/common/system.c +++ b/common/system.c @@ -77,13 +77,10 @@ uint32_t sleep_mask; uint32_t idle_disabled; #endif -#ifdef CONFIG_HOSTCMD_AP_SET_SKUID +/* SKU ID sourced from AP */ static uint32_t ap_sku_id; -uint32_t system_get_sku_id(void) -{ - return ap_sku_id; -} +#ifdef CONFIG_HOSTCMD_AP_SET_SKUID #define AP_SKUID_SYSJUMP_TAG 0x4153 /* AS */ #define AP_SKUID_HOOK_VERSION 1 @@ -118,6 +115,19 @@ static void ap_sku_id_restore_state(void) DECLARE_HOOK(HOOK_INIT, ap_sku_id_restore_state, HOOK_PRIO_DEFAULT); #endif +__overridable uint32_t board_get_sku_id(void) +{ + return 0; +} + +uint32_t system_get_sku_id(void) +{ + if (IS_ENABLED(CONFIG_HOSTCMD_AP_SET_SKUID)) + return ap_sku_id; + + return board_get_sku_id(); +} + /** * Return the program memory address where the image `copy` begins or should * begin. In the case of external storage, the image may or may not currently diff --git a/include/system.h b/include/system.h index c721e2565a..559e97befe 100644 --- a/include/system.h +++ b/include/system.h @@ -382,6 +382,11 @@ const char *system_get_chip_revision(void); int system_get_chip_unique_id(uint8_t **id); /** + * Optional board-level function to read SKU ID. + */ +__override_proto uint32_t board_get_sku_id(void); + +/** * Optional board-level function to read board version. */ __override_proto int board_get_version(void); |