util/sconfig: Remove unused ioapic and irq keywords

Ioapic information in the devicetree was only used to set up mptables
but this generic driver was removed (ca5a793 drivers/generic/ioapic:
Drop poor implementation).

This removes the unused remainders from mainboard devicetrees.
Remove ioapic setup from sconfig.

Change-Id: Ib3fef0bf923ab3f02f3aeed2e55cf662a3dc3a1b
Signed-off-by: Arthur Heymans <arthur@aheymans.xyz>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/71789
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Lean Sheng Tan <sheng.tan@9elements.com>
diff --git a/src/include/device/device.h b/src/include/device/device.h
index 831141f..0b67d3d 100644
--- a/src/include/device/device.h
+++ b/src/include/device/device.h
@@ -101,13 +101,6 @@
  * combination:
  */
 
-struct pci_irq_info {
-	unsigned int	ioapic_irq_pin;
-	unsigned int	ioapic_src_pin;
-	unsigned int	ioapic_dst_id;
-	unsigned int    ioapic_flags;
-};
-
 struct device {
 	DEVTREE_CONST struct bus *bus;	/* bus this device is on, for bridge
 					 * devices, it is the up stream bus */
@@ -144,7 +137,6 @@
 	DEVTREE_CONST struct bus *link_list;
 
 #if !DEVTREE_EARLY
-	struct pci_irq_info pci_irq_info[4];
 	struct device_operations *ops;
 	struct chip_operations *chip_ops;
 	const char *name;
diff --git a/src/mainboard/asus/p5gc-mx/devicetree.cb b/src/mainboard/asus/p5gc-mx/devicetree.cb
index c464222..3518a01 100644
--- a/src/mainboard/asus/p5gc-mx/devicetree.cb
+++ b/src/mainboard/asus/p5gc-mx/devicetree.cb
@@ -11,11 +11,9 @@
 		end
 		device pci 01.0 on # i945 PCIe root port
 			subsystemid 0x1458 0x5000
-			ioapic_irq 2 INTA 0x10
 		end
 		device pci 02.0 on  # vga controller
 			subsystemid 0x1458 0xd000
-			ioapic_irq 2 INTA 0x10
 		end
 
 		chip southbridge/intel/i82801gx
@@ -38,34 +36,21 @@
 			# SuperIO Power Management Events
 			register "gen1_dec" = "0x00040291"
 
-			device pci 1b.0 on # High Definition Audio
-				ioapic_irq 2 INTA 0x10
-			end
+			device pci 1b.0 on end # High Definition Audio
 			device pci 1c.0 on end # PCIe
 			device pci 1c.1 on end # PCIe
 			device pci 1c.2 off end # PCIe port 3
 			device pci 1c.3 off end # PCIe port 4
-			device pci 1d.0 on # USB UHCI
-				ioapic_irq 2 INTA 0x10
-			end
-			device pci 1d.1 on # USB UHCI
-				ioapic_irq 2 INTB 0x11
-			end
-			device pci 1d.2 on # USB UHCI
-				ioapic_irq 2 INTC 0x12
-			end
-			device pci 1d.3 on # USB UHCI
-				ioapic_irq 2 INTD 0x13
-			end
-			device pci 1d.7 on # USB2 EHCI
-				ioapic_irq 2 INTA 0x10
-			end
+			device pci 1d.0 on end # USB UHCI
+			device pci 1d.1 on end # USB UHCI
+			device pci 1d.2 on end # USB UHCI
+			device pci 1d.3 on end # USB UHCI
+			device pci 1d.7 on end # USB2 EHCI
 			device pci 1e.0 on end # PCI bridge
 			device pci 1e.2 off end # AC'97 Audio
 			device pci 1e.3 off end # AC'97 Modem
 
 			device pci 1f.0 on # LPC bridge
-				ioapic_irq 2 INTA 0x10
 				chip superio/winbond/w83627dhg
 					device pnp 2e.0 on # Floppy
 						io 0x60 = 0x3f0
@@ -116,15 +101,9 @@
 					device pnp 2e.c on end # PECI, SST
 				end
 			end
-			device pci 1f.1 on # IDE
-				ioapic_irq 2 INTB 0x11
-			end
-			device pci 1f.2 on # SATA
-				ioapic_irq 2 INTC 0x12
-			end
-			device pci 1f.3 on # SMBus
-				ioapic_irq 2 INTD 0x13
-			end
+			device pci 1f.1 on end # IDE
+			device pci 1f.2 on end # SATA
+			device pci 1f.3 on end # SMBus
 		end
 	end
 end
diff --git a/src/mainboard/gigabyte/ga-945gcm-s2l/devicetree.cb b/src/mainboard/gigabyte/ga-945gcm-s2l/devicetree.cb
index 0aa91b2..a903347 100644
--- a/src/mainboard/gigabyte/ga-945gcm-s2l/devicetree.cb
+++ b/src/mainboard/gigabyte/ga-945gcm-s2l/devicetree.cb
@@ -14,11 +14,9 @@
 		end
 		device pci 01.0 on # i945 PCIe root port
 			subsystemid 0x1458 0x5000
-			ioapic_irq 2 INTA 0x10
 		end
 		device pci 02.0 on  # vga controller
 			subsystemid 0x1458 0xd000
-			ioapic_irq 2 INTA 0x10
 		end
 
 		chip southbridge/intel/i82801gx
@@ -63,36 +61,23 @@
 			register "gen1_dec" = "0x000c0801" # ???
 			register "gen2_dec" = "0x00040291" # Environment Controller
 
-			device pci 1b.0 on # High Definition Audio
-				ioapic_irq 2 INTA 0x10
-			end
+			device pci 1b.0 on end # High Definition Audio
 			device pci 1c.0 on end # PCIe
 			device pci 1c.1 on end # PCIe
 			device pci 1c.2 off end # PCIe port 3
 			device pci 1c.3 off end # PCIe port 4
 			device pci 1c.4 off end # PCIe port 5
 			device pci 1c.5 off end # PCIe port 6
-			device pci 1d.0 on # USB UHCI
-				ioapic_irq 2 INTA 0x10
-			end
-			device pci 1d.1 on # USB UHCI
-				ioapic_irq 2 INTB 0x11
-			end
-			device pci 1d.2 on # USB UHCI
-				ioapic_irq 2 INTC 0x12
-			end
-			device pci 1d.3 on # USB UHCI
-				ioapic_irq 2 INTD 0x13
-			end
-			device pci 1d.7 on # USB2 EHCI
-				ioapic_irq 2 INTA 0x10
-			end
+			device pci 1d.0 on end # USB UHCI
+			device pci 1d.1 on end # USB UHCI
+			device pci 1d.2 on end # USB UHCI
+			device pci 1d.3 on end # USB UHCI
+			device pci 1d.7 on end # USB2 EHCI
 			device pci 1e.0 on end # PCI bridge
 			device pci 1e.2 off end # AC'97 Audio
 			device pci 1e.3 off end # AC'97 Modem
 
 			device pci 1f.0 on # LPC bridge
-				ioapic_irq 2 INTA 0x10
 				chip superio/ite/it8718f # Super I/O
 					register "TMPIN1.mode" = "THERMAL_RESISTOR"
 					register "TMPIN2.mode" = "THERMAL_RESISTOR"
@@ -158,15 +143,9 @@
 					end
 				end
 			end
-			device pci 1f.1 on # IDE
-				ioapic_irq 2 INTB 0x11
-			end
-			device pci 1f.2 on # SATA
-				ioapic_irq 2 INTC 0x12
-			end
-			device pci 1f.3 on # SMBus
-				ioapic_irq 2 INTD 0x13
-			end
+			device pci 1f.1 on end # IDE
+			device pci 1f.2 on end # SATA
+			device pci 1f.3 on end # SMBus
 		end
 	end
 end
diff --git a/src/mainboard/lenovo/t400/variants/r500/overridetree.cb b/src/mainboard/lenovo/t400/variants/r500/overridetree.cb
index cb059c6..f8291d8 100644
--- a/src/mainboard/lenovo/t400/variants/r500/overridetree.cb
+++ b/src/mainboard/lenovo/t400/variants/r500/overridetree.cb
@@ -32,7 +32,6 @@
 			end
 			device pci 1f.3 on # SMBus
 				subsystemid 0x17aa 0x20f9
-				ioapic_irq 2 INTC 0x12
 				# eeprom, 4 virtual devices, same chip
 				chip drivers/i2c/at24rf08c
 					device i2c 54 on end
diff --git a/src/mainboard/lenovo/t400/variants/t400/overridetree.cb b/src/mainboard/lenovo/t400/variants/t400/overridetree.cb
index 25a4773..a1b4f9d 100644
--- a/src/mainboard/lenovo/t400/variants/t400/overridetree.cb
+++ b/src/mainboard/lenovo/t400/variants/t400/overridetree.cb
@@ -25,7 +25,6 @@
 			end
 			device pci 1f.3 on # SMBus
 				subsystemid 0x17aa 0x20f9
-				ioapic_irq 2 INTC 0x12
 				# eeprom, 8 virtual devices, same chip
 				chip drivers/i2c/at24rf08c
 					device i2c 54 on end
diff --git a/util/sconfig/lex.yy.c_shipped b/util/sconfig/lex.yy.c_shipped
index 8d26db5..3fc7ddc 100644
--- a/util/sconfig/lex.yy.c_shipped
+++ b/util/sconfig/lex.yy.c_shipped
@@ -349,8 +349,8 @@
 	(yy_hold_char) = *yy_cp; \
 	*yy_cp = '\0'; \
 	(yy_c_buf_p) = yy_cp;
-#define YY_NUM_RULES 51
-#define YY_END_OF_BUFFER 52
+#define YY_NUM_RULES 48
+#define YY_END_OF_BUFFER 49
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -358,31 +358,30 @@
 	flex_int32_t yy_verify;
 	flex_int32_t yy_nxt;
 	};
