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
|
config BOARD_GOOGLE_BASEBOARD_DEDEDE
|
||||||
def_bool n
|
def_bool n
|
||||||
select EC_GOOGLE_CHROMEEC
|
select EC_GOOGLE_CHROMEEC
|
||||||
|
select EC_GOOGLE_CHROMEEC_BOARDID
|
||||||
select EC_GOOGLE_CHROMEEC_ESPI
|
select EC_GOOGLE_CHROMEEC_ESPI
|
||||||
select HAVE_ACPI_RESUME
|
select HAVE_ACPI_RESUME
|
||||||
select HAVE_ACPI_TABLES
|
select HAVE_ACPI_TABLES
|
||||||
|
|
|
@ -8,6 +8,7 @@ romstage-$(CONFIG_CHROMEOS) += chromeos.c
|
||||||
ramstage-$(CONFIG_CHROMEOS) += chromeos.c
|
ramstage-$(CONFIG_CHROMEOS) += chromeos.c
|
||||||
ramstage-y += mainboard.c
|
ramstage-y += mainboard.c
|
||||||
ramstage-y += ec.c
|
ramstage-y += ec.c
|
||||||
|
ramstage-y += board_info.c
|
||||||
|
|
||||||
smm-$(CONFIG_HAVE_SMI_HANDLER) += smihandler.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 pad_config *variant_sleep_gpio_table(size_t *num);
|
||||||
const struct cros_gpio *variant_cros_gpios(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__ */
|
#endif /*__BASEBOARD_VARIANTS_H__ */
|
||||||
|
|
Loading…
Reference in New Issue