aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/arch/x86/smbios.c4
-rw-r--r--src/include/smbios.h2
-rw-r--r--src/mainboard/ocp/deltalake/ramstage.c3
3 files changed, 7 insertions, 2 deletions
diff --git a/src/arch/x86/smbios.c b/src/arch/x86/smbios.c
index a48cf43e12..9b47ff67ae 100644
--- a/src/arch/x86/smbios.c
+++ b/src/arch/x86/smbios.c
@@ -930,7 +930,7 @@ int smbios_write_type9(unsigned long *current, int *handle,
const enum slot_data_bus_bandwidth bandwidth,
const enum misc_slot_usage usage,
const enum misc_slot_length length,
- u8 slot_char1, u8 slot_char2, u8 bus, u8 dev_func)
+ const u16 id, u8 slot_char1, u8 slot_char2, u8 bus, u8 dev_func)
{
struct smbios_type9 *t = (struct smbios_type9 *)*current;
int len = sizeof(struct smbios_type9);
@@ -942,6 +942,7 @@ int smbios_write_type9(unsigned long *current, int *handle,
t->slot_designation = smbios_add_string(t->eos, name ? name : "SLOT");
t->slot_type = type;
/* TODO add slot_id supoort, will be "_SUN" for ACPI devices */
+ t->slot_id = id;
t->slot_data_bus_width = bandwidth;
t->current_usage = usage;
t->slot_length = length;
@@ -1272,6 +1273,7 @@ static int smbios_walk_device_tree_type9(struct device *dev, int *handle,
bandwidth,
usage,
length,
+ 0,
1,
0,
dev->bus->secondary,
diff --git a/src/include/smbios.h b/src/include/smbios.h
index 694e091387..e5e5df5fe3 100644
--- a/src/include/smbios.h
+++ b/src/include/smbios.h
@@ -20,7 +20,7 @@ int smbios_write_type9(unsigned long *current, int *handle,
const enum slot_data_bus_bandwidth bandwidth,
const enum misc_slot_usage usage,
const enum misc_slot_length length,
- u8 slot_char1, u8 slot_char2, u8 bus, u8 dev_func);
+ const u16 id, u8 slot_char1, u8 slot_char2, u8 bus, u8 dev_func);
enum smbios_bmc_interface_type;
int smbios_write_type38(unsigned long *current, int *handle,
const enum smbios_bmc_interface_type interface_type,
diff --git a/src/mainboard/ocp/deltalake/ramstage.c b/src/mainboard/ocp/deltalake/ramstage.c
index 211ba0f7b6..50a87e9232 100644
--- a/src/mainboard/ocp/deltalake/ramstage.c
+++ b/src/mainboard/ocp/deltalake/ramstage.c
@@ -83,6 +83,7 @@ typedef struct {
const char *slot_designator;
} slot_info;
+/* Array index + 1 would be used as Slot ID */
slot_info slotinfo[] = {
{CSTACK, SlotTypePciExpressGen3X4, SlotDataBusWidth4X, 0xE8, "SSD1_M2_Data_Drive"},
{PSTACK1, SlotTypePciExpressGen3X4, SlotDataBusWidth4X, 0x10, "SSD0_M2_Boot_Drive"},
@@ -265,12 +266,14 @@ static int create_smbios_type9(int *handle, unsigned long *current)
if (sltcap & PCI_EXP_SLTCAP_HPC)
characteristics_2 |= SMBIOS_SLOT_HOTPLUG;
+ const uint16_t slot_id = index + 1;
length += smbios_write_type9(current, handle,
slotinfo[index].slot_designator,
slotinfo[index].slot_type,
slotinfo[index].slot_data_bus_width,
slot_usage,
slot_length,
+ slot_id,
characteristics_1,
characteristics_2,
stack_busnos[slotinfo[index].stack],