-static const flex_int16_t yy_accept[209] =
+static const flex_int16_t yy_accept[197] =
     {   0,
-        0,    0,   52,   50,    1,    3,   50,   50,   50,   45,
-       45,   42,   46,   50,   46,   46,   46,   46,   46,   50,
-       50,   50,   50,   50,   50,   50,   50,   50,   43,   50,
-        1,    3,   50,    0,   50,   50,    0,    2,   45,   46,
-       50,   50,   50,   10,   50,   50,   46,   50,   50,   50,
-       50,   50,   50,   50,   50,   50,   50,   35,   50,   50,
-       50,   50,   50,   16,   50,   50,   50,   50,   50,   50,
-       50,   50,   50,   49,   49,   50,    0,   44,   50,   50,
-       50,   25,   50,   50,   34,   39,   50,   50,   50,   50,
-       50,   23,   50,   50,   33,   50,   50,   50,   17,    7,
+        0,    0,   49,   47,    1,    3,   47,   47,   47,   43,
+       43,   40,   44,   44,   44,   44,   44,   44,   47,   47,
+       47,   47,   47,   47,   47,   47,   47,   41,   47,    1,
+        3,   47,    0,   47,   47,    0,    2,   43,   44,   47,
+       47,   10,   47,   47,   44,   47,   47,   47,   47,   47,
+       47,   47,   47,   47,   47,   34,   47,   47,   47,   47,
+       47,   16,   47,   47,   47,   47,   47,   47,   47,   47,
+       47,   46,   46,   47,    0,   42,   47,   47,   24,   47,
+       47,   33,   37,   47,   47,   47,   47,   47,   22,   47,
+       32,   47,   47,   47,   17,    7,   47,   20,   21,   47,
 
-       50,   20,   22,   50,    9,   50,   50,   29,   50,   30,
-        8,   50,    0,   47,   50,    4,   50,   50,   50,   50,
-       50,   50,   31,   50,   50,   50,   50,   32,   28,   50,
-       50,   50,   50,   50,   48,   48,    6,   50,   50,   50,
-       13,   50,   50,   50,   50,   50,   50,   50,   15,   50,
-       50,   50,   50,    5,   26,   50,   50,   18,   50,   21,
-       50,   14,   50,   50,   50,   50,   50,   27,   37,   50,
-       50,   50,   50,   50,   50,   50,   50,   50,   11,   50,
-       50,   50,   50,   12,   50,   19,   50,   50,   50,   50,
-       36,   50,   50,   50,   24,   50,   50,   38,   50,   50,
+        9,   47,   47,   28,   47,   29,    8,   47,    0,   47,
+        4,   47,   47,   47,   47,   47,   47,   30,   47,   47,
+       47,   31,   27,   47,   47,   47,   47,   47,   45,   45,
+        6,   47,   47,   47,   13,   47,   47,   47,   47,   47,
+       47,   15,   47,   47,   47,   47,    5,   25,   47,   47,
+       18,   47,   47,   14,   47,   47,   47,   47,   47,   26,
+       35,   47,   47,   47,   47,   47,   47,   47,   11,   47,
+       47,   47,   47,   12,   19,   47,   47,   47,   47,   47,
+       47,   47,   23,   47,   47,   36,   47,   47,   47,   47,
+       47,   47,   39,   47,   38,    0
 
-       50,   50,   50,   50,   41,   50,   40,    0
     } ;
 
 static const YY_CHAR yy_ec[256] =
@@ -393,14 +392,14 @@
         1,    2,    1,    5,    6,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    7,    1,    8,    7,    9,
         7,    7,    7,    7,    7,    7,    7,    1,    1,    1,
-       10,    1,    1,    1,   11,   11,   11,   11,   12,   12,
-        1,    1,   13,    1,    1,    1,    1,   14,    1,    1,
-        1,    1,    1,   15,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,   16,    1,   17,   18,   19,   20,
+       10,    1,    1,    1,   11,   11,   11,   11,   11,   11,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,   12,    1,   13,   14,   15,   16,
 
-       21,   22,   23,   24,   25,    1,    1,   26,   27,   28,
-       29,   30,   31,   32,   33,   34,   35,   36,   37,   38,
-       39,    1,    1,   40,    1,    1,    1,    1,    1,    1,
+       17,   18,   19,   20,   21,    1,    1,   22,   23,   24,
+       25,   26,   27,   28,   29,   30,   31,   32,   33,   34,
+       35,    1,    1,   36,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -417,148 +416,142 @@
         1,    1,    1,    1,    1
     } ;
 
-static const YY_CHAR yy_meta[41] =
+static const YY_CHAR yy_meta[37] =
     {   0,
         1,    2,    2,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1
+        1,    1,    1,    1,    1,    1
     } ;
 
-static const flex_int16_t yy_base[216] =
+static const flex_int16_t yy_base[204] =
     {   0,
-        0,    0,  282,    0,  279,  283,  277,   39,   43,   40,
-      241,    0,   46,  264,   56,   60,   64,   67,   72,   56,
-      252,   74,   71,   77,   82,  255,   81,  242,    0,    0,
-      272,  283,  110,  268,  115,  119,  269,  283,    0,  116,
-      119,  256,  245,    0,  244,  233,  125,  240,  235,  245,
-      243,  247,  234,  236,  240,  240,  234,  240,  225,  227,
-      229,  228,  230,    0,  109,  226,  220,  220,  122,  230,
-      222,  228,  128,    0,  283,  145,  240,    0,  233,  226,
-      212,  225,  215,  222,    0,    0,  212,  218,  215,  206,
-      214,    0,  212,  202,    0,  211,  201,  200,    0,    0,
+        0,    0,  265,    0,  262,  266,  260,   35,   39,   36,
+      228,    0,   48,   51,   55,   75,   61,   58,   22,  240,
+       62,   81,   75,   74,  243,   82,  230,    0,    0,  256,
+      266,  104,  252,  109,   74,  253,  266,    0,  108,  111,
+      234,    0,  233,  222,  123,  229,  224,  234,  232,  236,
+      223,  225,  229,  229,  223,    0,  215,  217,  219,  218,
+      220,    0,   66,  216,  210,  210,  115,  220,  212,  218,
+      121,    0,  266,  134,  226,    0,  217,  203,  216,  206,
+      213,    0,    0,  203,  209,  206,  197,  205,    0,  203,
+        0,  203,  193,  192,    0,    0,  195,    0,    0,  201,
 
-      203,    0,    0,  209,    0,  201,  200,    0,  191,    0,
-        0,  218,  217,    0,  188,    0,  201,  200,  193,  197,
-      187,  183,    0,  193,  181,  187,  194,    0,    0,  181,
-      188,  175,  178,  167,    0,  283,    0,  179,  183,  175,
-        0,  174,  176,  172,  174,  179,  163,  168,    0,  161,
-      161,  160,  157,    0,    0,  169,  171,    0,  155,  172,
-      158,    0,  165,  169,  150,  150,  157,    0,    0,  156,
-      148,  147,   23,  157,  143,  153,  143,  135,    0,  139,
-      133,  131,  136,    0,  125,    0,  119,  125,  128,  120,
-        0,  135,  101,  109,    0,   94,   88,    0,   72,   74,
+        0,  193,  192,    0,  183,    0,    0,  206,  205,  180,
+        0,  193,  192,  185,  189,  179,  175,    0,  185,  173,
+      187,    0,    0,  174,  181,  168,  171,  160,    0,  266,
+        0,  172,  176,  168,    0,  167,  169,  165,  167,  157,
+      162,    0,  155,  155,  154,  151,    0,    0,  163,  165,
+        0,  149,  153,    0,  160,  164,  145,  145,  152,    0,
+        0,  144,  143,   45,  153,  139,  149,  119,    0,  136,
+      130,  128,  133,    0,    0,  117,  123,  126,  118,  133,
+      114,  127,    0,  121,  129,    0,  116,  107,  103,   93,
+       63,   49,    0,   57,    0,  266,   45,  155,  157,  159,
 
-       70,   66,   49,   37,    0,   47,    0,  283,   49,  161,
-      163,  165,  167,  169,  171
+      161,  163,  165
     } ;
 
-static const flex_int16_t yy_def[216] =
+static const flex_int16_t yy_def[204] =
     {   0,
-      208,    1,  208,  209,  208,  208,  209,  210,  211,  209,
-       10,  209,   10,  209,   10,   10,   10,   10,   10,  209,
-      209,  209,  209,  209,  209,  209,  209,  209,  209,  209,
-      208,  208,  210,  212,  213,  211,  214,  208,   10,   10,
-       10,  209,  209,  209,  209,  209,   10,  209,  209,  209,
-      209,  209,  209,  209,  209,  209,  209,  209,  209,  209,
-      209,  209,  209,  209,  209,  209,  209,  209,  209,  209,
-      209,  209,  209,  209,  208,  213,  215,   41,  209,  209,
-      209,  209,  209,  209,  209,  209,  209,  209,  209,  209,
-      209,  209,  209,  209,  209,  209,  209,  209,  209,  209,
+      196,    1,  196,  197,  196,  196,  197,  198,  199,  197,
+       10,  197,   10,   10,   10,   10,   10,   10,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  196,
+      196,  198,  200,  201,  199,  202,  196,   10,   10,   10,
+      197,  197,  197,  197,   10,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  196,  201,  203,   40,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
 
-      209,  209,  209,  209,  209,  209,  209,  209,  209,  209,
-      209,  209,  208,  209,  209,  209,  209,  209,  209,  209,
-      209,  209,  209,  209,  209,  209,  209,  209,  209,  209,
-      209,  209,  209,  209,  209,  208,  209,  209,  209,  209,
-      209,  209,  209,  209,  209,  209,  209,  209,  209,  209,
-      209,  209,  209,  209,  209,  209,  209,  209,  209,  209,
-      209,  209,  209,  209,  209,  209,  209,  209,  209,  209,
-      209,  209,  209,  209,  209,  209,  209,  209,  209,  209,
-      209,  209,  209,  209,  209,  209,  209,  209,  209,  209,
-      209,  209,  209,  209,  209,  209,  209,  209,  209,  209,
+      197,  197,  197,  197,  197,  197,  197,  197,  196,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  196,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,    0,  196,  196,  196,  196,
 
-      209,  209,  209,  209,  209,  209,  209,    0,  208,  208,
-      208,  208,  208,  208,  208
+      196,  196,  196
     } ;
 
