mb/google/dedede: Add helper functions to get board_info
Add helper functions to get board's sku_id and fw_config. Enable EC_GOOGLE_CHROMEEC_BOARDID to get board_id. Add board's SKU ID and OEM name into SMBIOS table. BUG=b:144768001 TEST=Build Test. Change-Id: Id1729e245accf5acc29307a22721362fb1ce0878 Signed-off-by: Karthikeyan Ramasubramanian <kramasub@google.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/38551 Reviewed-by: Furquan Shaikh <furquan@google.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
parent
4b1bfe6d85
commit
23e7361334
|
@ -1,6 +1,7 @@
|
|||
config BOARD_GOOGLE_BASEBOARD_DEDEDE
|
||||
def_bool n
|
||||
select EC_GOOGLE_CHROMEEC
|
||||
select EC_GOOGLE_CHROMEEC_BOARDID
|
||||
select EC_GOOGLE_CHROMEEC_ESPI
|
||||
select HAVE_ACPI_RESUME
|
||||
select HAVE_ACPI_TABLES
|
||||
|
|
|
@ -8,6 +8,7 @@ romstage-$(CONFIG_CHROMEOS) += chromeos.c
|
|||
ramstage-$(CONFIG_CHROMEOS) += chromeos.c
|
||||
ramstage-y += mainboard.c
|
||||
ramstage-y += ec.c
|
||||
ramstage-y += board_info.c
|
||||
|
||||
smm-$(CONFIG_HAVE_SMI_HANDLER) += smihandler.c
|
||||
|
||||
|
|
|
@ -0,0 +1,80 @@
|
|||
/*
|
||||
* This file is part of the coreboot project.
|
||||
*
|
||||
* Copyright 2020 The coreboot project Authors.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#include <baseboard/variants.h>
|
||||
#include <console/console.h>
|
||||
#include <ec/google/chromeec/ec.h>
|
||||
#include <smbios.h>
|
||||
#include <string.h>
|
||||
|
||||
#define SKU_UNKNOWN 0xffffffff
|
||||
#define SKU_MAX 0x7fffffff
|
||||
|
||||
static uint32_t board_info_get_sku(void)
|
||||
{
|
||||
static uint32_t sku_id = SKU_UNKNOWN;
|
||||
|
||||
if (sku_id != SKU_UNKNOWN)
|
||||
return sku_id;
|
||||
|
||||
if (google_chromeec_cbi_get_sku_id(&sku_id))
|
||||
sku_id = SKU_UNKNOWN;
|
||||
|
||||
return sku_id;
|
||||
}
|
||||
|
||||
const char *smbios_system_sku(void)
|
||||
{
|
||||
/* sku{0..2147483647} */
|
||||
static char sku_str[14];
|
||||
uint32_t sku_id = board_info_get_sku();
|
||||
|
||||
if (sku_id == SKU_UNKNOWN || sku_id > SKU_MAX) {
|
||||
printk(BIOS_ERR, "%s: Unexpected SKU ID %u\n",
|
||||
__func__, sku_id);
|
||||
return "";
|
||||
}
|
||||
|
||||
snprintf(sku_str, sizeof(sku_str), "sku%u", sku_id);
|
||||
|
||||
return sku_str;
|
||||
}
|
||||
|
||||
const char *smbios_mainboard_manufacturer(void)
|
||||
{
|
||||
static char oem_name[32];
|
||||
static const char *manuf;
|
||||
|
||||
if (manuf)
|
||||
return manuf;
|
||||
|
||||
if (google_chromeec_cbi_get_oem_name(&oem_name[0],
|
||||
ARRAY_SIZE(oem_name)) < 0) {
|
||||
printk(BIOS_ERR, "Couldn't obtain OEM name from CBI\n");
|
||||
manuf = CONFIG_MAINBOARD_SMBIOS_MANUFACTURER;
|
||||
} else {
|
||||
manuf = &oem_name[0];
|
||||
}
|
||||
|
||||
return manuf;
|
||||
}
|
||||
|
||||
int board_info_get_fw_config(uint32_t *fw_config)
|
||||
{
|
||||
uint32_t sku_id = board_info_get_sku();
|
||||
|
||||
/*
|
||||
* FW_CONFIG can potentially have all the bits set. So check the
|
||||
* sku_id to ensure that the CBI is provisioned before reading the
|
||||
* FW_CONFIG.
|
||||
*/
|
||||
if (sku_id == SKU_UNKNOWN || sku_id > SKU_MAX)
|
||||
return -1;
|
||||
|
||||
return google_chromeec_cbi_get_fw_config(fw_config);
|
||||
}
|
|
@ -20,4 +20,12 @@ const struct pad_config *variant_early_gpio_table(size_t *num);
|
|||
const struct pad_config *variant_sleep_gpio_table(size_t *num);
|
||||
const struct cros_gpio *variant_cros_gpios(size_t *num);
|
||||
|
||||
/**
|
||||
* Get board's Hardware features as defined in FW_CONFIG
|
||||
*
|
||||
* @param fw_config Address where the fw_config is stored.
|
||||
* @return 0 on success or negative integer for errors.
|
||||
*/
|
||||
int board_info_get_fw_config(uint32_t *fw_config);
|
||||
|
||||
#endif /*__BASEBOARD_VARIANTS_H__ */
|
||||
|
|
Loading…
Reference in New Issue