summaryrefslogtreecommitdiff
path: root/util/sconfig/sconfig.y
diff options
context:
space:
mode:
authorFurquan Shaikh <furquan@google.com>2018-05-31 10:33:16 -0700
committerFurquan Shaikh <furquan@google.com>2018-06-05 20:58:03 +0000
commitc56ae2ffa16fe0590af015add99354cf34f68a9b (patch)
tree5e0e582bee1cb92dbbb95cd439d549ccc21a8389 /util/sconfig/sconfig.y
parent369e1f074f7b376e815927ddfc7d8a529ba57500 (diff)
downloadcoreboot-c56ae2ffa16fe0590af015add99354cf34f68a9b.tar.xz
util/sconfig: Get rid of struct header
Now that chips and devices are treated differently in sconfig, this change gets rid of struct header and add_header function which were responsible for maintaining list of headers that need to be added to static.c. Instead, struct chip is re-factored into struct chip and struct chip_instance, where chip is a list of unique chips required by the mainboard whereas chip_instance is an instance of the chip. One chip can have multiple instances dependending upon the devices in the system. Also, struct device is updated to hold a pointer to chip instance instead of the chip structure. This unique list of chips is then used to add appropriate headers to static.c BUG=b:80081934 TEST=Verified using abuild that all boards compile successfully. Change-Id: I6fccdf7c361b4f55a831195adcda9b21932755aa Signed-off-by: Furquan Shaikh <furquan@google.com> Reviewed-on: https://review.coreboot.org/26739 Reviewed-by: Aaron Durbin <adurbin@chromium.org> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'util/sconfig/sconfig.y')
-rwxr-xr-xutil/sconfig/sconfig.y16
1 files changed, 8 insertions, 8 deletions
diff --git a/util/sconfig/sconfig.y b/util/sconfig/sconfig.y
index c289c9e26d..a355c77c56 100755
--- a/util/sconfig/sconfig.y
+++ b/util/sconfig/sconfig.y
@@ -21,12 +21,12 @@ int yylex();
void yyerror(const char *s);
static struct device *cur_parent;
-static struct chip *cur_chip;
+static struct chip_instance *cur_chip_instance;
%}
%union {
struct device *device;
- struct chip *chip;
+ struct chip_instance *chip_instance;
char *string;
int number;
}
@@ -40,16 +40,16 @@ chipchildren: chipchildren device | chipchildren chip | chipchildren registers |
devicechildren: devicechildren device | devicechildren chip | devicechildren resource | devicechildren subsystemid | devicechildren ioapic_irq | /* empty */ ;
chip: CHIP STRING /* == path */ {
- $<chip>$ = new_chip($<string>2);
- chip_enqueue_tail(cur_chip);
- cur_chip = $<chip>$;
+ $<chip_instance>$ = new_chip_instance($<string>2);
+ chip_enqueue_tail(cur_chip_instance);
+ cur_chip_instance = $<chip_instance>$;
}
chipchildren END {
- cur_chip = chip_dequeue_tail();
+ cur_chip_instance = chip_dequeue_tail();
};
device: DEVICE BUS NUMBER /* == devnum */ BOOL {
- $<device>$ = new_device(cur_parent, cur_chip, $<number>2, $<string>3, $<number>4);
+ $<device>$ = new_device(cur_parent, cur_chip_instance, $<number>2, $<string>3, $<number>4);
cur_parent = $<device>$;
}
devicechildren END {
@@ -62,7 +62,7 @@ resource: RESOURCE NUMBER /* == resnum */ EQUALS NUMBER /* == resval */
{ add_resource(cur_parent, $<number>1, strtol($<string>2, NULL, 0), strtol($<string>4, NULL, 0)); } ;
registers: REGISTER STRING /* == regname */ EQUALS STRING /* == regval */
- { add_register(cur_chip, $<string>2, $<string>4); } ;
+ { add_register(cur_chip_instance, $<string>2, $<string>4); } ;
subsystemid: SUBSYSTEMID NUMBER NUMBER
{ add_pci_subsystem_ids(cur_parent, strtol($<string>2, NULL, 16), strtol($<string>3, NULL, 16), 0); };