-static const flex_int16_t yy_nxt[324] =
+static const flex_int16_t yy_nxt[303] =
     {   0,
         4,    5,    6,    7,    8,    9,   10,   11,   10,   12,
-       13,   13,   14,    4,    4,    4,   15,   13,   16,   17,
-       18,   19,   20,   21,   22,    4,   23,    4,   24,   25,
-        4,   26,   27,    4,   28,    4,    4,    4,    4,   29,
-       34,   34,  180,   35,   37,   38,   39,   39,   39,   30,
-       40,   40,   40,   40,   40,  181,   40,   40,   40,   40,
-       40,   40,   40,   40,   40,  207,   40,   40,   40,  206,
-       40,   40,   40,   40,   40,   40,   53,  205,   40,   40,
-       40,   43,   56,   45,   47,   54,  204,   60,   44,   46,
-       61,  203,   48,  202,   50,   49,   51,   62,   63,  201,
+       13,    4,   14,   13,   15,   16,   17,   18,   19,   20,
+       21,    4,   22,    4,   23,   24,    4,   25,   26,    4,
+       27,    4,    4,    4,    4,   28,   33,   33,   51,   34,
+       36,   37,   38,   38,   38,   29,   39,   52,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+      170,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       54,  195,   41,  171,   43,   36,   37,  194,   49,   42,
+       44,   39,   39,   39,   48,   55,   56,  193,   64,   57,
+       50,   45,   61,   58,   96,   97,   59,   65,   62,   46,
 
-       66,   57,   58,  200,   64,   59,   65,   70,   52,   67,
-       71,   34,   34,   68,   74,   72,   77,   77,  199,   30,
-       37,   38,   40,   40,   40,   78,   78,   78,  198,   78,
-       78,   40,   40,   40,  197,   78,   78,   78,   78,   78,
-       78,  100,  101,  105,  106,  110,   77,   77,  111,  112,
-      196,  195,  194,  193,  192,  191,  190,  189,  188,  187,
-       83,   33,   33,   36,   36,   34,   34,   76,   76,   37,
-       37,   77,   77,  186,  185,  184,  183,  182,  179,  178,
-      177,  176,  175,  174,  173,  172,  171,  170,  169,  168,
-      167,  166,  165,  164,  163,  162,  161,  160,  159,  158,
+       63,   66,   47,   60,   68,   33,   33,   69,   72,  192,
+       75,   75,   70,   29,   39,   39,   39,   76,   76,   76,
+      191,   76,  190,   76,   76,   76,   76,   76,   76,   39,
+       39,   39,  101,  102,  106,   75,   75,  107,  108,  189,
+      188,  187,  186,  185,  184,  183,  182,  181,  180,  179,
+      178,  177,  176,  175,   80,   32,   32,   35,   35,   33,
+       33,   74,   74,   36,   36,   75,   75,  174,  173,  172,
+      169,  168,  167,  166,  165,  164,  163,  162,  161,  160,
+      159,  158,  157,  156,  155,  154,  153,  152,  151,  150,
+      149,  148,  147,  146,  145,  144,  143,  142,  141,  140,
 
-      157,  156,  155,  154,  153,  152,  151,  150,  149,  148,
-      147,  146,  145,  144,  143,  142,  141,  140,  139,  138,
-      137,  136,  135,  134,  133,  132,  131,  130,  129,  128,
-      127,  126,  125,  124,  123,  122,  121,  120,  119,  118,
-      117,  116,  115,  114,  113,  109,  108,  107,  104,  103,
-      102,   99,   98,   97,   96,   95,   94,   93,   92,   91,
-       90,   89,   88,   87,   86,   85,   84,   82,   81,   80,
-       79,   38,   75,   31,   73,   69,   55,   42,   41,   32,
-       31,  208,    3,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
+      139,  138,  137,  136,  135,  134,  133,  132,  131,  130,
+      129,  128,  127,  126,  125,  124,  123,  122,  121,  120,
+      119,  118,  117,  116,  115,  114,  113,  112,  111,  110,
+      109,  105,  104,  103,  100,   99,   98,   95,   94,   93,
+       92,   91,   90,   89,   88,   87,   86,   85,   84,   83,
+       82,   81,   79,   78,   77,   37,   73,   30,   71,   67,
+       53,   40,   31,   30,  196,    3,  196,  196,  196,  196,
+      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
+      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
+      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
 
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208
+      196,  196
     } ;
 
-static const flex_int16_t yy_chk[324] =
+static const flex_int16_t yy_chk[303] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        8,    8,  173,    8,    9,    9,   10,   10,   10,  209,
-       10,   10,   13,   13,   13,  173,   10,   10,   10,   10,
-       10,   10,   15,   15,   15,  206,   16,   16,   16,  204,
-       17,   17,   17,   18,   18,   18,   20,  203,   19,   19,
-       19,   15,   22,   16,   17,   20,  202,   23,   15,   16,
-       23,  201,   17,  200,   18,   17,   19,   23,   24,  199,
+        1,    1,    1,    1,    1,    1,    8,    8,   19,    8,
+        9,    9,   10,   10,   10,  197,   10,   19,   10,   10,
+       10,   10,   10,   10,   13,   13,   13,   14,   14,   14,
+      164,   15,   15,   15,   18,   18,   18,   17,   17,   17,
+       21,  194,   14,  164,   15,   35,   35,  192,   18,   14,
+       15,   16,   16,   16,   17,   21,   21,  191,   24,   21,
+       18,   16,   23,   22,   63,   63,   22,   24,   23,   16,
 
-       25,   22,   22,  197,   24,   22,   24,   27,   19,   25,
-       27,   33,   33,   25,   33,   27,   35,   35,  196,   35,
-       36,   36,   40,   40,   40,   41,   41,   41,  194,   41,
-       41,   47,   47,   47,  193,   41,   41,   41,   41,   41,
-       41,   65,   65,   69,   69,   73,   76,   76,   73,   76,
-      192,  190,  189,  188,  187,  185,  183,  182,  181,  180,
-       47,  210,  210,  211,  211,  212,  212,  213,  213,  214,
-      214,  215,  215,  178,  177,  176,  175,  174,  172,  171,
-      170,  167,  166,  165,  164,  163,  161,  160,  159,  157,
-      156,  153,  152,  151,  150,  148,  147,  146,  145,  144,
+       23,   24,   16,   22,   26,   32,   32,   26,   32,  190,
+       34,   34,   26,   34,   39,   39,   39,   40,   40,   40,
+      189,   40,  188,   40,   40,   40,   40,   40,   40,   45,
+       45,   45,   67,   67,   71,   74,   74,   71,   74,  187,
+      185,  184,  182,  181,  180,  179,  178,  177,  176,  173,
+      172,  171,  170,  168,   45,  198,  198,  199,  199,  200,
+      200,  201,  201,  202,  202,  203,  203,  167,  166,  165,
+      163,  162,  159,  158,  157,  156,  155,  153,  152,  150,
+      149,  146,  145,  144,  143,  141,  140,  139,  138,  137,
+      136,  134,  133,  132,  128,  127,  126,  125,  124,  121,
 
-      143,  142,  140,  139,  138,  134,  133,  132,  131,  130,
-      127,  126,  125,  124,  122,  121,  120,  119,  118,  117,
-      115,  113,  112,  109,  107,  106,  104,  101,   98,   97,
-       96,   94,   93,   91,   90,   89,   88,   87,   84,   83,
-       82,   81,   80,   79,   77,   72,   71,   70,   68,   67,
-       66,   63,   62,   61,   60,   59,   58,   57,   56,   55,
-       54,   53,   52,   51,   50,   49,   48,   46,   45,   43,
-       42,   37,   34,   31,   28,   26,   21,   14,   11,    7,
-        5,    3,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
+      120,  119,  117,  116,  115,  114,  113,  112,  110,  109,
+      108,  105,  103,  102,  100,   97,   94,   93,   92,   90,
+       88,   87,   86,   85,   84,   81,   80,   79,   78,   77,
+       75,   70,   69,   68,   66,   65,   64,   61,   60,   59,
+       58,   57,   55,   54,   53,   52,   51,   50,   49,   48,
+       47,   46,   44,   43,   41,   36,   33,   30,   27,   25,
+       20,   11,    7,    5,    3,  196,  196,  196,  196,  196,
+      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
+      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
+      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
 
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208
+      196,  196
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -823,13 +816,13 @@
 			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 				{
 				yy_current_state = (int) yy_def[yy_current_state];
-				if ( yy_current_state >= 209 )
+				if ( yy_current_state >= 197 )
 					yy_c = yy_meta[yy_c];
 				}
 			yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
 			++yy_cp;
 			}
-		while ( yy_base[yy_current_state] != 283 );
+		while ( yy_base[yy_current_state] != 266 );
 
 yy_find_action:
 		yy_act = yy_accept[yy_current_state];
@@ -937,127 +930,115 @@
 	YY_BREAK
 case 21:
 YY_RULE_SETUP
-{yylval.number=IOAPIC; return(BUS);}
+{yylval.number=PNP; return(BUS);}
 	YY_BREAK
 case 22:
 YY_RULE_SETUP
-{yylval.number=PNP; return(BUS);}
+{yylval.number=I2C; return(BUS);}
 	YY_BREAK
 case 23:
 YY_RULE_SETUP
-{yylval.number=I2C; return(BUS);}
+{yylval.number=CPU_CLUSTER; return(BUS);}
 	YY_BREAK
 case 24:
 YY_RULE_SETUP
-{yylval.number=CPU_CLUSTER; return(BUS);}
+{yylval.number=CPU; return(BUS);}
 	YY_BREAK
 case 25:
 YY_RULE_SETUP
