static int smbios_write_type0(unsigned long *current, int handle) { struct smbios_type0 *t = (struct smbios_type0 *)*current; int len = sizeof(struct smbios_type0); memset(t, 0, sizeof(struct smbios_type0)); t->type = SMBIOS_BIOS_INFORMATION; t->handle = handle; t->length = len - 2; t->vendor = smbios_add_string(t->eos, "coreboot"); #if !IS_ENABLED(CONFIG_CHROMEOS) t->bios_release_date = smbios_add_string(t->eos, coreboot_dmi_date); t->bios_version = smbios_add_string(t->eos, smbios_mainboard_bios_version()); #else #define SPACES \ " " t->bios_release_date = smbios_add_string(t->eos, coreboot_dmi_date); #if IS_ENABLED(CONFIG_HAVE_ACPI_TABLES) u32 version_offset = (u32)smbios_string_table_len(t->eos); #endif t->bios_version = smbios_add_string(t->eos, SPACES); #if IS_ENABLED(CONFIG_HAVE_ACPI_TABLES) /* SMBIOS offsets start at 1 rather than 0 */ chromeos_get_chromeos_acpi()->vbt10 = (u32)t->eos + (version_offset - 1); #endif #endif /* CONFIG_CHROMEOS */ /* As a work around to prevent a compiler error, temporarily specify * 16 MiB flash sizes when ROM size >= 16 MiB. An update is necessary * once the SMBIOS specification addresses ROM sizes > 16 MiB. */ uint32_t rom_size = CONFIG_ROM_SIZE; rom_size = MIN(CONFIG_ROM_SIZE, 16 * MiB); t->bios_rom_size = (rom_size / 65535) - 1; t->system_bios_major_release = 4; t->bios_characteristics = BIOS_CHARACTERISTICS_PCI_SUPPORTED | BIOS_CHARACTERISTICS_SELECTABLE_BOOT | BIOS_CHARACTERISTICS_UPGRADEABLE; if (IS_ENABLED(CONFIG_CARDBUS_PLUGIN_SUPPORT)) t->bios_characteristics |= BIOS_CHARACTERISTICS_PC_CARD; if (IS_ENABLED(CONFIG_HAVE_ACPI_TABLES)) t->bios_characteristics_ext1 = BIOS_EXT1_CHARACTERISTICS_ACPI; t->bios_characteristics_ext2 = BIOS_EXT2_CHARACTERISTICS_TARGET; len = t->length + smbios_string_table_len(t->eos); *current += len; return len; }
static int smbios_write_type0(unsigned long *current, int handle) { struct smbios_type0 *t = (struct smbios_type0 *)*current; int len = sizeof(struct smbios_type0); memset(t, 0, sizeof(struct smbios_type0)); t->type = SMBIOS_BIOS_INFORMATION; t->handle = handle; t->length = len - 2; t->vendor = smbios_add_string(t->eos, "coreboot"); #if !CONFIG_CHROMEOS t->bios_release_date = smbios_add_string(t->eos, COREBOOT_DMI_DATE); t->bios_version = smbios_add_string(t->eos, smbios_mainboard_bios_version()); #else #define SPACES \ " " t->bios_release_date = smbios_add_string(t->eos, COREBOOT_DMI_DATE); u32 version_offset = (u32)smbios_string_table_len(t->eos); t->bios_version = smbios_add_string(t->eos, SPACES); /* SMBIOS offsets start at 1 rather than 0 */ vboot_data->vbt10 = (u32)t->eos + (version_offset - 1); #endif { const struct cbfs_header *header; u32 romsize = CONFIG_ROM_SIZE; header = cbfs_get_header(CBFS_DEFAULT_MEDIA); if (header != CBFS_HEADER_INVALID_ADDRESS) romsize = ntohl(header->romsize); t->bios_rom_size = (romsize / 65535) - 1; } t->system_bios_major_release = 4; t->bios_characteristics = BIOS_CHARACTERISTICS_PCI_SUPPORTED | #if CONFIG_CARDBUS_PLUGIN_SUPPORT BIOS_CHARACTERISTICS_PC_CARD | #endif BIOS_CHARACTERISTICS_SELECTABLE_BOOT | BIOS_CHARACTERISTICS_UPGRADEABLE; #if CONFIG_GENERATE_ACPI_TABLES t->bios_characteristics_ext1 = BIOS_EXT1_CHARACTERISTICS_ACPI; #endif t->bios_characteristics_ext2 = BIOS_EXT2_CHARACTERISTICS_TARGET; len = t->length + smbios_string_table_len(t->eos); *current += len; return len; }
static int smbios_write_type0(unsigned long *current, int handle) { struct smbios_type0 *t = (struct smbios_type0 *)*current; int len = sizeof(struct smbios_type0); memset(t, 0, sizeof(struct smbios_type0)); t->type = SMBIOS_BIOS_INFORMATION; t->handle = handle; t->length = len - 2; t->vendor = smbios_add_string(t->eos, "coreboot"); #if !CONFIG_CHROMEOS t->bios_release_date = smbios_add_string(t->eos, coreboot_dmi_date); t->bios_version = smbios_add_string(t->eos, smbios_mainboard_bios_version()); #else #define SPACES \ " " t->bios_release_date = smbios_add_string(t->eos, coreboot_dmi_date); #if IS_ENABLED(CONFIG_HAVE_ACPI_TABLES) u32 version_offset = (u32)smbios_string_table_len(t->eos); #endif t->bios_version = smbios_add_string(t->eos, SPACES); #if IS_ENABLED(CONFIG_HAVE_ACPI_TABLES) /* SMBIOS offsets start at 1 rather than 0 */ vboot_data->vbt10 = (u32)t->eos + (version_offset - 1); #endif #endif /* CONFIG_CHROMEOS */ t->bios_rom_size = (CONFIG_ROM_SIZE / 65535) - 1; t->system_bios_major_release = 4; t->bios_characteristics = BIOS_CHARACTERISTICS_PCI_SUPPORTED | #if CONFIG_CARDBUS_PLUGIN_SUPPORT BIOS_CHARACTERISTICS_PC_CARD | #endif BIOS_CHARACTERISTICS_SELECTABLE_BOOT | BIOS_CHARACTERISTICS_UPGRADEABLE; #if CONFIG_HAVE_ACPI_TABLES t->bios_characteristics_ext1 = BIOS_EXT1_CHARACTERISTICS_ACPI; #endif t->bios_characteristics_ext2 = BIOS_EXT2_CHARACTERISTICS_TARGET; len = t->length + smbios_string_table_len(t->eos); *current += len; return len; }