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>
diff --git a/util/sconfig/main.c b/util/sconfig/main.c
index f561806..dbb266b 100644
--- a/util/sconfig/main.c
+++ b/util/sconfig/main.c
@@ -1666,6 +1666,18 @@
 	}
 }
 
+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 @@
 
 	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) {