From e779523193bc61c475c3207f650bd840a808cb04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20=C5=BBygowski?= Date: Wed, 4 May 2022 14:10:45 +0200 Subject: smbios: Add API to generate SMBIOS type 43 TPM Device MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Based on DMTF SMBIOS Specification 3.1.0. Signed-off-by: Michał Żygowski Change-Id: Ia2db29f8bc4cfbc6648bb2cabad074d9ea583ca9 Reviewed-on: https://review.coreboot.org/c/coreboot/+/64048 Tested-by: build bot (Jenkins) Reviewed-by: Christian Walter --- src/arch/x86/smbios.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'src/arch/x86/smbios.c') diff --git a/src/arch/x86/smbios.c b/src/arch/x86/smbios.c index 4f8de420c3..0c1a877899 100644 --- a/src/arch/x86/smbios.c +++ b/src/arch/x86/smbios.c @@ -1108,6 +1108,29 @@ int smbios_write_type41(unsigned long *current, int *handle, return len; } +int smbios_write_type43(unsigned long *current, int *handle, const u32 vendor_id, + const u8 major_spec_ver, const u8 minor_spec_ver, + const u32 fw_ver1, const u32 fw_ver2, const char *description, + const u64 characteristics, const u32 oem_defined) +{ + struct smbios_type43 *t = smbios_carve_table(*current, SMBIOS_TPM_DEVICE, + sizeof(*t), *handle); + + t->vendor_id = vendor_id; + t->major_spec_ver = major_spec_ver; + t->minor_spec_ver = minor_spec_ver; + t->fw_ver1 = fw_ver1; + t->fw_ver2 = fw_ver2; + t->characteristics = characteristics; + t->oem_defined = oem_defined; + t->description = smbios_add_string(t->eos, description); + + const int len = smbios_full_table_len(&t->header, t->eos); + *current += len; + *handle += 1; + return len; +} + static int smbios_write_type127(unsigned long *current, int handle) { struct smbios_type127 *t = smbios_carve_table(*current, SMBIOS_END_OF_TABLE, -- cgit v1.2.3