/* Copyright 2022 The ChromiumOS Authors * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #include "common.h" #include "console.h" #include "cros_board_info.h" #include "hooks.h" #include #define CPRINTS(format, args...) cprints(CC_SYSTEM, format, ##args) #define CPRINTF(format, args...) cprintf(CC_SYSTEM, format, ##args) static uint8_t board_id; uint8_t get_board_id(void) { return board_id; } __overridable void board_cbi_init(void) { } __overridable void board_init_fw_config(void) { } __overridable void board_init_ssfc(void) { } /* * Read CBI from I2C EEPROM and initialize variables for board variants. */ static void cbi_init(void) { uint32_t cbi_val; /* Board ID */ if (cbi_get_board_version(&cbi_val) != EC_SUCCESS || cbi_val > UINT8_MAX) CPRINTS("CBI: Read Board ID failed"); else board_id = cbi_val; CPRINTS("Board ID: %d", board_id); board_init_fw_config(); board_init_ssfc(); /* Allow the board project to make runtime changes based on CBI data */ board_cbi_init(); } DECLARE_HOOK(HOOK_INIT, cbi_init, HOOK_PRIO_FIRST);