-{yylval.number=CPU; return(BUS);}
+{yylval.number=DOMAIN; return(BUS);}
 	YY_BREAK
 case 26:
 YY_RULE_SETUP
-{yylval.number=DOMAIN; return(BUS);}
+{yylval.number=GENERIC; return(BUS);}
 	YY_BREAK
 case 27:
 YY_RULE_SETUP
-{yylval.number=GENERIC; return(BUS);}
+{yylval.number=MMIO; return(BUS);}
 	YY_BREAK
 case 28:
 YY_RULE_SETUP
-{yylval.number=MMIO; return(BUS);}
+{yylval.number=SPI; return(BUS);}
 	YY_BREAK
 case 29:
 YY_RULE_SETUP
-{yylval.number=SPI; return(BUS);}
+{yylval.number=USB; return(BUS);}
 	YY_BREAK
 case 30:
 YY_RULE_SETUP
-{yylval.number=USB; return(BUS);}
+{yylval.number=GPIO; return(BUS);}
 	YY_BREAK
 case 31:
 YY_RULE_SETUP
-{yylval.number=GPIO; return(BUS);}
+{yylval.number=MDIO; return(BUS);}
 	YY_BREAK
 case 32:
 YY_RULE_SETUP
-{yylval.number=MDIO; return(BUS);}
+{yylval.number=IRQ; return(RESOURCE);}
 	YY_BREAK
 case 33:
 YY_RULE_SETUP
-{yylval.number=IRQ; return(RESOURCE);}
+{yylval.number=DRQ; return(RESOURCE);}
 	YY_BREAK
 case 34:
 YY_RULE_SETUP
-{yylval.number=DRQ; return(RESOURCE);}
+{yylval.number=IO; return(RESOURCE);}
 	YY_BREAK
 case 35:
 YY_RULE_SETUP
-{yylval.number=IO; return(RESOURCE);}
+{return(INHERIT);}
 	YY_BREAK
 case 36:
 YY_RULE_SETUP
-{return(IOAPIC_IRQ);}
+{return(SUBSYSTEMID);}
 	YY_BREAK
 case 37:
 YY_RULE_SETUP
-{return(INHERIT);}
+{return(END);}
 	YY_BREAK
 case 38:
 YY_RULE_SETUP
-{return(SUBSYSTEMID);}
+{return(SLOT_DESC);}
 	YY_BREAK
 case 39:
 YY_RULE_SETUP
-{return(END);}
+{return(SMBIOS_DEV_INFO);}
 	YY_BREAK
 case 40:
 YY_RULE_SETUP
-{return(SLOT_DESC);}
+{return(EQUALS);}
 	YY_BREAK
 case 41:
 YY_RULE_SETUP
-{return(SMBIOS_DEV_INFO);}
+{return(PIPE);}
 	YY_BREAK
 case 42:
 YY_RULE_SETUP
-{return(EQUALS);}
+{yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(NUMBER);}
 	YY_BREAK
 case 43:
 YY_RULE_SETUP
-{return(PIPE);}
+{yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(NUMBER);}
 	YY_BREAK
 case 44:
 YY_RULE_SETUP
 {yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(NUMBER);}
 	YY_BREAK
 case 45:
+/* rule 45 can match eol */
 YY_RULE_SETUP
-{yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(NUMBER);}
+{yylval.string = malloc(yyleng-1); strncpy(yylval.string, yytext+1, yyleng-2); yylval.string[yyleng-2]='\0'; return(STRING);}
 	YY_BREAK
 case 46:
+/* rule 46 can match eol */
 YY_RULE_SETUP
-{yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(NUMBER);}
+{yylval.string = malloc(yyleng-1); strncpy(yylval.string, yytext+1, yyleng-2); yylval.string[yyleng-2]='\0'; return(STRING);}
 	YY_BREAK
 case 47:
 YY_RULE_SETUP
-{yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(PCIINT);}
-	YY_BREAK
-case 48:
-/* rule 48 can match eol */
-YY_RULE_SETUP
-{yylval.string = malloc(yyleng-1); strncpy(yylval.string, yytext+1, yyleng-2); yylval.string[yyleng-2]='\0'; return(STRING);}
-	YY_BREAK
-case 49:
-/* rule 49 can match eol */
-YY_RULE_SETUP
-{yylval.string = malloc(yyleng-1); strncpy(yylval.string, yytext+1, yyleng-2); yylval.string[yyleng-2]='\0'; return(STRING);}
-	YY_BREAK
-case 50:
-YY_RULE_SETUP
 {yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(STRING);}
 	YY_BREAK
-case 51:
+case 48:
 YY_RULE_SETUP
 ECHO;
 	YY_BREAK
@@ -1357,7 +1338,7 @@
 		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 			{
 			yy_current_state = (int) yy_def[yy_current_state];
-			if ( yy_current_state >= 209 )
+			if ( yy_current_state >= 197 )
 				yy_c = yy_meta[yy_c];
 			}
 		yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -1385,11 +1366,11 @@
 	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 		{
 		yy_current_state = (int) yy_def[yy_current_state];
-		if ( yy_current_state >= 209 )
+		if ( yy_current_state >= 197 )
 			yy_c = yy_meta[yy_c];
 		}
 	yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-	yy_is_jam = (yy_current_state == 208);
+	yy_is_jam = (yy_current_state == 196);
 
 		return yy_is_jam ? 0 : yy_current_state;
 }
diff --git a/util/sconfig/main.c b/util/sconfig/main.c
index 6618a45..aa79f1e 100644
--- a/util/sconfig/main.c
+++ b/util/sconfig/main.c
@@ -881,10 +881,6 @@
 		new_d->path = ".type=DEVICE_PATH_DOMAIN,{.domain={ .domain = 0x%x }}";
 		break;
 
-	case IOAPIC:
-		new_d->path = ".type=DEVICE_PATH_IOAPIC,{.ioapic={ .ioapic_id = 0x%x }}";
-		break;
-
 	case GENERIC:
 		new_d->path = ".type=DEVICE_PATH_GENERIC,{.generic={ .id = 0x%x, .subid = 0x%x }}";
 		break;
@@ -1084,33 +1080,6 @@
 	dev->inherit_subsystem = inherit;
 }
 
