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],