sconfig: Allow chipset to provide a base devicetree

This change extends the devicetree override one more layer and allows
the chipset to provide the base devicetree.  This allows the chipset to
assign alias names to devices as well as set default register values.
This works for both the baseboard devicetree.cb as well as variant
overridetree.cb.

chipset.cb:
device pci 15.0 alias i2c0 off end

devicetree.cb:
device ref i2c0 on end

BUG=b:156957424

Change-Id: Ia7500a62f6211243b519424ef3834b9e7615e2fd
Signed-off-by: Duncan Laurie <dlaurie@google.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/44037
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Nico Huber <nico.h@gmx.de>
Reviewed-by: Furquan Shaikh <furquan@google.com>
diff --git a/util/sconfig/sconfig.y b/util/sconfig/sconfig.y
index d441ff8..cf71b02 100755
--- a/util/sconfig/sconfig.y
+++ b/util/sconfig/sconfig.y
@@ -37,13 +37,21 @@
 };
 
 device: DEVICE BUS NUMBER /* == devnum */ alias status {
-	$<dev>$ = new_device(cur_parent, cur_chip_instance, $<number>2, $<string>3, $<string>4, $<number>5);
+	$<dev>$ = new_device_raw(cur_parent, cur_chip_instance, $<number>2, $<string>3, $<string>4, $<number>5);
 	cur_parent = $<dev>$->last_bus;
 }
 	devicechildren END {
 	cur_parent = $<dev>6->parent;
 };
 
+device: DEVICE REFERENCE STRING status {
+	$<dev>$ = new_device_reference(cur_parent, cur_chip_instance, $<string>3, $<number>4);
+	cur_parent = $<dev>$->last_bus;
+}
+	devicechildren END {
+	cur_parent = $<dev>5->parent;
+};
+
 alias: /* empty */ {
 	$<string>$ = NULL;
 } | ALIAS STRING {