summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/arch/x86/Makefile.inc1
-rw-r--r--src/arch/x86/smbios.c132
-rw-r--r--src/arch/x86/smbios_defaults.c139
3 files changed, 140 insertions, 132 deletions
diff --git a/src/arch/x86/Makefile.inc b/src/arch/x86/Makefile.inc
index 00690ba02e..17ab3dc9b9 100644
--- a/src/arch/x86/Makefile.inc
+++ b/src/arch/x86/Makefile.inc
@@ -255,6 +255,7 @@ ramstage-$(CONFIG_GENERATE_MP_TABLE) += mpspec.c
ramstage-$(CONFIG_GENERATE_PIRQ_TABLE) += pirq_routing.c
ramstage-y += rdrand.c
ramstage-$(CONFIG_GENERATE_SMBIOS_TABLES) += smbios.c
+ramstage-$(CONFIG_GENERATE_SMBIOS_TABLES) += smbios_defaults.c
ramstage-y += tables.c
ramstage-$(CONFIG_COOP_MULTITASKING) += thread.c
ramstage-$(CONFIG_COOP_MULTITASKING) += thread_switch.S
diff --git a/src/arch/x86/smbios.c b/src/arch/x86/smbios.c
index 1b51d903d1..8c7f92c842 100644
--- a/src/arch/x86/smbios.c
+++ b/src/arch/x86/smbios.c
@@ -205,18 +205,6 @@ void smbios_fill_dimm_manufacturer_from_id(uint16_t mod_id, struct smbios_type17
t->manufacturer = smbios_add_string(t->eos, string_buffer);
}
}
-/* this function will fill the corresponding locator */
-__weak void smbios_fill_dimm_locator(const struct dimm_info *dimm, struct smbios_type17 *t)
-{
- char locator[40];
-
- snprintf(locator, sizeof(locator), "Channel-%d-DIMM-%d",
- dimm->channel_num, dimm->dimm_num);
- t->device_locator = smbios_add_string(t->eos, locator);
-
- snprintf(locator, sizeof(locator), "BANK %d", dimm->bank_locator);
- t->bank_locator = smbios_add_string(t->eos, locator);
-}
static void trim_trailing_whitespace(char *buffer, size_t buffer_size)
{
@@ -404,11 +392,6 @@ static const char *get_bios_version(void)
return coreboot_version;
}
-__weak const char *smbios_mainboard_bios_version(void)
-{
- return NULL;
-}
-
static int smbios_write_type0(unsigned long *current, int handle)
{
struct smbios_type0 *t = (struct smbios_type0 *)*current;
@@ -458,121 +441,6 @@ static int smbios_write_type0(unsigned long *current, int handle)
return len;
}
-__weak const char *smbios_mainboard_serial_number(void)
-{
- return CONFIG_MAINBOARD_SERIAL_NUMBER;
-}
-
-__weak const char *smbios_mainboard_version(void)
-{
- return CONFIG_MAINBOARD_VERSION;
-}
-
-__weak const char *smbios_mainboard_manufacturer(void)
-{
- return CONFIG_MAINBOARD_SMBIOS_MANUFACTURER;
-}
-
-__weak const char *smbios_mainboard_product_name(void)
-{
- return CONFIG_MAINBOARD_SMBIOS_PRODUCT_NAME;
-}
-
-__weak const char *smbios_mainboard_asset_tag(void)
-{
- return "";
-}
-
-__weak u8 smbios_mainboard_feature_flags(void)
-{
- return 0;
-}
-
-__weak const char *smbios_mainboard_location_in_chassis(void)
-{
- return "";
-}
-
-__weak smbios_board_type smbios_mainboard_board_type(void)
-{
- return SMBIOS_BOARD_TYPE_UNKNOWN;
-}
-
-/*
- * System Enclosure or Chassis Types as defined in SMBIOS specification.
- * The default value is SMBIOS_ENCLOSURE_DESKTOP (0x03) but laptop,
- * convertible, or tablet enclosure will be used if the appropriate
- * system type is selected.
- */
-__weak smbios_enclosure_type smbios_mainboard_enclosure_type(void)
-{
- if (CONFIG(SYSTEM_TYPE_LAPTOP))
- return SMBIOS_ENCLOSURE_LAPTOP;
- else if (CONFIG(SYSTEM_TYPE_TABLET))
- return SMBIOS_ENCLOSURE_TABLET;
- else if (CONFIG(SYSTEM_TYPE_CONVERTIBLE))
- return SMBIOS_ENCLOSURE_CONVERTIBLE;
- else if (CONFIG(SYSTEM_TYPE_DETACHABLE))
- return SMBIOS_ENCLOSURE_DETACHABLE;
- else
- return SMBIOS_ENCLOSURE_DESKTOP;
-}
-
-__weak const char *smbios_system_serial_number(void)
-{
- return smbios_mainboard_serial_number();
-}
-
-__weak const char *smbios_system_version(void)
-{
- return smbios_mainboard_version();
-}
-
-__weak const char *smbios_system_manufacturer(void)
-{
- return smbios_mainboard_manufacturer();
-}
-
-__weak const char *smbios_system_product_name(void)
-{
- return smbios_mainboard_product_name();
-}
-
-__weak void smbios_system_set_uuid(u8 *uuid)
-{
- /* leave all zero */
-}
-
-__weak unsigned int smbios_cpu_get_max_speed_mhz(void)
-{
- return 0; /* Unknown */
-}
-
-__weak unsigned int smbios_cpu_get_current_speed_mhz(void)
-{
- return 0; /* Unknown */
-}
-
-__weak const char *smbios_system_sku(void)
-{
- return "";
-}
-
-__weak const char *smbios_chassis_version(void)
-{
- return "";
-}
-
-__weak const char *smbios_chassis_serial_number(void)
-{
- return "";
-}
-
-__weak const char *smbios_processor_serial_number(void)
-{
- return "";
-}
-
static int get_socket_type(void)
{
if (CONFIG(CPU_INTEL_SLOT_1))
diff --git a/src/arch/x86/smbios_defaults.c b/src/arch/x86/smbios_defaults.c
new file mode 100644
index 0000000000..22ce7a57cd
--- /dev/null
+++ b/src/arch/x86/smbios_defaults.c
@@ -0,0 +1,139 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#include <memory_info.h>
+#include <smbios.h>
+#include <stdint.h>
+#include <string.h>
+
+/* this function will fill the corresponding locator */
+__weak void smbios_fill_dimm_locator(const struct dimm_info *dimm, struct smbios_type17 *t)
+{
+ char locator[40];
+
+ snprintf(locator, sizeof(locator), "Channel-%d-DIMM-%d",
+ dimm->channel_num, dimm->dimm_num);
+ t->device_locator = smbios_add_string(t->eos, locator);
+
+ snprintf(locator, sizeof(locator), "BANK %d", dimm->bank_locator);
+ t->bank_locator = smbios_add_string(t->eos, locator);
+}
+
+__weak const char *smbios_mainboard_bios_version(void)
+{
+ return NULL;
+}
+
+__weak const char *smbios_mainboard_serial_number(void)
+{
+ return CONFIG_MAINBOARD_SERIAL_NUMBER;
+}
+
+__weak const char *smbios_mainboard_version(void)
+{
+ return CONFIG_MAINBOARD_VERSION;
+}
+
+__weak const char *smbios_mainboard_manufacturer(void)
+{
+ return CONFIG_MAINBOARD_SMBIOS_MANUFACTURER;
+}
+
+__weak const char *smbios_mainboard_product_name(void)
+{
+ return CONFIG_MAINBOARD_SMBIOS_PRODUCT_NAME;
+}
+
+__weak const char *smbios_mainboard_asset_tag(void)
+{
+ return "";
+}
+
+__weak u8 smbios_mainboard_feature_flags(void)
+{
+ return 0;
+}
+
+__weak const char *smbios_mainboard_location_in_chassis(void)
+{
+ return "";
+}
+
+__weak smbios_board_type smbios_mainboard_board_type(void)
+{
+ return SMBIOS_BOARD_TYPE_UNKNOWN;
+}
+
+/*
+ * System Enclosure or Chassis Types as defined in SMBIOS specification.
+ * The default value is SMBIOS_ENCLOSURE_DESKTOP (0x03) but laptop,
+ * convertible, or tablet enclosure will be used if the appropriate
+ * system type is selected.
+ */
+__weak smbios_enclosure_type smbios_mainboard_enclosure_type(void)
+{
+ if (CONFIG(SYSTEM_TYPE_LAPTOP))
+ return SMBIOS_ENCLOSURE_LAPTOP;
+ else if (CONFIG(SYSTEM_TYPE_TABLET))
+ return SMBIOS_ENCLOSURE_TABLET;
+ else if (CONFIG(SYSTEM_TYPE_CONVERTIBLE))
+ return SMBIOS_ENCLOSURE_CONVERTIBLE;
+ else if (CONFIG(SYSTEM_TYPE_DETACHABLE))
+ return SMBIOS_ENCLOSURE_DETACHABLE;
+ else
+ return SMBIOS_ENCLOSURE_DESKTOP;
+}
+
+__weak const char *smbios_system_serial_number(void)
+{
+ return smbios_mainboard_serial_number();
+}
+
+__weak const char *smbios_system_version(void)
+{
+ return smbios_mainboard_version();
+}
+
+__weak const char *smbios_system_manufacturer(void)
+{
+ return smbios_mainboard_manufacturer();
+}
+
+__weak const char *smbios_system_product_name(void)
+{
+ return smbios_mainboard_product_name();
+}
+
+__weak void smbios_system_set_uuid(u8 *uuid)
+{
+ /* leave all zero */
+}
+
+__weak unsigned int smbios_cpu_get_max_speed_mhz(void)
+{
+ return 0; /* Unknown */
+}
+
+__weak unsigned int smbios_cpu_get_current_speed_mhz(void)
+{
+ return 0; /* Unknown */
+}
+
+__weak const char *smbios_system_sku(void)
+{
+ return "";
+}
+
+__weak const char *smbios_chassis_version(void)
+{
+ return "";
+}
+
+__weak const char *smbios_chassis_serial_number(void)
+{
+ return "";
+}
+
+__weak const char *smbios_processor_serial_number(void)
+{
+ return "";
+}