summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--baseboard/grunt/baseboard.c2
-rw-r--r--board/cerise/board.h1
-rw-r--r--board/coral/board.c8
-rw-r--r--common/system.c20
-rw-r--r--include/system.h5
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);