mb/prodrive/hermes: Add part numbers to SMBIOS

Adjust the EEPROM layout to account for two new fields: board part
number and product part number. In addition, put them in a Type 11
SMBIOS table (OEM Strings).

TODO: This currently stores the "raw" part numbers, should we add a
prefix to the SMBIOS strings?

Change-Id: I85fb9dc75f231004ccce2a55ebd9d7a4867fcb93
Signed-off-by: Angel Pons <th3fanbus@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/67276
Reviewed-by: Lean Sheng Tan <sheng.tan@9elements.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
Angel Pons 2022-09-01 14:41:09 +02:00 committed by Paul Fagerburg
parent 1075fef445
commit d669562663
2 changed files with 11 additions and 1 deletions

View File

@ -86,7 +86,10 @@ struct __packed eeprom_layout {
}; };
char system_serial_number[HERMES_SERIAL_NUMBER_LENGTH]; char system_serial_number[HERMES_SERIAL_NUMBER_LENGTH];
char board_serial_number[HERMES_SERIAL_NUMBER_LENGTH]; char board_serial_number[HERMES_SERIAL_NUMBER_LENGTH];
uint8_t boot_order[0x8c0]; uint8_t boot_order[0x200];
char board_part_number[HERMES_SERIAL_NUMBER_LENGTH];
char product_part_number[HERMES_SERIAL_NUMBER_LENGTH];
uint8_t unused[0x680];
union { union {
uint8_t raw_board_settings[0xf8]; uint8_t raw_board_settings[0xf8];
struct eeprom_board_settings board_settings; struct eeprom_board_settings board_settings;

View File

@ -174,6 +174,12 @@ static void mainboard_final(struct device *dev)
pmc_soc_set_afterg3_en(on); pmc_soc_set_afterg3_en(on);
} }
static void mainboard_smbios_strings(struct device *dev, struct smbios_type11 *t)
{
t->count = smbios_add_string(t->eos, eeprom_read_serial(board_part_number, "N/A"));
t->count = smbios_add_string(t->eos, eeprom_read_serial(product_part_number, "N/A"));
}
#if CONFIG(HAVE_ACPI_TABLES) #if CONFIG(HAVE_ACPI_TABLES)
static void mainboard_acpi_fill_ssdt(const struct device *dev) static void mainboard_acpi_fill_ssdt(const struct device *dev)
{ {
@ -219,6 +225,7 @@ static void mainboard_enable(struct device *dev)
mb_usb2_fp2_pwr_enable(1); mb_usb2_fp2_pwr_enable(1);
dev->ops->final = mainboard_final; dev->ops->final = mainboard_final;
dev->ops->get_smbios_strings = mainboard_smbios_strings;
#if CONFIG(HAVE_ACPI_TABLES) #if CONFIG(HAVE_ACPI_TABLES)
dev->ops->acpi_fill_ssdt = mainboard_acpi_fill_ssdt; dev->ops->acpi_fill_ssdt = mainboard_acpi_fill_ssdt;