diff options
author | Angel Pons <th3fanbus@gmail.com> | 2021-09-03 16:51:40 +0200 |
---|---|---|
committer | Patrick Georgi <pgeorgi@google.com> | 2021-11-04 10:25:09 +0000 |
commit | 437da71d0a9c7f397860efd02ddb03de9fd5b874 (patch) | |
tree | 8664294850b1b7985440819f00359c00220c59fc /util/sconfig/sconfig.h | |
parent | bb03e763de0a69265976463b07dbe8226608c6ff (diff) |
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>
Diffstat (limited to 'util/sconfig/sconfig.h')
-rw-r--r-- | util/sconfig/sconfig.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/util/sconfig/sconfig.h b/util/sconfig/sconfig.h index e6bd5aadd3..5b50cc0158 100644 --- a/util/sconfig/sconfig.h +++ b/util/sconfig/sconfig.h @@ -177,6 +177,11 @@ struct device { /* SMBIOS slot length */ char *smbios_slot_length; + /* SMBIOS type41 fields */ + int smbios_instance_id_valid; + unsigned int smbios_instance_id; + const char *smbios_refdes; + /* List of field+option to probe. */ struct fw_config_probe *probe; }; @@ -203,6 +208,8 @@ void add_ioapic_info(struct bus *bus, int apicid, const char *_srcpin, void add_slot_desc(struct bus *bus, char *type, char *length, char *designation, char *data_width); +void add_smbios_dev_info(struct bus *bus, long instance_id, const char *refdes); + void yyrestart(FILE *input_file); /* Add chip data to tail of queue. */ |