-void add_ioapic_info(struct bus *bus, int apicid, const char *_srcpin,
-		     int irqpin)
-{
-	int srcpin;
-	struct device *dev = bus->dev;
-
-	if (!_srcpin || strlen(_srcpin) < 4 || strncasecmp(_srcpin, "INT", 3) ||
-	    _srcpin[3] < 'A' || _srcpin[3] > 'D') {
-		printf("ERROR: malformed ioapic_irq args: %s\n", _srcpin);
-		exit(1);
-	}
-
-	srcpin = _srcpin[3] - 'A';
-
-	if (dev->bustype != PCI && dev->bustype != DOMAIN) {
-		printf("ERROR: ioapic config only allowed for PCI devices\n");
-		exit(1);
-	}
-
-	if (srcpin > 3) {
-		printf("ERROR: srcpin '%d' invalid\n", srcpin);
-		exit(1);
-	}
-	dev->pci_irq_info[srcpin].ioapic_irq_pin = irqpin;
-	dev->pci_irq_info[srcpin].ioapic_dst_id = apicid;
-}
-
 static int dev_has_children(struct device *dev)
 {
 	struct bus *bus = dev->bus;
@@ -1269,7 +1238,6 @@
 
 static void pass1(FILE *fil, FILE *head, struct device *ptr, struct device *next)
 {
-	int pin;
 	struct chip_instance *chip_ins = get_chip_instance(ptr);
 	int has_children = dev_has_children(ptr);
 
@@ -1333,17 +1301,6 @@
 	if (ptr->probe)
 		fprintf(fil, "\t.probe_list = %s_probe_list,\n", ptr->name);
 	fprintf(fil, "#if !DEVTREE_EARLY\n");
-	for (pin = 0; pin < 4; pin++) {
-		if (ptr->pci_irq_info[pin].ioapic_irq_pin > 0)
-			fprintf(fil,
-				"\t.pci_irq_info[%d].ioapic_irq_pin = %d,\n",
-				pin, ptr->pci_irq_info[pin].ioapic_irq_pin);
-
-		if (ptr->pci_irq_info[pin].ioapic_dst_id > 0)
-			fprintf(fil,
-				"\t.pci_irq_info[%d].ioapic_dst_id = %d,\n",
-				pin, ptr->pci_irq_info[pin].ioapic_dst_id);
-	}
 	fprintf(fil, "\t.chip_ops = &%s_ops,\n",
 		chip_ins->chip->name_underscore);
 	if (chip_ins == &mainboard_instance)
diff --git a/util/sconfig/sconfig.h b/util/sconfig/sconfig.h
index c2a43af..cb8f7b3 100644
--- a/util/sconfig/sconfig.h
+++ b/util/sconfig/sconfig.h
@@ -24,11 +24,6 @@
 	struct reg *next;
 };
 
-struct pci_irq_info {
-	int ioapic_irq_pin;
-	int ioapic_dst_id;
-};
-
 struct fw_config_option;
 struct fw_config_option {
 	const char *name;
@@ -150,9 +145,6 @@
 	/* Type of bus that exists under this device. */
 	int bustype;
 
-	/* PCI IRQ info. */
-	struct pci_irq_info pci_irq_info[4];
-
 	/* Pointer to bus of parent on which this device resides. */
 	struct bus *parent;
 
@@ -210,9 +202,6 @@
 void add_pci_subsystem_ids(struct bus *bus, int vendor, int device,
 			   int inherit);
 
-void add_ioapic_info(struct bus *bus, int apicid, const char *_srcpin,
-		     int irqpin);
-
 void add_slot_desc(struct bus *bus, char *type, char *length, char *designation,
 		   char *data_width);
 
diff --git a/util/sconfig/sconfig.l b/util/sconfig/sconfig.l
index f18fb0e..0e4e708 100644
--- a/util/sconfig/sconfig.l
+++ b/util/sconfig/sconfig.l
@@ -28,7 +28,6 @@
 hidden			{yylval.number=3; return(STATUS);}
 mandatory		{yylval.number=5; return(STATUS);}
 pci			{yylval.number=PCI; return(BUS);}
-ioapic			{yylval.number=IOAPIC; return(BUS);}
 pnp			{yylval.number=PNP; return(BUS);}
 i2c			{yylval.number=I2C; return(BUS);}
 cpu_cluster		{yylval.number=CPU_CLUSTER; return(BUS);}
@@ -43,7 +42,6 @@
 irq			{yylval.number=IRQ; return(RESOURCE);}
 drq			{yylval.number=DRQ; return(RESOURCE);}
 io			{yylval.number=IO; return(RESOURCE);}
-ioapic_irq		{return(IOAPIC_IRQ);}
 inherit			{return(INHERIT);}
 subsystemid		{return(SUBSYSTEMID);}
 end			{return(END);}
@@ -54,7 +52,6 @@
 0x[0-9a-fA-F.]+		{yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(NUMBER);}
 [0-9.]+			{yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(NUMBER);}
 [0-9a-fA-F.]+		{yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(NUMBER);}
-INT[A-D]		{yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(PCIINT);}
 \"\"[^\"]+\"\"		{yylval.string = malloc(yyleng-1); strncpy(yylval.string, yytext+1, yyleng-2); yylval.string[yyleng-2]='\0'; return(STRING);}
 \"[^\"]+\"		{yylval.string = malloc(yyleng-1); strncpy(yylval.string, yytext+1, yyleng-2); yylval.string[yyleng-2]='\0'; return(STRING);}
 [^ \n\t]+		{yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(STRING);}
diff --git a/util/sconfig/sconfig.tab.c_shipped b/util/sconfig/sconfig.tab.c_shipped
index dc09332..cb60fb5 100644
--- a/util/sconfig/sconfig.tab.c_shipped
+++ b/util/sconfig/sconfig.tab.c_shipped
@@ -142,54 +142,51 @@
   YYSYMBOL_NUMBER = 29,                    /* NUMBER  */
   YYSYMBOL_SUBSYSTEMID = 30,               /* SUBSYSTEMID  */
   YYSYMBOL_INHERIT = 31,                   /* INHERIT  */
-  YYSYMBOL_IOAPIC_IRQ = 32,                /* IOAPIC_IRQ  */
-  YYSYMBOL_IOAPIC = 33,                    /* IOAPIC  */
-  YYSYMBOL_PCIINT = 34,                    /* PCIINT  */
-  YYSYMBOL_GENERIC = 35,                   /* GENERIC  */
-  YYSYMBOL_SPI = 36,                       /* SPI  */
-  YYSYMBOL_USB = 37,                       /* USB  */
-  YYSYMBOL_MMIO = 38,                      /* MMIO  */
-  YYSYMBOL_GPIO = 39,                      /* GPIO  */
-  YYSYMBOL_MDIO = 40,                      /* MDIO  */
-  YYSYMBOL_FW_CONFIG_TABLE = 41,           /* FW_CONFIG_TABLE  */
-  YYSYMBOL_FW_CONFIG_FIELD = 42,           /* FW_CONFIG_FIELD  */
-  YYSYMBOL_FW_CONFIG_OPTION = 43,          /* FW_CONFIG_OPTION  */
-  YYSYMBOL_FW_CONFIG_PROBE = 44,           /* FW_CONFIG_PROBE  */
-  YYSYMBOL_PIPE = 45,                      /* PIPE  */
-  YYSYMBOL_OPS = 46,                       /* OPS  */
-  YYSYMBOL_YYACCEPT = 47,                  /* $accept  */
-  YYSYMBOL_devtree = 48,                   /* devtree  */
-  YYSYMBOL_chipchild_nondev = 49,          /* chipchild_nondev  */
-  YYSYMBOL_chipchild = 50,                 /* chipchild  */
-  YYSYMBOL_chipchildren = 51,              /* chipchildren  */
-  YYSYMBOL_chipchildren_dev = 52,          /* chipchildren_dev  */
-  YYSYMBOL_devicechildren = 53,            /* devicechildren  */
-  YYSYMBOL_chip = 54,                      /* chip  */
-  YYSYMBOL_55_1 = 55,                      /* @1  */
-  YYSYMBOL_device = 56,                    /* device  */
-  YYSYMBOL_57_2 = 57,                      /* @2  */
-  YYSYMBOL_58_3 = 58,                      /* @3  */
-  YYSYMBOL_alias = 59,                     /* alias  */
-  YYSYMBOL_status = 60,                    /* status  */
-  YYSYMBOL_resource = 61,                  /* resource  */
-  YYSYMBOL_reference = 62,                 /* reference  */
-  YYSYMBOL_registers = 63,                 /* registers  */
-  YYSYMBOL_subsystemid = 64,               /* subsystemid  */
-  YYSYMBOL_ioapic_irq = 65,                /* ioapic_irq  */
-  YYSYMBOL_smbios_slot_desc = 66,          /* smbios_slot_desc  */
-  YYSYMBOL_smbios_dev_info = 67,           /* smbios_dev_info  */
-  YYSYMBOL_fw_config_table = 68,           /* fw_config_table  */
-  YYSYMBOL_fw_config_table_children = 69,  /* fw_config_table_children  */
-  YYSYMBOL_fw_config_field_children = 70,  /* fw_config_field_children  */
-  YYSYMBOL_fw_config_field_bits = 71,      /* fw_config_field_bits  */
-  YYSYMBOL_fw_config_field_bits_repeating = 72, /* fw_config_field_bits_repeating  */
-  YYSYMBOL_fw_config_field = 73,           /* fw_config_field  */
-  YYSYMBOL_74_4 = 74,                      /* $@4  */
-  YYSYMBOL_75_5 = 75,                      /* $@5  */
-  YYSYMBOL_76_6 = 76,                      /* $@6  */
-  YYSYMBOL_fw_config_option = 77,          /* fw_config_option  */
-  YYSYMBOL_fw_config_probe = 78,           /* fw_config_probe  */
-  YYSYMBOL_ops = 79                        /* ops  */
+  YYSYMBOL_PCIINT = 32,                    /* PCIINT  */
+  YYSYMBOL_GENERIC = 33,                   /* GENERIC  */
+  YYSYMBOL_SPI = 34,                       /* SPI  */
+  YYSYMBOL_USB = 35,                       /* USB  */
+  YYSYMBOL_MMIO = 36,                      /* MMIO  */
+  YYSYMBOL_GPIO = 37,                      /* GPIO  */
+  YYSYMBOL_MDIO = 38,                      /* MDIO  */
+  YYSYMBOL_FW_CONFIG_TABLE = 39,           /* FW_CONFIG_TABLE  */
+  YYSYMBOL_FW_CONFIG_FIELD = 40,           /* FW_CONFIG_FIELD  */
+  YYSYMBOL_FW_CONFIG_OPTION = 41,          /* FW_CONFIG_OPTION  */
+  YYSYMBOL_FW_CONFIG_PROBE = 42,           /* FW_CONFIG_PROBE  */
+  YYSYMBOL_PIPE = 43,                      /* PIPE  */
+  YYSYMBOL_OPS = 44,                       /* OPS  */
+  YYSYMBOL_YYACCEPT = 45,                  /* $accept  */
+  YYSYMBOL_devtree = 46,                   /* devtree  */
+  YYSYMBOL_chipchild_nondev = 47,          /* chipchild_nondev  */
+  YYSYMBOL_chipchild = 48,                 /* chipchild  */
+  YYSYMBOL_chipchildren = 49,              /* chipchildren  */
+  YYSYMBOL_chipchildren_dev = 50,          /* chipchildren_dev  */
+  YYSYMBOL_devicechildren = 51,            /* devicechildren  */
+  YYSYMBOL_chip = 52,                      /* chip  */
+  YYSYMBOL_53_1 = 53,                      /* @1  */
+  YYSYMBOL_device = 54,                    /* device  */
+  YYSYMBOL_55_2 = 55,                      /* @2  */
+  YYSYMBOL_56_3 = 56,                      /* @3  */
+  YYSYMBOL_alias = 57,                     /* alias  */
+  YYSYMBOL_status = 58,                    /* status  */
+  YYSYMBOL_resource = 59,                  /* resource  */
+  YYSYMBOL_reference = 60,                 /* reference  */
+  YYSYMBOL_registers = 61,                 /* registers  */
+  YYSYMBOL_subsystemid = 62,               /* subsystemid  */
+  YYSYMBOL_smbios_slot_desc = 63,          /* smbios_slot_desc  */
+  YYSYMBOL_smbios_dev_info = 64,           /* smbios_dev_info  */
+  YYSYMBOL_fw_config_table = 65,           /* fw_config_table  */
+  YYSYMBOL_fw_config_table_children = 66,  /* fw_config_table_children  */
+  YYSYMBOL_fw_config_field_children = 67,  /* fw_config_field_children  */
+  YYSYMBOL_fw_config_field_bits = 68,      /* fw_config_field_bits  */
+  YYSYMBOL_fw_config_field_bits_repeating = 69, /* fw_config_field_bits_repeating  */
+  YYSYMBOL_fw_config_field = 70,           /* fw_config_field  */
+  YYSYMBOL_71_4 = 71,                      /* $@4  */
+  YYSYMBOL_72_5 = 72,                      /* $@5  */
+  YYSYMBOL_73_6 = 73,                      /* $@6  */
+  YYSYMBOL_fw_config_option = 74,          /* fw_config_option  */
+  YYSYMBOL_fw_config_probe = 75,           /* fw_config_probe  */
+  YYSYMBOL_ops = 76                        /* ops  */
 };
 typedef enum yysymbol_kind_t yysymbol_kind_t;
 
@@ -517,19 +514,19 @@
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  2
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   113
+#define YYLAST   94
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  47
+#define YYNTOKENS  45
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  33
+#define YYNNTS  32
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  62
+#define YYNRULES  60
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  108
+#define YYNSTATES  103
 
 /* YYMAXUTOK -- Last valid token kind.  */
-#define YYMAXUTOK   301
+#define YYMAXUTOK   299
 
 
 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
@@ -572,8 +569,7 @@
        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
-      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    46
+      35,    36,    37,    38,    39,    40,    41,    42,    43,    44
 };
 
 #if YYDEBUG
