aboutsummaryrefslogtreecommitdiff
path: root/util/sconfig/sconfig.l
diff options
context:
space:
mode:
authorAngel Pons <th3fanbus@gmail.com>2021-09-03 16:51:40 +0200
committerPatrick Georgi <pgeorgi@google.com>2021-11-04 10:25:09 +0000
commit437da71d0a9c7f397860efd02ddb03de9fd5b874 (patch)
tree8664294850b1b7985440819f00359c00220c59fc /util/sconfig/sconfig.l
parentbb03e763de0a69265976463b07dbe8226608c6ff (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.l')
-rwxr-xr-xutil/sconfig/sconfig.l1
1 files changed, 1 insertions, 0 deletions
diff --git a/util/sconfig/sconfig.l b/util/sconfig/sconfig.l
index 1111267278..0997ff6444 100755
--- a/util/sconfig/sconfig.l
+++ b/util/sconfig/sconfig.l
@@ -47,6 +47,7 @@ inherit {return(INHERIT);}
subsystemid {return(SUBSYSTEMID);}
end {return(END);}
smbios_slot_desc {return(SLOT_DESC);}
+smbios_dev_info {return(SMBIOS_DEV_INFO);}
= {return(EQUALS);}
\| {return(PIPE);}
0x[0-9a-fA-F.]+ {yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(NUMBER);}