sconfig: Add function for parse+override of tree

Extract the steps to parse and override a devicetree into a function
so it can be used multiple times without copying the same logic.

Change-Id: I4e496a223757beb22e3bd678eb6115968bd32529
Signed-off-by: Duncan Laurie <dlaurie@google.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/44036
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Reviewed-by: Nick Vaccaro <nvaccaro@google.com>
This commit is contained in:
Duncan Laurie 2020-06-09 11:24:10 -07:00 committed by Tim Wawrzynczak
parent 7a066ecb41
commit cbd0bd8155
1 changed files with 14 additions and 10 deletions

View File

@ -1666,6 +1666,18 @@ static void override_devicetree(struct bus *base_parent,
}
}
static void parse_override_devicetree(const char *file, struct device *dev)
{
parse_devicetree(file, dev->bus);
if (!dev_has_children(dev)) {
fprintf(stderr, "ERROR: Override tree needs at least one device!\n");
exit(1);
}
override_devicetree(&base_root_bus, dev->bus);
}
int main(int argc, char **argv)
{
static const struct option long_options[] = {
@ -1708,16 +1720,8 @@ int main(int argc, char **argv)
parse_devicetree(base_devtree, &base_root_bus);
if (override_devtree) {
parse_devicetree(override_devtree, &override_root_bus);
if (!dev_has_children(&override_root_dev)) {
fprintf(stderr, "ERROR: Override tree needs at least one device!\n");
exit(1);
}
override_devicetree(&base_root_bus, &override_root_bus);
}
if (override_devtree)
parse_override_devicetree(override_devtree, &override_root_dev);
FILE *autogen = fopen(outputc, "w");
if (!autogen) {