Fix lint-stable checkin hooks on MacOS X
[coreboot.git] / util / sconfig / sconfig.y
index 3860569a95809281da9ba6daa4dd02ba86916ffb..f97850ff691495f584b8fad460c9ccf45cd8245e 100755 (executable)
@@ -21,7 +21,7 @@
 
 #include "sconfig.h"
 
-struct device *cur_parent, *cur_bus;
+static struct device *cur_parent, *cur_bus;
 
 %}
 %union {
@@ -29,32 +29,31 @@ struct device *cur_parent, *cur_bus;
        char *string;
        int number;
 }
-%token CHIP DEVICE REGISTER BOOL BUS RESOURCE END EQUALS HEX STRING PCI PNP I2C APIC APIC_CLUSTER PCI_DOMAIN IRQ DRQ IO NUMBER
-%%
-devtree: devchip { postprocess_devtree(); } ;
 
-devchip: chip | device ;
+%token CHIP DEVICE REGISTER BOOL BUS RESOURCE END EQUALS HEX STRING PCI PNP I2C APIC APIC_CLUSTER PCI_DOMAIN IRQ DRQ IO NUMBER SUBSYSTEMID INHERIT
+%%
+devtree: { cur_parent = cur_bus = head; } chip { postprocess_devtree(); } ;
 
-devices: devices devchip | devices registers | ;
+chipchildren: chipchildren device | chipchildren chip | chipchildren registers | /* empty */ ;
 
-devicesorresources: devicesorresources devchip | devicesorresources resource | ;
+devicechildren: devicechildren device | devicechildren chip | devicechildren resource | devicechildren subsystemid | /* empty */ ;
 
 chip: CHIP STRING /* == path */ {
-       $<device>$ = new_chip($<string>2);
+       $<device>$ = new_chip(cur_parent, cur_bus, $<string>2);
        cur_parent = $<device>$;
 }
-       devices END {
+       chipchildren END {
        cur_parent = $<device>3->parent;
        fold_in($<device>3);
        add_header($<device>3);
 };
 
 device: DEVICE BUS NUMBER /* == devnum */ BOOL {
-       $<device>$ = new_device($<number>2, $<string>3, $<number>4);
+       $<device>$ = new_device(cur_parent, cur_bus, $<number>2, $<string>3, $<number>4);
        cur_parent = $<device>$;
        cur_bus = $<device>$;
 }
-       devicesorresources END {
+       devicechildren END {
        cur_parent = $<device>5->parent;
        cur_bus = $<device>5->bus;
        fold_in($<device>5);
@@ -62,9 +61,16 @@ device: DEVICE BUS NUMBER /* == devnum */ BOOL {
 };
 
 resource: RESOURCE NUMBER /* == resnum */ EQUALS NUMBER /* == resval */
-       { add_resource($<number>1, strtol($<string>2, NULL, 0), strtol($<string>4, NULL, 0)); } ;
+       { 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($<string>2, $<string>4); } ;
+       { add_register(cur_parent, $<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); };
+
+subsystemid: SUBSYSTEMID NUMBER NUMBER INHERIT
+       { add_pci_subsystem_ids(cur_parent, strtol($<string>2, NULL, 16), strtol($<string>3, NULL, 16), 1); };
+
 
 %%