SMBIOS/SCONFIG: Allow devtree-defined Type 41 entries
Introduce the `smbios_dev_info` devicetree keyword to specify the instance ID and RefDes (Reference Designation) of onboard devices. Example syntax: device pci 1c.0 on # PCIe Port #1 device pci 00.0 on smbios_dev_info 6 end end device pci 1c.1 on # PCIe Port #2 device pci 00.0 on smbios_dev_info 42 "PCIe-PCI Time Machine" end end The `SMBIOS_TYPE41_PROVIDED_BY_DEVTREE` Kconfig option enables using this syntax to control the generated Type 41 entries. When this option is enabled, Type 41 entries are only autogenerated for devices with a defined instance ID. This avoids having to keep track of which instance IDs have been used for every device class. Using `smbios_dev_info` when `SMBIOS_TYPE41_PROVIDED_BY_DEVTREE` is not enabled will result in a build-time error, as the syntax is meaningless in this case. This is done with preprocessor guards around the Type 41 members in `struct device` and the code which uses the guarded members. Although the preprocessor usage isn't particularly elegant, adjusting the devicetree syntax and/or grammar depending on a Kconfig option is probably even worse. Change-Id: Iecca9ada6ee1000674cb5dd7afd5c309d8e1a64b Signed-off-by: Angel Pons <th3fanbus@gmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/57370 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Tim Wawrzynczak <twawrzynczak@chromium.org> Reviewed-by: Nico Huber <nico.h@gmx.de>
This commit is contained in:
committed by
Patrick Georgi
parent
bb03e763de
commit
437da71d0a
@@ -21,7 +21,7 @@ static struct fw_config_field_bits *cur_bits;
|
||||
uint64_t number;
|
||||
}
|
||||
|
||||
%token CHIP DEVICE REGISTER ALIAS REFERENCE ASSOCIATION BOOL STATUS MANDATORY BUS RESOURCE END EQUALS HEX STRING PCI PNP I2C APIC CPU_CLUSTER CPU DOMAIN IRQ DRQ SLOT_DESC IO NUMBER SUBSYSTEMID INHERIT IOAPIC_IRQ IOAPIC PCIINT GENERIC SPI USB MMIO GPIO FW_CONFIG_TABLE FW_CONFIG_FIELD FW_CONFIG_OPTION FW_CONFIG_PROBE PIPE
|
||||
%token CHIP DEVICE REGISTER ALIAS REFERENCE ASSOCIATION BOOL STATUS MANDATORY BUS RESOURCE END EQUALS HEX STRING PCI PNP I2C APIC CPU_CLUSTER CPU DOMAIN IRQ DRQ SLOT_DESC SMBIOS_DEV_INFO IO NUMBER SUBSYSTEMID INHERIT IOAPIC_IRQ IOAPIC PCIINT GENERIC SPI USB MMIO GPIO FW_CONFIG_TABLE FW_CONFIG_FIELD FW_CONFIG_OPTION FW_CONFIG_PROBE PIPE
|
||||
%%
|
||||
devtree: { cur_parent = root_parent; } | devtree chip | devtree fw_config_table;
|
||||
|
||||
@@ -31,7 +31,7 @@ chipchild: device | chipchild_nondev;
|
||||
chipchildren: chipchildren chipchild | /* empty */ ;
|
||||
chipchildren_dev: device chipchildren | chipchild_nondev chipchildren_dev;
|
||||
|
||||
devicechildren: devicechildren device | devicechildren chip | devicechildren resource | devicechildren subsystemid | devicechildren ioapic_irq | devicechildren smbios_slot_desc | devicechildren registers | devicechildren fw_config_probe | /* empty */ ;
|
||||
devicechildren: devicechildren device | devicechildren chip | devicechildren resource | devicechildren subsystemid | devicechildren ioapic_irq | devicechildren smbios_slot_desc | devicechildren smbios_dev_info | devicechildren registers | devicechildren fw_config_probe | /* empty */ ;
|
||||
|
||||
chip: CHIP STRING /* == path */ {
|
||||
$<chip_instance>$ = new_chip_instance($<string>2);
|
||||
@@ -93,6 +93,12 @@ smbios_slot_desc: SLOT_DESC STRING STRING STRING
|
||||
smbios_slot_desc: SLOT_DESC STRING STRING
|
||||
{ add_slot_desc(cur_parent, $<string>2, $<string>3, NULL, NULL); };
|
||||
|
||||
smbios_dev_info: SMBIOS_DEV_INFO NUMBER STRING
|
||||
{ add_smbios_dev_info(cur_parent, strtol($<string>2, NULL, 0), $<string>3); };
|
||||
|
||||
smbios_dev_info: SMBIOS_DEV_INFO NUMBER
|
||||
{ add_smbios_dev_info(cur_parent, strtol($<string>2, NULL, 0), NULL); };
|
||||
|
||||
/* fw_config: firmware configuration table */
|
||||
fw_config_table: FW_CONFIG_TABLE fw_config_table_children END { };
|
||||
|
||||
|
Reference in New Issue
Block a user