@@ -582,11 +578,11 @@
 {
        0,    26,    26,    26,    26,    29,    29,    29,    30,    30,
       31,    31,    32,    32,    34,    34,    34,    34,    34,    34,
-      34,    34,    34,    34,    34,    36,    36,    45,    45,    53,
-      53,    61,    63,    67,    67,    69,    72,    75,    78,    81,
-      84,    87,    90,    93,    96,    99,   103,   106,   106,   109,
-     109,   112,   118,   118,   121,   120,   125,   125,   133,   133,
-     139,   143,   146
+      34,    34,    34,    34,    36,    36,    45,    45,    53,    53,
+      61,    63,    67,    67,    69,    72,    75,    78,    81,    84,
+      87,    90,    93,    96,   100,   103,   103,   106,   106,   109,
+     115,   115,   118,   117,   122,   122,   130,   130,   136,   140,
+     143
 };
 #endif
 
@@ -606,13 +602,12 @@
   "REGISTER", "ALIAS", "REFERENCE", "ASSOCIATION", "BOOL", "STATUS",
   "MANDATORY", "BUS", "RESOURCE", "END", "EQUALS", "HEX", "STRING", "PCI",
   "PNP", "I2C", "CPU_CLUSTER", "CPU", "DOMAIN", "IRQ", "DRQ", "SLOT_DESC",
-  "SMBIOS_DEV_INFO", "IO", "NUMBER", "SUBSYSTEMID", "INHERIT",
-  "IOAPIC_IRQ", "IOAPIC", "PCIINT", "GENERIC", "SPI", "USB", "MMIO",
-  "GPIO", "MDIO", "FW_CONFIG_TABLE", "FW_CONFIG_FIELD", "FW_CONFIG_OPTION",
-  "FW_CONFIG_PROBE", "PIPE", "OPS", "$accept", "devtree",
-  "chipchild_nondev", "chipchild", "chipchildren", "chipchildren_dev",
-  "devicechildren", "chip", "@1", "device", "@2", "@3", "alias", "status",
-  "resource", "reference", "registers", "subsystemid", "ioapic_irq",
+  "SMBIOS_DEV_INFO", "IO", "NUMBER", "SUBSYSTEMID", "INHERIT", "PCIINT",
+  "GENERIC", "SPI", "USB", "MMIO", "GPIO", "MDIO", "FW_CONFIG_TABLE",
+  "FW_CONFIG_FIELD", "FW_CONFIG_OPTION", "FW_CONFIG_PROBE", "PIPE", "OPS",
+  "$accept", "devtree", "chipchild_nondev", "chipchild", "chipchildren",
+  "chipchildren_dev", "devicechildren", "chip", "@1", "device", "@2", "@3",
+  "alias", "status", "resource", "reference", "registers", "subsystemid",
   "smbios_slot_desc", "smbios_dev_info", "fw_config_table",
   "fw_config_table_children", "fw_config_field_children",
   "fw_config_field_bits", "fw_config_field_bits_repeating",
@@ -627,7 +622,7 @@
 }
 #endif
 
-#define YYPACT_NINF (-49)
+#define YYPACT_NINF (-51)
 
 #define yypact_value_is_default(Yyn) \
   ((Yyn) == YYPACT_NINF)
