From d6695626631a86d9613ea7c34ff0e898fbfa443c Mon Sep 17 00:00:00 2001 From: Angel Pons Date: Thu, 1 Sep 2022 14:41:09 +0200 Subject: 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 Reviewed-on: https://review.coreboot.org/c/coreboot/+/67276 Reviewed-by: Lean Sheng Tan Tested-by: build bot (Jenkins) --- src/mainboard/prodrive/hermes/eeprom.h | 5 ++++- src/mainboard/prodrive/hermes/mainboard.c | 7 +++++++ 2 files changed, 11 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/mainboard/prodrive/hermes/eeprom.h b/src/mainboard/prodrive/hermes/eeprom.h index 2f7eac7253..ac127806bf 100644 --- a/src/mainboard/prodrive/hermes/eeprom.h +++ b/src/mainboard/prodrive/hermes/eeprom.h @@ -86,7 +86,10 @@ struct __packed eeprom_layout { }; char system_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 { uint8_t raw_board_settings[0xf8]; struct eeprom_board_settings board_settings; diff --git a/src/mainboard/prodrive/hermes/mainboard.c b/src/mainboard/prodrive/hermes/mainboard.c index 2f0de61843..bf568abf54 100644 --- a/src/mainboard/prodrive/hermes/mainboard.c +++ b/src/mainboard/prodrive/hermes/mainboard.c @@ -174,6 +174,12 @@ static void mainboard_final(struct device *dev) 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) 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); dev->ops->final = mainboard_final; + dev->ops->get_smbios_strings = mainboard_smbios_strings; #if CONFIG(HAVE_ACPI_TABLES) dev->ops->acpi_fill_ssdt = mainboard_acpi_fill_ssdt; -- cgit v1.2.3