@@ -641,17 +636,17 @@
    STATE-NUM.  */
 static const yytype_int8 yypact[] =
 {
-     -49,     6,   -49,     8,   -49,   -49,   -49,   -49,     1,    45,
-     -49,    18,   -49,    12,    24,    25,    45,     3,   -49,   -49,
-     -49,   -49,    -6,    37,    26,    41,    49,   -49,   -49,    45,
-      29,    14,   -49,    19,    55,    46,    47,   -49,   -49,   -49,
-     -49,   -49,    33,   -49,   -12,   -49,   -49,   -49,    50,    19,
-     -49,   -49,    -7,    29,    14,   -49,   -49,    51,   -49,   -49,
-     -49,   -49,   -49,   -49,     2,    40,     0,   -49,   -49,   -49,
-      42,   -49,    53,    43,    44,    48,    57,    58,   -49,   -49,
-     -49,   -49,   -49,   -49,   -49,   -49,   -49,   -49,     7,    61,
-      62,    63,    52,    32,    65,   -49,   -49,    54,    67,   -49,
-      59,    56,   -49,   -49,    69,   -49,   -49,   -49
+     -51,    12,   -51,     6,   -51,   -51,   -51,   -51,    -3,    49,
+     -51,     7,   -51,    10,    23,    24,    49,    14,   -51,   -51,
+     -51,   -51,    16,    26,    17,    33,    42,   -51,   -51,    49,
+      28,    18,   -51,    11,    53,    38,    43,   -51,   -51,   -51,
+     -51,   -51,    34,   -51,   -12,   -51,   -51,   -51,    45,    11,
+     -51,   -51,    -8,    28,    18,   -51,   -51,    47,   -51,   -51,
+     -51,   -51,   -51,   -51,    -7,    37,     0,   -51,   -51,   -51,
+      39,   -51,    50,    40,    41,    54,    55,   -51,   -51,   -51,
+     -51,   -51,   -51,   -51,   -51,   -51,     5,    58,    57,    59,
+      46,    60,   -51,   -51,    51,    61,   -51,    48,   -51,   -51,
+      64,   -51,   -51
 };
 
 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -659,35 +654,35 @@
    means the default is an error.  */
 static const yytype_int8 yydefact[] =
 {
-       2,     0,     1,     0,    48,     3,     4,    25,     0,     0,
-      46,     0,    47,     0,     0,     0,     0,     0,     5,    11,
-       7,     6,    58,     0,     0,     0,     0,    13,    26,    12,
-      56,    53,    50,     0,    31,     0,     0,     9,    10,     8,
-      51,    50,     0,    54,     0,    33,    34,    29,     0,     0,
-      37,    36,     0,     0,    53,    50,    59,     0,    49,    24,
-      32,    27,    57,    52,     0,     0,     0,    24,    55,    60,
-       0,    30,     0,     0,     0,     0,     0,     0,    15,    14,
-      16,    21,    17,    18,    19,    20,    22,    23,     0,     0,
-       0,    45,     0,     0,     0,    62,    28,     0,    43,    44,
-      38,     0,    61,    35,    42,    39,    40,    41
+       2,     0,     1,     0,    46,     3,     4,    24,     0,     0,
+      44,     0,    45,     0,     0,     0,     0,     0,     5,    11,
+       7,     6,    56,     0,     0,     0,     0,    13,    25,    12,
+      54,    51,    48,     0,    30,     0,     0,     9,    10,     8,
+      49,    48,     0,    52,     0,    32,    33,    28,     0,     0,
+      36,    35,     0,     0,    51,    48,    57,     0,    47,    23,
+      31,    26,    55,    50,     0,     0,     0,    23,    53,    58,
+       0,    29,     0,     0,     0,     0,     0,    15,    14,    16,
+      20,    17,    18,    19,    21,    22,     0,     0,     0,    43,
+       0,     0,    60,    27,     0,    41,    42,    37,    59,    34,
+      40,    38,    39
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int8 yypgoto[] =
 {
-     -49,   -49,    60,   -49,   -49,    72,    11,    -1,   -49,   -28,
-     -49,   -49,   -49,    64,   -49,   -49,   -48,   -49,   -49,   -49,
-     -49,   -49,   -49,   -33,    66,    38,   -49,   -49,   -49,   -49,
-     -49,   -49,   -49
+     -51,   -51,    62,   -51,   -51,    66,    19,    -1,   -51,   -28,
+     -51,   -51,   -51,    35,   -51,   -51,   -50,   -51,   -51,   -51,
+     -51,   -51,   -16,    52,    29,   -51,   -51,   -51,   -51,   -51,
+     -51,   -51
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int8 yydefgoto[] =
 {
        0,     1,    16,    38,    29,    17,    66,    18,     9,    19,
-      67,    59,    49,    47,    80,    20,    21,    82,    83,    84,
-      85,     6,     8,    44,    31,    43,    12,    55,    41,    32,
-      58,    86,    87
+      67,    59,    49,    47,    79,    20,    21,    81,    82,    83,
+       6,     8,    44,    31,    43,    12,    55,    41,    32,    58,
+      84,    85
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -695,63 +690,59 @@
    number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int8 yytable[] =
 {
-       5,    39,    56,     3,    13,    14,     2,    62,    52,     3,
-       3,    13,    14,    70,    71,    10,    68,    28,    81,    23,
-      70,    96,    64,    30,    24,     7,    72,    73,    45,    46,
-      74,    57,    75,    72,    73,    22,    57,    74,    79,    75,
-      81,    25,    26,    11,    76,    57,    77,     4,     3,    13,
-      14,    76,    15,    77,    33,    34,    35,    36,    40,    42,
-      79,    48,    53,    50,    51,    78,   101,    60,    65,    69,
-      90,    89,    91,    92,    94,    95,    97,    93,    88,    98,
-      99,   100,   102,   103,   104,   106,   107,    78,    27,    37,
-     105,     0,    63,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    54,     0,
-       0,     0,     0,    61
+       5,    39,    56,     3,    13,    14,    62,    68,     3,    13,
+      14,    10,     2,    70,    71,     3,    80,    23,    70,    93,
+      45,    46,    24,     7,    22,    52,    72,    73,    28,    57,
+      74,    72,    73,    57,    57,    74,    80,    11,    78,    64,
+      25,    26,    75,    33,    76,    30,    34,    75,    35,    76,
+      36,     4,     3,    13,    14,    50,    15,    40,    78,    48,
+      51,    42,    60,    53,    65,    77,    69,    88,    87,    89,
+      90,    91,    92,    94,    95,    97,    96,    98,   100,   101,
+      99,   102,    27,    63,    61,    77,    86,     0,     0,     0,
+       0,    37,     0,     0,    54
 };
 
 static const yytype_int8 yycheck[] =
 {
-       1,    29,    14,     3,     4,     5,     0,    14,    41,     3,
-       3,     4,     5,    13,    14,    14,    14,    14,    66,     7,
-      13,    14,    55,    29,    12,    17,    26,    27,     9,    10,
-      30,    43,    32,    26,    27,    17,    43,    30,    66,    32,
-      88,    17,    17,    42,    44,    43,    46,    41,     3,     4,
-       5,    44,     7,    46,    17,    29,    15,     8,    29,    45,
-      88,     6,    29,    17,    17,    66,    34,    17,    17,    29,
-      17,    29,    29,    29,    17,    17,    15,    29,    67,    17,
-      17,    29,    17,    29,    17,    29,    17,    88,    16,    29,
-      31,    -1,    54,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,    -1,
-      -1,    -1,    -1,    49
+       1,    29,    14,     3,     4,     5,    14,    14,     3,     4,
+       5,    14,     0,    13,    14,     3,    66,     7,    13,    14,
+       9,    10,    12,    17,    17,    41,    26,    27,    14,    41,
+      30,    26,    27,    41,    41,    30,    86,    40,    66,    55,
+      17,    17,    42,    17,    44,    29,    29,    42,    15,    44,
+       8,    39,     3,     4,     5,    17,     7,    29,    86,     6,
+      17,    43,    17,    29,    17,    66,    29,    17,    29,    29,
+      29,    17,    17,    15,    17,    29,    17,    17,    17,    31,
+      29,    17,    16,    54,    49,    86,    67,    -1,    -1,    -1,
+      -1,    29,    -1,    -1,    42
 };
 
 /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of
    state STATE-NUM.  */
 static const yytype_int8 yystos[] =
 {
-       0,    48,     0,     3,    41,    54,    68,    17,    69,    55,
-      14,    42,    73,     4,     5,     7,    49,    52,    54,    56,
-      62,    63,    17,     7,    12,    17,    17,    52,    14,    51,
-      29,    71,    76,    17,    29,    15,     8,    49,    50,    56,
-      29,    75,    45,    72,    70,     9,    10,    60,     6,    59,
-      17,    17,    70,    29,    71,    74,    14,    43,    77,    58,
-      17,    60,    14,    72,    70,    17,    53,    57,    14,    29,
-      13,    14,    26,    27,    30,    32,    44,    46,    54,    56,
-      61,    63,    64,    65,    66,    67,    78,    79,    53,    29,
-      17,    29,    29,    29,    17,    17,    14,    15,    17,    17,
-      29,    34,    17,    29,    17,    31,    29,    17
+       0,    46,     0,     3,    39,    52,    65,    17,    66,    53,
+      14,    40,    70,     4,     5,     7,    47,    50,    52,    54,
+      60,    61,    17,     7,    12,    17,    17,    50,    14,    49,
+      29,    68,    73,    17,    29,    15,     8,    47,    48,    54,
+      29,    72,    43,    69,    67,     9,    10,    58,     6,    57,
+      17,    17,    67,    29,    68,    71,    14,    41,    74,    56,
+      17,    58,    14,    69,    67,    17,    51,    55,    14,    29,
+      13,    14,    26,    27,    30,    42,    44,    52,    54,    59,
+      61,    62,    63,    64,    75,    76,    51,    29,    17,    29,
+      29,    17,    17,    14,    15,    17,    17,    29,    17,    29,
+      17,    31,    17
 };
 
 /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM.  */
 static const yytype_int8 yyr1[] =
 {
-       0,    47,    48,    48,    48,    49,    49,    49,    50,    50,
-      51,    51,    52,    52,    53,    53,    53,    53,    53,    53,
-      53,    53,    53,    53,    53,    55,    54,    57,    56,    58,
-      56,    59,    59,    60,    60,    61,    62,    63,    64,    64,
-      65,    66,    66,    66,    67,    67,    68,    69,    69,    70,
-      70,    71,    72,    72,    74,    73,    75,    73,    76,    73,
-      77,    78,    79
+       0,    45,    46,    46,    46,    47,    47,    47,    48,    48,
+      49,    49,    50,    50,    51,    51,    51,    51,    51,    51,
+      51,    51,    51,    51,    53,    52,    55,    54,    56,    54,
+      57,    57,    58,    58,    59,    60,    61,    62,    62,    63,
+      63,    63,    64,    64,    65,    66,    66,    67,    67,    68,
+      69,    69,    71,    70,    72,    70,    73,    70,    74,    75,
+      76
 };
 
 /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM.  */
@@ -759,11 +750,11 @@
 {
        0,     2,     0,     2,     2,     1,     1,     1,     1,     1,
        2,     0,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     0,     0,     5,     0,     8,     0,
-       7,     0,     2,     1,     1,     4,     4,     4,     3,     4,
-       4,     5,     4,     3,     3,     2,     3,     2,     0,     2,
-       0,     2,     3,     0,     0,     7,     0,     6,     0,     5,
-       3,     3,     2
+       2,     2,     2,     0,     0,     5,     0,     8,     0,     7,
+       0,     2,     1,     1,     4,     4,     4,     3,     4,     5,
+       4,     3,     3,     2,     3,     2,     0,     2,     0,     2,
+       3,     0,     0,     7,     0,     6,     0,     5,     3,     3,
+       2
 };
 
 
@@ -1230,7 +1221,7 @@
          { cur_parent = root_parent; }
     break;
 
-  case 25: /* @1: %empty  */
+  case 24: /* @1: %empty  */
                                 {
 	(yyval.chip_instance) = new_chip_instance((yyvsp[0].string));
 	chip_enqueue_tail(cur_chip_instance);
@@ -1238,113 +1229,109 @@
 }
     break;
 
-  case 26: /* chip: CHIP STRING @1 chipchildren_dev END  */
+  case 25: /* chip: CHIP STRING @1 chipchildren_dev END  */
                              {
 	cur_chip_instance = chip_dequeue_tail();
 }
     break;
 
-  case 27: /* @2: %empty  */
+  case 26: /* @2: %empty  */
                                                        {
 	(yyval.dev) = new_device_raw(cur_parent, cur_chip_instance, (yyvsp[-3].number), (yyvsp[-2].string), (yyvsp[-1].string), (yyvsp[0].number));
 	cur_parent = (yyval.dev)->last_bus;
 }
     break;
 
-  case 28: /* device: DEVICE BUS NUMBER alias status @2 devicechildren END  */
+  case 27: /* device: DEVICE BUS NUMBER alias status @2 devicechildren END  */
                            {
 	cur_parent = (yyvsp[-2].dev)->parent;
 }
     break;
 
-  case 29: /* @3: %empty  */
+  case 28: /* @3: %empty  */
                                        {
 	(yyval.dev) = new_device_reference(cur_parent, cur_chip_instance, (yyvsp[-1].string), (yyvsp[0].number));
 	cur_parent = (yyval.dev)->last_bus;
 }
     break;
 
-  case 30: /* device: DEVICE REFERENCE STRING status @3 devicechildren END  */
+  case 29: /* device: DEVICE REFERENCE STRING status @3 devicechildren END  */
                            {
 	cur_parent = (yyvsp[-2].dev)->parent;
 }
     break;
 
-  case 31: /* alias: %empty  */
+  case 30: /* alias: %empty  */
                    {
 	(yyval.string) = NULL;
 }
     break;
 
-  case 32: /* alias: ALIAS STRING  */
+  case 31: /* alias: ALIAS STRING  */
                  {
 	(yyval.string) = (yyvsp[0].string);
 }
     break;
 
-  case 35: /* resource: RESOURCE NUMBER EQUALS NUMBER  */
+  case 34: /* resource: RESOURCE NUMBER EQUALS NUMBER  */
         { add_resource(cur_parent, (yyvsp[-3].number), strtol((yyvsp[-2].string), NULL, 0), strtol((yyvsp[0].string), NULL, 0)); }
     break;
 
-  case 36: /* reference: REFERENCE STRING ASSOCIATION STRING  */
+  case 35: /* reference: REFERENCE STRING ASSOCIATION STRING  */
         { add_reference(cur_chip_instance, (yyvsp[0].string), (yyvsp[-2].string)); }
     break;
 
-  case 37: /* registers: REGISTER STRING EQUALS STRING  */
+  case 36: /* registers: REGISTER STRING EQUALS STRING  */
         { add_register(cur_chip_instance, (yyvsp[-2].string), (yyvsp[0].string)); }
     break;
 
-  case 38: /* subsystemid: SUBSYSTEMID NUMBER NUMBER  */
+  case 37: /* subsystemid: SUBSYSTEMID NUMBER NUMBER  */
         { add_pci_subsystem_ids(cur_parent, strtol((yyvsp[-1].string), NULL, 16), strtol((yyvsp[0].string), NULL, 16), 0); }
     break;
 
-  case 39: /* subsystemid: SUBSYSTEMID NUMBER NUMBER INHERIT  */
+  case 38: /* subsystemid: SUBSYSTEMID NUMBER NUMBER INHERIT  */
         { add_pci_subsystem_ids(cur_parent, strtol((yyvsp[-2].string), NULL, 16), strtol((yyvsp[-1].string), NULL, 16), 1); }
     break;
 
-  case 40: /* ioapic_irq: IOAPIC_IRQ NUMBER PCIINT NUMBER  */
-        { add_ioapic_info(cur_parent, strtol((yyvsp[-2].string), NULL, 16), (yyvsp[-1].string), strtol((yyvsp[0].string), NULL, 16)); }
-    break;
-
-  case 41: /* smbios_slot_desc: SLOT_DESC STRING STRING STRING STRING  */
+  case 39: /* smbios_slot_desc: SLOT_DESC STRING STRING STRING STRING  */
         { add_slot_desc(cur_parent, (yyvsp[-3].string), (yyvsp[-2].string), (yyvsp[-1].string), (yyvsp[0].string)); }
     break;
 
-  case 42: /* smbios_slot_desc: SLOT_DESC STRING STRING STRING  */
+  case 40: /* smbios_slot_desc: SLOT_DESC STRING STRING STRING  */
         { add_slot_desc(cur_parent, (yyvsp[-2].string), (yyvsp[-1].string), (yyvsp[0].string), NULL); }
     break;
 
-  case 43: /* smbios_slot_desc: SLOT_DESC STRING STRING  */
+  case 41: /* smbios_slot_desc: SLOT_DESC STRING STRING  */
         { add_slot_desc(cur_parent, (yyvsp[-1].string), (yyvsp[0].string), NULL, NULL); }
     break;
 
-  case 44: /* smbios_dev_info: SMBIOS_DEV_INFO NUMBER STRING  */
+  case 42: /* smbios_dev_info: SMBIOS_DEV_INFO NUMBER STRING  */
         { add_smbios_dev_info(cur_parent, strtol((yyvsp[-1].string), NULL, 0), (yyvsp[0].string)); }
     break;
 
-  case 45: /* smbios_dev_info: SMBIOS_DEV_INFO NUMBER  */
+  case 43: /* smbios_dev_info: SMBIOS_DEV_INFO NUMBER  */
         { add_smbios_dev_info(cur_parent, strtol((yyvsp[0].string), NULL, 0), NULL); }
     break;
 
-  case 46: /* fw_config_table: FW_CONFIG_TABLE fw_config_table_children END  */
+  case 44: /* fw_config_table: FW_CONFIG_TABLE fw_config_table_children END  */
                                                               { }
     break;
 
-  case 51: /* fw_config_field_bits: NUMBER NUMBER  */
+  case 49: /* fw_config_field_bits: NUMBER NUMBER  */
 {
 	append_fw_config_bits(&cur_bits, strtoul((yyvsp[-1].string), NULL, 0), strtoul((yyvsp[0].string), NULL, 0));
 }
     break;
 
-  case 54: /* $@4: %empty  */
+  case 52: /* $@4: %empty  */
         { cur_field = new_fw_config_field((yyvsp[-2].string), cur_bits); }
     break;
 
-  case 55: /* fw_config_field: FW_CONFIG_FIELD STRING fw_config_field_bits fw_config_field_bits_repeating $@4 fw_config_field_children END  */
+  case 53: /* fw_config_field: FW_CONFIG_FIELD STRING fw_config_field_bits fw_config_field_bits_repeating $@4 fw_config_field_children END  */
                                      { cur_bits = NULL; }
     break;
 
-  case 56: /* $@5: %empty  */
+  case 54: /* $@5: %empty  */
                                                             {
 	cur_bits = NULL;
 	append_fw_config_bits(&cur_bits, strtoul((yyvsp[0].string), NULL, 0), strtoul((yyvsp[0].string), NULL, 0));
@@ -1352,29 +1339,29 @@
 }
     break;
 
-  case 57: /* fw_config_field: FW_CONFIG_FIELD STRING NUMBER $@5 fw_config_field_children END  */
+  case 55: /* fw_config_field: FW_CONFIG_FIELD STRING NUMBER $@5 fw_config_field_children END  */
                                      { cur_bits = NULL; }
     break;
 
-  case 58: /* $@6: %empty  */
+  case 56: /* $@6: %empty  */
                                         {
 	cur_field = get_fw_config_field((yyvsp[0].string));
 }
     break;
 
-  case 59: /* fw_config_field: FW_CONFIG_FIELD STRING $@6 fw_config_field_children END  */
+  case 57: /* fw_config_field: FW_CONFIG_FIELD STRING $@6 fw_config_field_children END  */
                                      { cur_bits = NULL; }
     break;
 
-  case 60: /* fw_config_option: FW_CONFIG_OPTION STRING NUMBER  */
+  case 58: /* fw_config_option: FW_CONFIG_OPTION STRING NUMBER  */
         { add_fw_config_option(cur_field, (yyvsp[-1].string), strtoull((yyvsp[0].string), NULL, 0)); }
     break;
 
-  case 61: /* fw_config_probe: FW_CONFIG_PROBE STRING STRING  */
+  case 59: /* fw_config_probe: FW_CONFIG_PROBE STRING STRING  */
         { add_fw_config_probe(cur_parent, (yyvsp[-1].string), (yyvsp[0].string)); }
     break;
 
-  case 62: /* ops: OPS STRING  */
+  case 60: /* ops: OPS STRING  */
         { add_device_ops(cur_parent, (yyvsp[0].string)); }
     break;
 
diff --git a/util/sconfig/sconfig.tab.h_shipped b/util/sconfig/sconfig.tab.h_shipped
index 2149db6..eb5b97c 100644
--- a/util/sconfig/sconfig.tab.h_shipped
+++ b/util/sconfig/sconfig.tab.h_shipped
@@ -83,21 +83,19 @@
     NUMBER = 284,                  /* NUMBER  */
     SUBSYSTEMID = 285,             /* SUBSYSTEMID  */
     INHERIT = 286,                 /* INHERIT  */
-    IOAPIC_IRQ = 287,              /* IOAPIC_IRQ  */
-    IOAPIC = 288,                  /* IOAPIC  */
-    PCIINT = 289,                  /* PCIINT  */
-    GENERIC = 290,                 /* GENERIC  */
-    SPI = 291,                     /* SPI  */
-    USB = 292,                     /* USB  */
-    MMIO = 293,                    /* MMIO  */
-    GPIO = 294,                    /* GPIO  */
-    MDIO = 295,                    /* MDIO  */
-    FW_CONFIG_TABLE = 296,         /* FW_CONFIG_TABLE  */
-    FW_CONFIG_FIELD = 297,         /* FW_CONFIG_FIELD  */
-    FW_CONFIG_OPTION = 298,        /* FW_CONFIG_OPTION  */
-    FW_CONFIG_PROBE = 299,         /* FW_CONFIG_PROBE  */
-    PIPE = 300,                    /* PIPE  */
-    OPS = 301                      /* OPS  */
+    PCIINT = 287,                  /* PCIINT  */
+    GENERIC = 288,                 /* GENERIC  */
+    SPI = 289,                     /* SPI  */
+    USB = 290,                     /* USB  */
+    MMIO = 291,                    /* MMIO  */
+    GPIO = 292,                    /* GPIO  */
+    MDIO = 293,                    /* MDIO  */
+    FW_CONFIG_TABLE = 294,         /* FW_CONFIG_TABLE  */
+    FW_CONFIG_FIELD = 295,         /* FW_CONFIG_FIELD  */
+    FW_CONFIG_OPTION = 296,        /* FW_CONFIG_OPTION  */
+    FW_CONFIG_PROBE = 297,         /* FW_CONFIG_PROBE  */
+    PIPE = 298,                    /* PIPE  */
+    OPS = 299                      /* OPS  */
   };
   typedef enum yytokentype yytoken_kind_t;
 #endif
diff --git a/util/sconfig/sconfig.y b/util/sconfig/sconfig.y
index 4f6ef87..17ab9a5 100644
--- a/util/sconfig/sconfig.y
+++ b/util/sconfig/sconfig.y
@@ -21,7 +21,7 @@
 	uint64_t number;
 }
 
-%token CHIP DEVICE REGISTER ALIAS REFERENCE ASSOCIATION BOOL STATUS MANDATORY BUS RESOURCE END EQUALS HEX STRING PCI PNP I2C CPU_CLUSTER CPU DOMAIN IRQ DRQ SLOT_DESC SMBIOS_DEV_INFO IO NUMBER SUBSYSTEMID INHERIT IOAPIC_IRQ IOAPIC PCIINT GENERIC SPI USB MMIO GPIO MDIO FW_CONFIG_TABLE FW_CONFIG_FIELD FW_CONFIG_OPTION FW_CONFIG_PROBE PIPE OPS
+%token CHIP DEVICE REGISTER ALIAS REFERENCE ASSOCIATION BOOL STATUS MANDATORY BUS RESOURCE END EQUALS HEX STRING PCI PNP I2C CPU_CLUSTER CPU DOMAIN IRQ DRQ SLOT_DESC SMBIOS_DEV_INFO IO NUMBER SUBSYSTEMID INHERIT PCIINT GENERIC SPI USB MMIO GPIO MDIO FW_CONFIG_TABLE FW_CONFIG_FIELD FW_CONFIG_OPTION FW_CONFIG_PROBE PIPE OPS
 %%
 devtree: { cur_parent = root_parent; } | devtree chip | devtree fw_config_table;
 
@@ -31,7 +31,7 @@
 chipchildren: chipchildren chipchild | /* empty */ ;
 chipchildren_dev: device chipchildren | chipchild_nondev chipchildren_dev;
 
-devicechildren: devicechildren device | devicechildren chip | devicechildren resource | devicechildren subsystemid | devicechildren ioapic_irq | devicechildren smbios_slot_desc | devicechildren smbios_dev_info | devicechildren registers | devicechildren fw_config_probe | devicechildren ops | /* empty */ ;
+devicechildren: devicechildren device | devicechildren chip | devicechildren resource | devicechildren subsystemid | devicechildren smbios_slot_desc | devicechildren smbios_dev_info | devicechildren registers | devicechildren fw_config_probe | devicechildren ops | /* empty */ ;
 
 chip: CHIP STRING /* == path */ {
 	$<chip_instance>$ = new_chip_instance($<string>2);
@@ -81,9 +81,6 @@
 subsystemid: SUBSYSTEMID NUMBER NUMBER INHERIT
 	{ add_pci_subsystem_ids(cur_parent, strtol($<string>2, NULL, 16), strtol($<string>3, NULL, 16), 1); };
 
-ioapic_irq: IOAPIC_IRQ NUMBER PCIINT NUMBER
-	{ add_ioapic_info(cur_parent, strtol($<string>2, NULL, 16), $<string>3, strtol($<string>4, NULL, 16)); };
-
 smbios_slot_desc: SLOT_DESC STRING STRING STRING STRING
 	{ add_slot_desc(cur_parent, $<string>2, $<string>3, $<string>4, $<string>5); };