Index: via/epia-n/dsdt.c
===================================================================
--- via/epia-n/dsdt.c	(revision 1)
+++ via/epia-n/dsdt.c	(working copy)
@@ -1,142 +1,591 @@
 /*
  * 
  * Intel ACPI Component Architecture
- * ASL Optimizing Compiler version 20060127 [Apr 23 2006]
+ * ASL Optimizing Compiler version 20061109 [Feb 21 2008]
  * Copyright (C) 2000 - 2006 Intel Corporation
  * Supports ACPI Specification Revision 3.0a
  * 
- * Compilation of "dsdt.asl" - Wed Sep  6 11:36:08 2006
+ * Compilation of "dsdt.asl" - Wed Aug  5 09:11:10 2009
  * 
  * C source code output
  *
  */
 unsigned char AmlCode[] =
 {
-    0x44,0x53,0x44,0x54,0xF0,0x03,0x00,0x00,  /* 00000000    "DSDT...." */
-    0x01,0x03,0x4C,0x58,0x42,0x49,0x4F,0x53,  /* 00000008    "..LXBIOS" */
-    0x4C,0x58,0x42,0x2D,0x44,0x53,0x44,0x54,  /* 00000010    "LXB-DSDT" */
+    0x44,0x53,0x44,0x54,0xFC,0x11,0x00,0x00,  /* 00000000    "DSDT...." */
+    0x01,0xCC,0x43,0x42,0x54,0x2D,0x56,0x32,  /* 00000008    "..CBT-V2" */
+    0x43,0x42,0x54,0x2D,0x44,0x53,0x44,0x54,  /* 00000010    "CBT-DSDT" */
     0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
-    0x27,0x01,0x06,0x20,0x10,0x12,0x5F,0x50,  /* 00000020    "'.. .._P" */
+    0x09,0x11,0x06,0x20,0x10,0x12,0x5F,0x50,  /* 00000020    "... .._P" */
     0x52,0x5F,0x5B,0x83,0x0B,0x43,0x50,0x55,  /* 00000028    "R_[..CPU" */
-    0x30,0x00,0x10,0x04,0x00,0x00,0x06,0x08,  /* 00000030    "0......." */
+    0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x08,  /* 00000030    "0......." */
     0x5F,0x53,0x30,0x5F,0x12,0x06,0x04,0x00,  /* 00000038    "_S0_...." */
     0x00,0x00,0x00,0x08,0x5F,0x53,0x35,0x5F,  /* 00000040    "...._S5_" */
-    0x12,0x08,0x04,0x0A,0x02,0x0A,0x02,0x00,  /* 00000048    "........" */
-    0x00,0x10,0x4E,0x39,0x5F,0x53,0x42,0x5F,  /* 00000050    "..N9_SB_" */
-    0x5B,0x82,0x44,0x06,0x4C,0x4E,0x4B,0x41,  /* 00000058    "[.D.LNKA" */
-    0x08,0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,  /* 00000060    "._HID.A." */
-    0x0C,0x0F,0x08,0x5F,0x55,0x49,0x44,0x01,  /* 00000068    "..._UID." */
-    0x14,0x09,0x5F,0x53,0x54,0x41,0x00,0xA4,  /* 00000070    ".._STA.." */
-    0x0A,0x0B,0x14,0x1A,0x5F,0x43,0x52,0x53,  /* 00000078    "...._CRS" */
-    0x00,0x08,0x42,0x55,0x46,0x46,0x11,0x09,  /* 00000080    "..BUFF.." */
-    0x0A,0x06,0x23,0x20,0x00,0x18,0x79,0x00,  /* 00000088    "..# ..y." */
-    0xA4,0x42,0x55,0x46,0x46,0x14,0x1A,0x5F,  /* 00000090    ".BUFF.._" */
-    0x50,0x52,0x53,0x00,0x08,0x42,0x55,0x46,  /* 00000098    "PRS..BUF" */
-    0x46,0x11,0x09,0x0A,0x06,0x23,0x20,0x06,  /* 000000A0    "F....# ." */
-    0x18,0x79,0x00,0xA4,0x42,0x55,0x46,0x46,  /* 000000A8    ".y..BUFF" */
-    0x14,0x06,0x5F,0x53,0x52,0x53,0x01,0x14,  /* 000000B0    ".._SRS.." */
-    0x06,0x5F,0x44,0x49,0x53,0x00,0x5B,0x82,  /* 000000B8    "._DIS.[." */
-    0x45,0x06,0x4C,0x4E,0x4B,0x42,0x08,0x5F,  /* 000000C0    "E.LNKB._" */
-    0x48,0x49,0x44,0x0C,0x41,0xD0,0x0C,0x0F,  /* 000000C8    "HID.A..." */
-    0x08,0x5F,0x55,0x49,0x44,0x0A,0x02,0x14,  /* 000000D0    "._UID..." */
-    0x09,0x5F,0x53,0x54,0x41,0x00,0xA4,0x0A,  /* 000000D8    "._STA..." */
-    0x0B,0x14,0x1A,0x5F,0x43,0x52,0x53,0x00,  /* 000000E0    "..._CRS." */
-    0x08,0x42,0x55,0x46,0x46,0x11,0x09,0x0A,  /* 000000E8    ".BUFF..." */
-    0x06,0x23,0x00,0x02,0x18,0x79,0x00,0xA4,  /* 000000F0    ".#...y.." */
-    0x42,0x55,0x46,0x46,0x14,0x1A,0x5F,0x50,  /* 000000F8    "BUFF.._P" */
-    0x52,0x53,0x00,0x08,0x42,0x55,0x46,0x46,  /* 00000100    "RS..BUFF" */
-    0x11,0x09,0x0A,0x06,0x23,0x20,0x06,0x18,  /* 00000108    "....# .." */
-    0x79,0x00,0xA4,0x42,0x55,0x46,0x46,0x14,  /* 00000110    "y..BUFF." */
-    0x06,0x5F,0x53,0x52,0x53,0x01,0x14,0x06,  /* 00000118    "._SRS..." */
-    0x5F,0x44,0x49,0x53,0x00,0x5B,0x82,0x45,  /* 00000120    "_DIS.[.E" */
-    0x06,0x4C,0x4E,0x4B,0x43,0x08,0x5F,0x48,  /* 00000128    ".LNKC._H" */
-    0x49,0x44,0x0C,0x41,0xD0,0x0C,0x0F,0x08,  /* 00000130    "ID.A...." */
-    0x5F,0x55,0x49,0x44,0x0A,0x03,0x14,0x09,  /* 00000138    "_UID...." */
-    0x5F,0x53,0x54,0x41,0x00,0xA4,0x0A,0x0B,  /* 00000140    "_STA...." */
-    0x14,0x1A,0x5F,0x43,0x52,0x53,0x00,0x08,  /* 00000148    ".._CRS.." */
-    0x42,0x55,0x46,0x46,0x11,0x09,0x0A,0x06,  /* 00000150    "BUFF...." */
-    0x23,0x00,0x02,0x18,0x79,0x00,0xA4,0x42,  /* 00000158    "#...y..B" */
-    0x55,0x46,0x46,0x14,0x1A,0x5F,0x50,0x52,  /* 00000160    "UFF.._PR" */
-    0x53,0x00,0x08,0x42,0x55,0x46,0x46,0x11,  /* 00000168    "S..BUFF." */
-    0x09,0x0A,0x06,0x23,0x20,0x06,0x18,0x79,  /* 00000170    "...# ..y" */
-    0x00,0xA4,0x42,0x55,0x46,0x46,0x14,0x06,  /* 00000178    "..BUFF.." */
-    0x5F,0x53,0x52,0x53,0x01,0x14,0x06,0x5F,  /* 00000180    "_SRS..._" */
-    0x44,0x49,0x53,0x00,0x5B,0x82,0x45,0x06,  /* 00000188    "DIS.[.E." */
-    0x4C,0x4E,0x4B,0x44,0x08,0x5F,0x48,0x49,  /* 00000190    "LNKD._HI" */
-    0x44,0x0C,0x41,0xD0,0x0C,0x0F,0x08,0x5F,  /* 00000198    "D.A...._" */
-    0x55,0x49,0x44,0x0A,0x04,0x14,0x09,0x5F,  /* 000001A0    "UID...._" */
-    0x53,0x54,0x41,0x00,0xA4,0x0A,0x0B,0x14,  /* 000001A8    "STA....." */
-    0x1A,0x5F,0x43,0x52,0x53,0x00,0x08,0x42,  /* 000001B0    "._CRS..B" */
-    0x55,0x46,0x46,0x11,0x09,0x0A,0x06,0x23,  /* 000001B8    "UFF....#" */
-    0x20,0x00,0x18,0x79,0x00,0xA4,0x42,0x55,  /* 000001C0    " ..y..BU" */
-    0x46,0x46,0x14,0x1A,0x5F,0x50,0x52,0x53,  /* 000001C8    "FF.._PRS" */
-    0x00,0x08,0x42,0x55,0x46,0x46,0x11,0x09,  /* 000001D0    "..BUFF.." */
-    0x0A,0x06,0x23,0x20,0x06,0x18,0x79,0x00,  /* 000001D8    "..# ..y." */
-    0xA4,0x42,0x55,0x46,0x46,0x14,0x06,0x5F,  /* 000001E0    ".BUFF.._" */
-    0x53,0x52,0x53,0x01,0x14,0x06,0x5F,0x44,  /* 000001E8    "SRS..._D" */
-    0x49,0x53,0x00,0x5B,0x82,0x4B,0x1F,0x50,  /* 000001F0    "IS.[.K.P" */
-    0x43,0x49,0x30,0x08,0x5F,0x48,0x49,0x44,  /* 000001F8    "CI0._HID" */
-    0x0C,0x41,0xD0,0x0A,0x03,0x08,0x5F,0x41,  /* 00000200    ".A...._A" */
-    0x44,0x52,0x00,0x08,0x5F,0x55,0x49,0x44,  /* 00000208    "DR.._UID" */
-    0x00,0x08,0x5F,0x42,0x42,0x4E,0x00,0x08,  /* 00000210    ".._BBN.." */
-    0x5F,0x50,0x52,0x54,0x12,0x43,0x1D,0x20,  /* 00000218    "_PRT.C. " */
-    0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x0A,0x00,  /* 00000220    "........" */
-    0x00,0x4C,0x4E,0x4B,0x41,0x00,0x12,0x0D,  /* 00000228    ".LNKA..." */
-    0x04,0x0C,0xFF,0xFF,0x0A,0x00,0x01,0x4C,  /* 00000230    ".......L" */
-    0x4E,0x4B,0x42,0x00,0x12,0x0E,0x04,0x0C,  /* 00000238    "NKB....." */
-    0xFF,0xFF,0x0A,0x00,0x0A,0x02,0x4C,0x4E,  /* 00000240    "......LN" */
-    0x4B,0x43,0x00,0x12,0x0E,0x04,0x0C,0xFF,  /* 00000248    "KC......" */
-    0xFF,0x0A,0x00,0x0A,0x03,0x4C,0x4E,0x4B,  /* 00000250    ".....LNK" */
-    0x44,0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,  /* 00000258    "D......." */
-    0x0D,0x00,0x00,0x4C,0x4E,0x4B,0x42,0x00,  /* 00000260    "...LNKB." */
-    0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x0D,0x00,  /* 00000268    "........" */
-    0x01,0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0E,  /* 00000270    ".LNKC..." */
-    0x04,0x0C,0xFF,0xFF,0x0D,0x00,0x0A,0x02,  /* 00000278    "........" */
-    0x4C,0x4E,0x4B,0x44,0x00,0x12,0x0E,0x04,  /* 00000280    "LNKD...." */
-    0x0C,0xFF,0xFF,0x0D,0x00,0x0A,0x03,0x4C,  /* 00000288    ".......L" */
-    0x4E,0x4B,0x41,0x00,0x12,0x0D,0x04,0x0C,  /* 00000290    "NKA....." */
-    0xFF,0xFF,0x10,0x00,0x00,0x4C,0x4E,0x4B,  /* 00000298    ".....LNK" */
-    0x41,0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,  /* 000002A0    "A......." */
-    0x10,0x00,0x01,0x4C,0x4E,0x4B,0x42,0x00,  /* 000002A8    "...LNKB." */
-    0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x10,0x00,  /* 000002B0    "........" */
-    0x0A,0x02,0x4C,0x4E,0x4B,0x43,0x00,0x12,  /* 000002B8    "..LNKC.." */
-    0x0E,0x04,0x0C,0xFF,0xFF,0x10,0x00,0x0A,  /* 000002C0    "........" */
-    0x03,0x4C,0x4E,0x4B,0x44,0x00,0x12,0x0D,  /* 000002C8    ".LNKD..." */
-    0x04,0x0C,0xFF,0xFF,0x11,0x00,0x00,0x4C,  /* 000002D0    ".......L" */
-    0x4E,0x4B,0x41,0x00,0x12,0x0D,0x04,0x0C,  /* 000002D8    "NKA....." */
-    0xFF,0xFF,0x11,0x00,0x01,0x4C,0x4E,0x4B,  /* 000002E0    ".....LNK" */
-    0x42,0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,  /* 000002E8    "B......." */
-    0x11,0x00,0x0A,0x02,0x4C,0x4E,0x4B,0x43,  /* 000002F0    "....LNKC" */
-    0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x11,  /* 000002F8    "........" */
-    0x00,0x0A,0x03,0x4C,0x4E,0x4B,0x44,0x00,  /* 00000300    "...LNKD." */
-    0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x12,0x00,  /* 00000308    "........" */
-    0x00,0x4C,0x4E,0x4B,0x41,0x00,0x12,0x0D,  /* 00000310    ".LNKA..." */
-    0x04,0x0C,0xFF,0xFF,0x12,0x00,0x01,0x4C,  /* 00000318    ".......L" */
-    0x4E,0x4B,0x42,0x00,0x12,0x0E,0x04,0x0C,  /* 00000320    "NKB....." */
-    0xFF,0xFF,0x12,0x00,0x0A,0x02,0x4C,0x4E,  /* 00000328    "......LN" */
-    0x4B,0x43,0x00,0x12,0x0E,0x04,0x0C,0xFF,  /* 00000330    "KC......" */
-    0xFF,0x12,0x00,0x0A,0x03,0x4C,0x4E,0x4B,  /* 00000338    ".....LNK" */
-    0x44,0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,  /* 00000340    "D......." */
-    0x13,0x00,0x00,0x4C,0x4E,0x4B,0x41,0x00,  /* 00000348    "...LNKA." */
-    0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x13,0x00,  /* 00000350    "........" */
-    0x01,0x4C,0x4E,0x4B,0x42,0x00,0x12,0x0E,  /* 00000358    ".LNKB..." */
-    0x04,0x0C,0xFF,0xFF,0x13,0x00,0x0A,0x02,  /* 00000360    "........" */
-    0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0E,0x04,  /* 00000368    "LNKC...." */
-    0x0C,0xFF,0xFF,0x13,0x00,0x0A,0x03,0x4C,  /* 00000370    ".......L" */
-    0x4E,0x4B,0x44,0x00,0x12,0x0D,0x04,0x0C,  /* 00000378    "NKD....." */
-    0xFF,0xFF,0x14,0x00,0x00,0x4C,0x4E,0x4B,  /* 00000380    ".....LNK" */
-    0x42,0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,  /* 00000388    "B......." */
-    0x14,0x00,0x01,0x4C,0x4E,0x4B,0x43,0x00,  /* 00000390    "...LNKC." */
-    0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x14,0x00,  /* 00000398    "........" */
-    0x0A,0x02,0x4C,0x4E,0x4B,0x44,0x00,0x12,  /* 000003A0    "..LNKD.." */
-    0x0E,0x04,0x0C,0xFF,0xFF,0x14,0x00,0x0A,  /* 000003A8    "........" */
-    0x03,0x4C,0x4E,0x4B,0x41,0x00,0x12,0x0D,  /* 000003B0    ".LNKA..." */
-    0x04,0x0C,0xFF,0xFF,0x01,0x00,0x00,0x4C,  /* 000003B8    ".......L" */
-    0x4E,0x4B,0x41,0x00,0x12,0x0D,0x04,0x0C,  /* 000003C0    "NKA....." */
-    0xFF,0xFF,0x01,0x00,0x01,0x4C,0x4E,0x4B,  /* 000003C8    ".....LNK" */
-    0x42,0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,  /* 000003D0    "B......." */
-    0x01,0x00,0x0A,0x02,0x4C,0x4E,0x4B,0x43,  /* 000003D8    "....LNKC" */
-    0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x01,  /* 000003E0    "........" */
-    0x00,0x0A,0x03,0x4C,0x4E,0x4B,0x44,0x00,  /* 000003E8    "...LNKD." */
-
+    0x12,0x0A,0x04,0x0A,0x02,0x0A,0x02,0x0A,  /* 00000048    "........" */
+    0x02,0x0A,0x02,0x08,0x41,0x54,0x46,0x4C,  /* 00000050    "....ATFL" */
+    0x00,0x10,0x82,0x1A,0x01,0x5F,0x53,0x42,  /* 00000058    "....._SB" */
+    0x5F,0x5B,0x82,0x89,0x19,0x01,0x50,0x43,  /* 00000060    "_[....PC" */
+    0x49,0x30,0x08,0x5F,0x48,0x49,0x44,0x0C,  /* 00000068    "I0._HID." */
+    0x41,0xD0,0x0A,0x03,0x08,0x5F,0x41,0x44,  /* 00000070    "A...._AD" */
+    0x52,0x00,0x08,0x5F,0x55,0x49,0x44,0x01,  /* 00000078    "R.._UID." */
+    0x08,0x5F,0x42,0x42,0x4E,0x00,0x08,0x5F,  /* 00000080    "._BBN.._" */
+    0x50,0x52,0x54,0x12,0x41,0x18,0x1C,0x12,  /* 00000088    "PRT.A..." */
+    0x0D,0x04,0x0C,0xFF,0xFF,0x0F,0x00,0x00,  /* 00000090    "........" */
+    0x41,0x54,0x41,0x49,0x00,0x12,0x0D,0x04,  /* 00000098    "ATAI...." */
+    0x0C,0xFF,0xFF,0x0F,0x00,0x01,0x41,0x54,  /* 000000A0    "......AT" */
+    0x41,0x49,0x00,0x12,0x0E,0x04,0x0C,0xFF,  /* 000000A8    "AI......" */
+    0xFF,0x0F,0x00,0x0A,0x02,0x41,0x54,0x41,  /* 000000B0    ".....ATA" */
+    0x49,0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,  /* 000000B8    "I......." */
+    0x0F,0x00,0x0A,0x03,0x41,0x54,0x41,0x49,  /* 000000C0    "....ATAI" */
+    0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x10,  /* 000000C8    "........" */
+    0x00,0x00,0x55,0x53,0x42,0x49,0x00,0x12,  /* 000000D0    "..USBI.." */
+    0x0D,0x04,0x0C,0xFF,0xFF,0x10,0x00,0x01,  /* 000000D8    "........" */
+    0x55,0x53,0x42,0x49,0x00,0x12,0x0E,0x04,  /* 000000E0    "USBI...." */
+    0x0C,0xFF,0xFF,0x10,0x00,0x0A,0x02,0x55,  /* 000000E8    ".......U" */
+    0x53,0x42,0x49,0x00,0x12,0x0E,0x04,0x0C,  /* 000000F0    "SBI....." */
+    0xFF,0xFF,0x10,0x00,0x0A,0x03,0x55,0x53,  /* 000000F8    "......US" */
+    0x42,0x49,0x00,0x12,0x0D,0x04,0x0C,0xFF,  /* 00000100    "BI......" */
+    0xFF,0x11,0x00,0x00,0x56,0x54,0x38,0x49,  /* 00000108    "....VT8I" */
+    0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x11,  /* 00000110    "........" */
+    0x00,0x01,0x56,0x54,0x38,0x49,0x00,0x12,  /* 00000118    "..VT8I.." */
+    0x0E,0x04,0x0C,0xFF,0xFF,0x11,0x00,0x0A,  /* 00000120    "........" */
+    0x02,0x56,0x54,0x38,0x49,0x00,0x12,0x0E,  /* 00000128    ".VT8I..." */
+    0x04,0x0C,0xFF,0xFF,0x11,0x00,0x0A,0x03,  /* 00000130    "........" */
+    0x56,0x54,0x38,0x49,0x00,0x12,0x0D,0x04,  /* 00000138    "VT8I...." */
+    0x0C,0xFF,0xFF,0x12,0x00,0x00,0x4E,0x49,  /* 00000140    "......NI" */
+    0x43,0x49,0x00,0x12,0x0D,0x04,0x0C,0xFF,  /* 00000148    "CI......" */
+    0xFF,0x12,0x00,0x01,0x4E,0x49,0x43,0x49,  /* 00000150    "....NICI" */
+    0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x12,  /* 00000158    "........" */
+    0x00,0x0A,0x02,0x4E,0x49,0x43,0x49,0x00,  /* 00000160    "...NICI." */
+    0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x12,0x00,  /* 00000168    "........" */
+    0x0A,0x03,0x4E,0x49,0x43,0x49,0x00,0x12,  /* 00000170    "..NICI.." */
+    0x0B,0x04,0x0C,0xFF,0xFF,0x01,0x00,0x00,  /* 00000178    "........" */
+    0x00,0x0A,0x10,0x12,0x0B,0x04,0x0C,0xFF,  /* 00000180    "........" */
+    0xFF,0x01,0x00,0x01,0x00,0x0A,0x11,0x12,  /* 00000188    "........" */
+    0x0C,0x04,0x0C,0xFF,0xFF,0x01,0x00,0x0A,  /* 00000190    "........" */
+    0x02,0x00,0x0A,0x12,0x12,0x0C,0x04,0x0C,  /* 00000198    "........" */
+    0xFF,0xFF,0x01,0x00,0x0A,0x03,0x00,0x0A,  /* 000001A0    "........" */
+    0x13,0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x14,  /* 000001A8    "........" */
+    0x00,0x00,0x00,0x0A,0x12,0x12,0x0B,0x04,  /* 000001B0    "........" */
+    0x0C,0xFF,0xFF,0x14,0x00,0x01,0x00,0x0A,  /* 000001B8    "........" */
+    0x13,0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x14,  /* 000001C0    "........" */
+    0x00,0x0A,0x02,0x00,0x0A,0x10,0x12,0x0C,  /* 000001C8    "........" */
+    0x04,0x0C,0xFF,0xFF,0x14,0x00,0x0A,0x03,  /* 000001D0    "........" */
+    0x00,0x0A,0x11,0x12,0x0B,0x04,0x0C,0xFF,  /* 000001D8    "........" */
+    0xFF,0x13,0x00,0x00,0x00,0x0A,0x13,0x12,  /* 000001E0    "........" */
+    0x0B,0x04,0x0C,0xFF,0xFF,0x13,0x00,0x01,  /* 000001E8    "........" */
+    0x00,0x0A,0x12,0x12,0x0C,0x04,0x0C,0xFF,  /* 000001F0    "........" */
+    0xFF,0x13,0x00,0x0A,0x02,0x00,0x0A,0x11,  /* 000001F8    "........" */
+    0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x13,0x00,  /* 00000200    "........" */
+    0x0A,0x03,0x00,0x0A,0x10,0x5B,0x82,0x40,  /* 00000208    ".....[.@" */
+    0x13,0x56,0x54,0x38,0x52,0x08,0x5F,0x41,  /* 00000210    ".VT8R._A" */
+    0x44,0x52,0x0C,0x00,0x00,0x11,0x00,0x5B,  /* 00000218    "DR.....[" */
+    0x80,0x55,0x53,0x42,0x43,0x02,0x0A,0x50,  /* 00000220    ".USBC..P" */
+    0x0A,0x02,0x10,0x1F,0x5C,0x00,0x5B,0x81,  /* 00000228    "....\.[." */
+    0x1A,0x5C,0x2F,0x04,0x5F,0x53,0x42,0x5F,  /* 00000230    ".\/._SB_" */
+    0x50,0x43,0x49,0x30,0x56,0x54,0x38,0x52,  /* 00000238    "PCI0VT8R" */
+    0x55,0x53,0x42,0x43,0x01,0x49,0x44,0x45,  /* 00000240    "USBC.IDE" */
+    0x42,0x08,0x5B,0x80,0x56,0x54,0x53,0x42,  /* 00000248    "B.[.VTSB" */
+    0x02,0x00,0x0A,0xE8,0x10,0x4A,0x0E,0x5C,  /* 00000250    ".....J.\" */
+    0x00,0x5B,0x81,0x44,0x0E,0x5C,0x2F,0x04,  /* 00000258    ".[.D.\/." */
+    0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30,  /* 00000260    "_SB_PCI0" */
+    0x56,0x54,0x38,0x52,0x56,0x54,0x53,0x42,  /* 00000268    "VT8RVTSB" */
+    0x01,0x00,0x10,0x44,0x45,0x49,0x44,0x10,  /* 00000270    "...DEID." */
+    0x00,0x40,0x14,0x49,0x44,0x32,0x43,0x08,  /* 00000278    ".@.ID2C." */
+    0x49,0x44,0x32,0x44,0x08,0x49,0x44,0x32,  /* 00000280    "ID2D.ID2" */
+    0x45,0x08,0x49,0x44,0x32,0x46,0x08,0x00,  /* 00000288    "E.ID2F.." */
+    0x40,0x0A,0x50,0x49,0x52,0x45,0x04,0x50,  /* 00000290    "@.PIRE.P" */
+    0x49,0x52,0x46,0x04,0x50,0x49,0x52,0x47,  /* 00000298    "IRF.PIRG" */
+    0x04,0x50,0x49,0x52,0x48,0x04,0x50,0x4F,  /* 000002A0    ".PIRH.PO" */
+    0x4C,0x45,0x01,0x50,0x4F,0x4C,0x46,0x01,  /* 000002A8    "LE.POLF." */
+    0x50,0x4F,0x4C,0x47,0x01,0x50,0x4F,0x4C,  /* 000002B0    "POLG.POL" */
+    0x48,0x01,0x45,0x4E,0x52,0x38,0x01,0x00,  /* 000002B8    "H.ENR8.." */
+    0x4B,0x04,0x45,0x53,0x42,0x34,0x01,0x45,  /* 000002C0    "K.ESB4.E" */
+    0x53,0x42,0x33,0x01,0x45,0x53,0x42,0x32,  /* 000002C8    "SB3.ESB2" */
+    0x01,0x45,0x49,0x44,0x45,0x01,0x45,0x55,  /* 000002D0    ".EIDE.EU" */
+    0x53,0x42,0x01,0x45,0x53,0x42,0x31,0x01,  /* 000002D8    "SB.ESB1." */
+    0x45,0x41,0x4D,0x43,0x02,0x45,0x4B,0x42,  /* 000002E0    "EAMC.EKB" */
+    0x43,0x01,0x4B,0x42,0x43,0x43,0x01,0x45,  /* 000002E8    "C.KBCC.E" */
+    0x50,0x53,0x32,0x01,0x45,0x52,0x54,0x43,  /* 000002F0    "PS2.ERTC" */
+    0x01,0x45,0x4C,0x41,0x4E,0x01,0x00,0x02,  /* 000002F8    ".ELAN..." */
+    0x55,0x53,0x42,0x44,0x01,0x53,0x49,0x52,  /* 00000300    "USBD.SIR" */
+    0x51,0x08,0x00,0x10,0x50,0x49,0x52,0x41,  /* 00000308    "Q...PIRA" */
+    0x08,0x50,0x49,0x42,0x43,0x08,0x50,0x49,  /* 00000310    ".PIBC.PI" */
+    0x52,0x44,0x08,0x00,0x48,0x0E,0x42,0x53,  /* 00000318    "RD..H.BS" */
+    0x41,0x54,0x01,0x00,0x47,0x0F,0x50,0x57,  /* 00000320    "AT..G.PW" */
+    0x43,0x31,0x02,0x47,0x50,0x4F,0x31,0x01,  /* 00000328    "C1.GPO1." */
+    0x47,0x50,0x4F,0x32,0x01,0x47,0x50,0x4F,  /* 00000330    "GPO2.GPO" */
+    0x33,0x01,0x50,0x4C,0x4C,0x44,0x01,0x5B,  /* 00000338    "3.PLLD.[" */
+    0x82,0x46,0x06,0x53,0x41,0x54,0x41,0x08,  /* 00000340    ".F.SATA." */
+    0x5F,0x41,0x44,0x52,0x0C,0x00,0x00,0x0F,  /* 00000348    "_ADR...." */
+    0x00,0x14,0x25,0x5F,0x53,0x54,0x41,0x00,  /* 00000350    "..%_STA." */
+    0xA0,0x0C,0x92,0x93,0x56,0x49,0x44,0x5F,  /* 00000358    "....VID_" */
+    0x0B,0x06,0x11,0xA4,0x00,0xA1,0x11,0xA0,  /* 00000360    "........" */
+    0x0A,0x93,0x43,0x4D,0x44,0x52,0x00,0xA4,  /* 00000368    "..CMDR.." */
+    0x0A,0x0D,0xA1,0x04,0xA4,0x0A,0x0F,0x5B,  /* 00000370    ".......[" */
+    0x80,0x53,0x41,0x50,0x52,0x02,0x00,0x0A,  /* 00000378    ".SAPR..." */
+    0xC2,0x5B,0x81,0x24,0x53,0x41,0x50,0x52,  /* 00000380    ".[.$SAPR" */
+    0x01,0x56,0x49,0x44,0x5F,0x10,0x00,0x10,  /* 00000388    ".VID_..." */
+    0x43,0x4D,0x44,0x52,0x03,0x00,0x4D,0x1B,  /* 00000390    "CMDR..M." */
+    0x49,0x44,0x45,0x49,0x08,0x00,0x40,0x06,  /* 00000398    "IDEI..@." */
+    0x00,0x06,0x45,0x50,0x48,0x59,0x01,0x5B,  /* 000003A0    "..EPHY.[" */
+    0x82,0x4F,0x38,0x50,0x41,0x54,0x41,0x08,  /* 000003A8    ".O8PATA." */
+    0x5F,0x41,0x44,0x52,0x0C,0x01,0x00,0x0F,  /* 000003B0    "_ADR...." */
+    0x00,0x08,0x52,0x45,0x47,0x46,0x01,0x14,  /* 000003B8    "..REGF.." */
+    0x29,0x5F,0x53,0x54,0x41,0x00,0xA0,0x0C,  /* 000003C0    ")_STA..." */
+    0x92,0x93,0x56,0x49,0x44,0x5F,0x0B,0x06,  /* 000003C8    "..VID_.." */
+    0x11,0xA4,0x00,0xA1,0x15,0x50,0x4D,0x45,  /* 000003D0    ".....PME" */
+    0x58,0xA0,0x0A,0x93,0x43,0x4D,0x44,0x52,  /* 000003D8    "X...CMDR" */
+    0x00,0xA4,0x0A,0x0D,0xA1,0x04,0xA4,0x0A,  /* 000003E0    "........" */
+    0x0F,0x14,0x12,0x5F,0x52,0x45,0x47,0x02,  /* 000003E8    "..._REG." */
+    0xA0,0x0B,0x93,0x68,0x0A,0x02,0x70,0x69,  /* 000003F0    "...h..pi" */
+    0x52,0x45,0x47,0x46,0x08,0x54,0x49,0x4D,  /* 000003F8    "REGF.TIM" */
+    0x30,0x12,0x4C,0x06,0x07,0x12,0x0E,0x05,  /* 00000400    "0.L....." */
+    0x0A,0x78,0x0A,0xB4,0x0A,0xF0,0x0B,0x7F,  /* 00000408    ".x......" */
+    0x01,0x0B,0x58,0x02,0x12,0x0C,0x05,0x0A,  /* 00000410    "..X....." */
+    0x20,0x0A,0x22,0x0A,0x33,0x0A,0x47,0x0A,  /* 00000418    " .".3.G." */
+    0x5D,0x12,0x0A,0x05,0x0A,0x04,0x0A,0x03,  /* 00000420    "]......." */
+    0x0A,0x02,0x01,0x00,0x12,0x07,0x04,0x0A,  /* 00000428    "........" */
+    0x02,0x01,0x00,0x00,0x12,0x10,0x07,0x0A,  /* 00000430    "........" */
+    0x78,0x0A,0x50,0x0A,0x3C,0x0A,0x2D,0x0A,  /* 00000438    "x.P.<.-." */
+    0x1E,0x0A,0x14,0x0A,0x0F,0x12,0x19,0x0F,  /* 00000440    "........" */
+    0x0A,0x06,0x0A,0x05,0x0A,0x04,0x0A,0x04,  /* 00000448    "........" */
+    0x0A,0x03,0x0A,0x03,0x0A,0x02,0x0A,0x02,  /* 00000450    "........" */
+    0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x12,  /* 00000458    "........" */
+    0x0E,0x07,0x0A,0x0E,0x0A,0x08,0x0A,0x06,  /* 00000460    "........" */
+    0x0A,0x04,0x0A,0x02,0x01,0x00,0x14,0x4E,  /* 00000468    ".......N" */
+    0x04,0x50,0x4D,0x45,0x58,0x08,0xA0,0x46,  /* 00000470    ".PMEX..F" */
+    0x04,0x52,0x45,0x47,0x46,0xA0,0x0F,0x93,  /* 00000478    ".REGF..." */
+    0x50,0x4D,0x50,0x54,0x0A,0xA8,0x70,0x0A,  /* 00000480    "PMPT..p." */
+    0x5D,0x50,0x4D,0x50,0x54,0xA0,0x0F,0x93,  /* 00000488    "]PMPT..." */
+    0x50,0x53,0x50,0x54,0x0A,0xA8,0x70,0x0A,  /* 00000490    "PSPT..p." */
+    0x5D,0x50,0x53,0x50,0x54,0xA0,0x0F,0x93,  /* 00000498    "]PSPT..." */
+    0x53,0x4D,0x50,0x54,0x0A,0xA8,0x70,0x0A,  /* 000004A0    "SMPT..p." */
+    0x5D,0x53,0x4D,0x50,0x54,0xA0,0x0F,0x93,  /* 000004A8    "]SMPT..." */
+    0x53,0x53,0x50,0x54,0x0A,0xA8,0x70,0x0A,  /* 000004B0    "SSPT..p." */
+    0x5D,0x53,0x53,0x50,0x54,0x14,0x4A,0x0C,  /* 000004B8    "]SSPT.J." */
+    0x47,0x54,0x46,0x5F,0x0C,0x70,0x11,0x0A,  /* 000004C0    "GTF_.p.." */
+    0x0A,0x07,0x03,0x00,0x00,0x00,0x00,0xA0,  /* 000004C8    "........" */
+    0xEF,0x61,0x70,0x11,0x0A,0x0A,0x07,0x03,  /* 000004D0    ".ap....." */
+    0x00,0x00,0x00,0x00,0xA0,0xEF,0x62,0x8C,  /* 000004D8    "......b." */
+    0x61,0x01,0x4D,0x4F,0x44,0x45,0x8C,0x62,  /* 000004E0    "a.MODE.b" */
+    0x01,0x55,0x4D,0x4F,0x44,0x8C,0x61,0x0A,  /* 000004E8    ".UMOD.a." */
+    0x05,0x50,0x43,0x48,0x41,0x8C,0x62,0x0A,  /* 000004F0    ".PCHA.b." */
+    0x05,0x55,0x43,0x48,0x41,0x7B,0x68,0x0A,  /* 000004F8    ".UCHA{h." */
+    0x03,0x63,0xA0,0x15,0x93,0x7B,0x63,0x01,  /* 00000500    ".c...{c." */
+    0x00,0x01,0x70,0x0A,0xB0,0x50,0x43,0x48,  /* 00000508    "..p..PCH" */
+    0x41,0x70,0x0A,0xB0,0x55,0x43,0x48,0x41,  /* 00000510    "Ap..UCHA" */
+    0xA0,0x1F,0x69,0x70,0x83,0x88,0x83,0x88,  /* 00000518    "..ip...." */
+    0x54,0x49,0x4D,0x30,0x0A,0x05,0x00,0x6A,  /* 00000520    "TIM0...j" */
+    0x00,0x55,0x4D,0x4F,0x44,0x7D,0x55,0x4D,  /* 00000528    ".UMOD}UM" */
+    0x4F,0x44,0x0A,0x40,0x55,0x4D,0x4F,0x44,  /* 00000530    "OD.@UMOD" */
+    0xA1,0x25,0x70,0x89,0x83,0x88,0x54,0x49,  /* 00000538    ".%p...TI" */
+    0x4D,0x30,0x01,0x00,0x01,0x6B,0x00,0x00,  /* 00000540    "M0...k.." */
+    0x00,0x60,0x7D,0x0A,0x20,0x83,0x88,0x83,  /* 00000548    ".`}. ..." */
+    0x88,0x54,0x49,0x4D,0x30,0x0A,0x03,0x00,  /* 00000550    ".TIM0..." */
+    0x60,0x00,0x55,0x4D,0x4F,0x44,0x70,0x89,  /* 00000558    "`.UMODp." */
+    0x83,0x88,0x54,0x49,0x4D,0x30,0x01,0x00,  /* 00000560    "..TIM0.." */
+    0x01,0x6B,0x00,0x00,0x00,0x60,0x7D,0x0A,  /* 00000568    ".k...`}." */
+    0x08,0x83,0x88,0x83,0x88,0x54,0x49,0x4D,  /* 00000570    ".....TIM" */
+    0x30,0x0A,0x02,0x00,0x60,0x00,0x4D,0x4F,  /* 00000578    "0...`.MO" */
+    0x44,0x45,0x73,0x61,0x62,0x66,0xA4,0x66,  /* 00000580    "DEsabf.f" */
+    0x5B,0x80,0x50,0x41,0x50,0x52,0x02,0x00,  /* 00000588    "[.PAPR.." */
+    0x0A,0xC2,0x5B,0x81,0x42,0x08,0x50,0x41,  /* 00000590    "..[.B.PA" */
+    0x50,0x52,0x01,0x56,0x49,0x44,0x5F,0x10,  /* 00000598    "PR.VID_." */
+    0x00,0x10,0x43,0x4D,0x44,0x52,0x03,0x00,  /* 000005A0    "..CMDR.." */
+    0x25,0x45,0x4E,0x41,0x54,0x04,0x00,0x44,  /* 000005A8    "%ENAT..D" */
+    0x19,0x49,0x44,0x45,0x49,0x08,0x00,0x18,  /* 000005B0    ".IDEI..." */
+    0x45,0x53,0x43,0x48,0x01,0x45,0x50,0x43,  /* 000005B8    "ESCH.EPC" */
+    0x48,0x01,0x00,0x3E,0x53,0x53,0x50,0x54,  /* 000005C0    "H..>SSPT" */
+    0x08,0x53,0x4D,0x50,0x54,0x08,0x50,0x53,  /* 000005C8    ".SMPT.PS" */
+    0x50,0x54,0x08,0x50,0x4D,0x50,0x54,0x08,  /* 000005D0    "PT.PMPT." */
+    0x00,0x20,0x53,0x53,0x55,0x54,0x04,0x53,  /* 000005D8    ". SSUT.S" */
+    0x53,0x43,0x54,0x01,0x53,0x53,0x55,0x45,  /* 000005E0    "SCT.SSUE" */
+    0x03,0x53,0x4D,0x55,0x54,0x04,0x53,0x4D,  /* 000005E8    ".SMUT.SM" */
+    0x43,0x54,0x01,0x53,0x4D,0x55,0x45,0x03,  /* 000005F0    "CT.SMUE." */
+    0x50,0x53,0x55,0x54,0x04,0x50,0x53,0x43,  /* 000005F8    "PSUT.PSC" */
+    0x54,0x01,0x50,0x53,0x55,0x45,0x03,0x50,  /* 00000600    "T.PSUE.P" */
+    0x4D,0x55,0x54,0x04,0x50,0x4D,0x43,0x54,  /* 00000608    "MUT.PMCT" */
+    0x01,0x50,0x4D,0x55,0x45,0x03,0x5B,0x82,  /* 00000610    ".PMUE.[." */
+    0x4F,0x06,0x43,0x48,0x4E,0x30,0x08,0x5F,  /* 00000618    "O.CHN0._" */
+    0x41,0x44,0x52,0x00,0x14,0x16,0x5F,0x53,  /* 00000620    "ADR..._S" */
+    0x54,0x41,0x00,0xA0,0x0A,0x92,0x93,0x45,  /* 00000628    "TA.....E" */
+    0x50,0x43,0x48,0x01,0xA4,0x00,0xA1,0x04,  /* 00000630    "PCH....." */
+    0xA4,0x0A,0x0F,0x5B,0x82,0x24,0x44,0x52,  /* 00000638    "...[.$DR" */
+    0x56,0x30,0x08,0x5F,0x41,0x44,0x52,0x00,  /* 00000640    "V0._ADR." */
+    0x14,0x18,0x5F,0x47,0x54,0x46,0x00,0xA4,  /* 00000648    ".._GTF.." */
+    0x47,0x54,0x46,0x5F,0x00,0x50,0x4D,0x55,  /* 00000650    "GTF_.PMU" */
+    0x45,0x50,0x4D,0x55,0x54,0x50,0x4D,0x50,  /* 00000658    "EPMUTPMP" */
+    0x54,0x5B,0x82,0x24,0x44,0x52,0x56,0x31,  /* 00000660    "T[.$DRV1" */
+    0x08,0x5F,0x41,0x44,0x52,0x01,0x14,0x18,  /* 00000668    "._ADR..." */
+    0x5F,0x47,0x54,0x46,0x00,0xA4,0x47,0x54,  /* 00000670    "_GTF..GT" */
+    0x46,0x5F,0x01,0x50,0x53,0x55,0x45,0x50,  /* 00000678    "F_.PSUEP" */
+    0x53,0x55,0x54,0x50,0x53,0x50,0x54,0x5B,  /* 00000680    "SUTPSPT[" */
+    0x82,0x4F,0x0A,0x43,0x48,0x4E,0x31,0x08,  /* 00000688    ".O.CHN1." */
+    0x5F,0x41,0x44,0x52,0x01,0x14,0x44,0x05,  /* 00000690    "_ADR..D." */
+    0x5F,0x53,0x54,0x41,0x00,0xA0,0x2D,0x92,  /* 00000698    "_STA..-." */
+    0x93,0x41,0x54,0x46,0x4C,0x0A,0x02,0xA0,  /* 000006A0    ".ATFL..." */
+    0x11,0x93,0x5E,0x5E,0x5E,0x2E,0x53,0x41,  /* 000006A8    "..^^^.SA" */
+    0x54,0x41,0x45,0x50,0x48,0x59,0x01,0xA4,  /* 000006B0    "TAEPHY.." */
+    0x00,0xA1,0x11,0xA0,0x0A,0x92,0x93,0x45,  /* 000006B8    ".......E" */
+    0x53,0x43,0x48,0x01,0xA4,0x00,0xA1,0x04,  /* 000006C0    "SCH....." */
+    0xA4,0x0A,0x0F,0xA1,0x1E,0xA0,0x18,0x93,  /* 000006C8    "........" */
+    0x41,0x54,0x46,0x4C,0x0A,0x02,0xA0,0x0A,  /* 000006D0    "ATFL...." */
+    0x92,0x93,0x45,0x53,0x43,0x48,0x01,0xA4,  /* 000006D8    "..ESCH.." */
+    0x00,0xA1,0x04,0xA4,0x0A,0x0F,0xA1,0x03,  /* 000006E0    "........" */
+    0xA4,0x00,0x5B,0x82,0x25,0x44,0x52,0x56,  /* 000006E8    "..[.%DRV" */
+    0x30,0x08,0x5F,0x41,0x44,0x52,0x00,0x14,  /* 000006F0    "0._ADR.." */
+    0x19,0x5F,0x47,0x54,0x46,0x00,0xA4,0x47,  /* 000006F8    "._GTF..G" */
+    0x54,0x46,0x5F,0x0A,0x02,0x53,0x4D,0x55,  /* 00000700    "TF_..SMU" */
+    0x45,0x53,0x4D,0x55,0x54,0x53,0x4D,0x50,  /* 00000708    "ESMUTSMP" */
+    0x54,0x5B,0x82,0x25,0x44,0x52,0x56,0x31,  /* 00000710    "T[.%DRV1" */
+    0x08,0x5F,0x41,0x44,0x52,0x01,0x14,0x19,  /* 00000718    "._ADR..." */
+    0x5F,0x47,0x54,0x46,0x00,0xA4,0x47,0x54,  /* 00000720    "_GTF..GT" */
+    0x46,0x5F,0x0A,0x03,0x53,0x53,0x55,0x45,  /* 00000728    "F_..SSUE" */
+    0x53,0x53,0x55,0x54,0x53,0x53,0x50,0x54,  /* 00000730    "SSUTSSPT" */
+    0x5B,0x82,0x40,0x07,0x55,0x53,0x42,0x30,  /* 00000738    "[.@.USB0" */
+    0x08,0x5F,0x41,0x44,0x52,0x0C,0x00,0x00,  /* 00000740    "._ADR..." */
+    0x10,0x00,0x08,0x5F,0x50,0x52,0x57,0x12,  /* 00000748    "..._PRW." */
+    0x06,0x02,0x0A,0x0E,0x0A,0x03,0x5B,0x80,  /* 00000750    "......[." */
+    0x55,0x32,0x46,0x30,0x02,0x00,0x0A,0xC2,  /* 00000758    "U2F0...." */
+    0x5B,0x81,0x22,0x55,0x32,0x46,0x30,0x01,  /* 00000760    "[."U2F0." */
+    0x56,0x49,0x44,0x5F,0x10,0x00,0x10,0x43,  /* 00000768    "VID_...C" */
+    0x4D,0x44,0x52,0x03,0x00,0x4D,0x1B,0x55,  /* 00000770    "MDR..M.U" */
+    0x30,0x49,0x52,0x04,0x00,0x4C,0x23,0x45,  /* 00000778    "0IR..L#E" */
+    0x43,0x44,0x58,0x02,0x14,0x25,0x5F,0x53,  /* 00000780    "CDX..%_S" */
+    0x54,0x41,0x00,0xA0,0x0C,0x92,0x93,0x56,  /* 00000788    "TA.....V" */
+    0x49,0x44,0x5F,0x0B,0x06,0x11,0xA4,0x00,  /* 00000790    "ID_....." */
+    0xA1,0x11,0xA0,0x0A,0x93,0x43,0x4D,0x44,  /* 00000798    ".....CMD" */
+    0x52,0x00,0xA4,0x0A,0x0D,0xA1,0x04,0xA4,  /* 000007A0    "R......." */
+    0x0A,0x0F,0x5B,0x82,0x40,0x07,0x55,0x53,  /* 000007A8    "..[.@.US" */
+    0x42,0x31,0x08,0x5F,0x41,0x44,0x52,0x0C,  /* 000007B0    "B1._ADR." */
+    0x01,0x00,0x10,0x00,0x08,0x5F,0x50,0x52,  /* 000007B8    "....._PR" */
+    0x57,0x12,0x06,0x02,0x0A,0x0E,0x0A,0x03,  /* 000007C0    "W......." */
+    0x5B,0x80,0x55,0x32,0x46,0x31,0x02,0x00,  /* 000007C8    "[.U2F1.." */
+    0x0A,0xC2,0x5B,0x81,0x22,0x55,0x32,0x46,  /* 000007D0    "..[."U2F" */
+    0x31,0x01,0x56,0x49,0x44,0x5F,0x10,0x00,  /* 000007D8    "1.VID_.." */
+    0x10,0x43,0x4D,0x44,0x52,0x03,0x00,0x4D,  /* 000007E0    ".CMDR..M" */
+    0x1B,0x55,0x31,0x49,0x52,0x04,0x00,0x4C,  /* 000007E8    ".U1IR..L" */
+    0x23,0x45,0x43,0x44,0x58,0x02,0x14,0x25,  /* 000007F0    "#ECDX..%" */
+    0x5F,0x53,0x54,0x41,0x00,0xA0,0x0C,0x92,  /* 000007F8    "_STA...." */
+    0x93,0x56,0x49,0x44,0x5F,0x0B,0x06,0x11,  /* 00000800    ".VID_..." */
+    0xA4,0x00,0xA1,0x11,0xA0,0x0A,0x93,0x43,  /* 00000808    ".......C" */
+    0x4D,0x44,0x52,0x00,0xA4,0x0A,0x0D,0xA1,  /* 00000810    "MDR....." */
+    0x04,0xA4,0x0A,0x0F,0x5B,0x82,0x40,0x07,  /* 00000818    "....[.@." */
+    0x55,0x53,0x42,0x32,0x08,0x5F,0x41,0x44,  /* 00000820    "USB2._AD" */
+    0x52,0x0C,0x02,0x00,0x10,0x00,0x08,0x5F,  /* 00000828    "R......_" */
+    0x50,0x52,0x57,0x12,0x06,0x02,0x0A,0x0E,  /* 00000830    "PRW....." */
+    0x0A,0x03,0x5B,0x80,0x55,0x32,0x46,0x32,  /* 00000838    "..[.U2F2" */
+    0x02,0x00,0x0A,0xC2,0x5B,0x81,0x22,0x55,  /* 00000840    "....[."U" */
+    0x32,0x46,0x32,0x01,0x56,0x49,0x44,0x5F,  /* 00000848    "2F2.VID_" */
+    0x10,0x00,0x10,0x43,0x4D,0x44,0x52,0x03,  /* 00000850    "...CMDR." */
+    0x00,0x4D,0x1B,0x55,0x32,0x49,0x52,0x04,  /* 00000858    ".M.U2IR." */
+    0x00,0x4C,0x23,0x45,0x43,0x44,0x58,0x02,  /* 00000860    ".L#ECDX." */
+    0x14,0x25,0x5F,0x53,0x54,0x41,0x00,0xA0,  /* 00000868    ".%_STA.." */
+    0x0C,0x92,0x93,0x56,0x49,0x44,0x5F,0x0B,  /* 00000870    "...VID_." */
+    0x06,0x11,0xA4,0x00,0xA1,0x11,0xA0,0x0A,  /* 00000878    "........" */
+    0x93,0x43,0x4D,0x44,0x52,0x00,0xA4,0x0A,  /* 00000880    ".CMDR..." */
+    0x0D,0xA1,0x04,0xA4,0x0A,0x0F,0x5B,0x82,  /* 00000888    "......[." */
+    0x40,0x07,0x55,0x53,0x42,0x33,0x08,0x5F,  /* 00000890    "@.USB3._" */
+    0x41,0x44,0x52,0x0C,0x03,0x00,0x10,0x00,  /* 00000898    "ADR....." */
+    0x08,0x5F,0x50,0x52,0x57,0x12,0x06,0x02,  /* 000008A0    "._PRW..." */
+    0x0A,0x0E,0x0A,0x03,0x5B,0x80,0x55,0x32,  /* 000008A8    "....[.U2" */
+    0x46,0x33,0x02,0x00,0x0A,0xC2,0x5B,0x81,  /* 000008B0    "F3....[." */
+    0x22,0x55,0x32,0x46,0x33,0x01,0x56,0x49,  /* 000008B8    ""U2F3.VI" */
+    0x44,0x5F,0x10,0x00,0x10,0x43,0x4D,0x44,  /* 000008C0    "D_...CMD" */
+    0x52,0x03,0x00,0x4D,0x1B,0x55,0x33,0x49,  /* 000008C8    "R..M.U3I" */
+    0x52,0x04,0x00,0x4C,0x23,0x45,0x43,0x44,  /* 000008D0    "R..L#ECD" */
+    0x58,0x02,0x14,0x25,0x5F,0x53,0x54,0x41,  /* 000008D8    "X..%_STA" */
+    0x00,0xA0,0x0C,0x92,0x93,0x56,0x49,0x44,  /* 000008E0    ".....VID" */
+    0x5F,0x0B,0x06,0x11,0xA4,0x00,0xA1,0x11,  /* 000008E8    "_......." */
+    0xA0,0x0A,0x93,0x43,0x4D,0x44,0x52,0x00,  /* 000008F0    "...CMDR." */
+    0xA4,0x0A,0x0D,0xA1,0x04,0xA4,0x0A,0x0F,  /* 000008F8    "........" */
+    0x5B,0x82,0x40,0x07,0x55,0x53,0x42,0x34,  /* 00000900    "[.@.USB4" */
+    0x08,0x5F,0x41,0x44,0x52,0x0C,0x04,0x00,  /* 00000908    "._ADR..." */
+    0x10,0x00,0x08,0x5F,0x50,0x52,0x57,0x12,  /* 00000910    "..._PRW." */
+    0x06,0x02,0x0A,0x0E,0x0A,0x03,0x5B,0x80,  /* 00000918    "......[." */
+    0x55,0x32,0x46,0x34,0x02,0x00,0x0A,0xC2,  /* 00000920    "U2F4...." */
+    0x5B,0x81,0x22,0x55,0x32,0x46,0x34,0x01,  /* 00000928    "[."U2F4." */
+    0x56,0x49,0x44,0x5F,0x10,0x00,0x10,0x43,  /* 00000930    "VID_...C" */
+    0x4D,0x44,0x52,0x03,0x00,0x4D,0x1B,0x55,  /* 00000938    "MDR..M.U" */
+    0x34,0x49,0x52,0x04,0x00,0x4C,0x23,0x45,  /* 00000940    "4IR..L#E" */
+    0x43,0x44,0x58,0x02,0x14,0x25,0x5F,0x53,  /* 00000948    "CDX..%_S" */
+    0x54,0x41,0x00,0xA0,0x0C,0x92,0x93,0x56,  /* 00000950    "TA.....V" */
+    0x49,0x44,0x5F,0x0B,0x06,0x11,0xA4,0x00,  /* 00000958    "ID_....." */
+    0xA1,0x11,0xA0,0x0A,0x93,0x43,0x4D,0x44,  /* 00000960    ".....CMD" */
+    0x52,0x00,0xA4,0x0A,0x0D,0xA1,0x04,0xA4,  /* 00000968    "R......." */
+    0x0A,0x0F,0x5B,0x82,0x48,0x06,0x4E,0x49,  /* 00000970    "..[.H.NI" */
+    0x43,0x30,0x08,0x5F,0x41,0x44,0x52,0x0C,  /* 00000978    "C0._ADR." */
+    0x00,0x00,0x12,0x00,0x08,0x5F,0x50,0x52,  /* 00000980    "....._PR" */
+    0x57,0x12,0x06,0x02,0x0A,0x03,0x0A,0x05,  /* 00000988    "W......." */
+    0x5B,0x80,0x4E,0x49,0x43,0x30,0x02,0x00,  /* 00000990    "[.NIC0.." */
+    0x0A,0xC2,0x5B,0x81,0x1A,0x4E,0x49,0x43,  /* 00000998    "..[..NIC" */
+    0x30,0x01,0x56,0x49,0x44,0x5F,0x10,0x00,  /* 000009A0    "0.VID_.." */
+    0x10,0x43,0x4D,0x44,0x52,0x03,0x00,0x4D,  /* 000009A8    ".CMDR..M" */
+    0x1B,0x4E,0x49,0x49,0x52,0x04,0x14,0x25,  /* 000009B0    ".NIIR..%" */
+    0x5F,0x53,0x54,0x41,0x00,0xA0,0x0C,0x92,  /* 000009B8    "_STA...." */
+    0x93,0x56,0x49,0x44,0x5F,0x0B,0x06,0x11,  /* 000009C0    ".VID_..." */
+    0xA4,0x00,0xA1,0x11,0xA0,0x0A,0x93,0x43,  /* 000009C8    ".......C" */
+    0x4D,0x44,0x52,0x00,0xA4,0x0A,0x0D,0xA1,  /* 000009D0    "MDR....." */
+    0x04,0xA4,0x0A,0x0F,0x5B,0x82,0x1B,0x41,  /* 000009D8    "....[..A" */
+    0x43,0x39,0x37,0x08,0x5F,0x41,0x44,0x52,  /* 000009E0    "C97._ADR" */
+    0x0C,0x05,0x00,0x11,0x00,0x08,0x5F,0x50,  /* 000009E8    "......_P" */
+    0x52,0x57,0x12,0x06,0x02,0x0A,0x0D,0x0A,  /* 000009F0    "RW......" */
+    0x05,0x5B,0x82,0x33,0x50,0x53,0x32,0x4D,  /* 000009F8    ".[.3PS2M" */
+    0x08,0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,  /* 00000A00    "._HID.A." */
+    0x0F,0x13,0x14,0x09,0x5F,0x53,0x54,0x41,  /* 00000A08    "...._STA" */
+    0x00,0xA4,0x0A,0x09,0x14,0x19,0x5F,0x43,  /* 00000A10    "......_C" */
+    0x52,0x53,0x00,0x08,0x42,0x55,0x46,0x31,  /* 00000A18    "RS..BUF1" */
+    0x11,0x08,0x0A,0x05,0x22,0x00,0x10,0x79,  /* 00000A20    "...."..y" */
+    0x00,0xA4,0x42,0x55,0x46,0x31,0x5B,0x82,  /* 00000A28    "..BUF1[." */
+    0x42,0x04,0x50,0x53,0x32,0x4B,0x08,0x5F,  /* 00000A30    "B.PS2K._" */
+    0x48,0x49,0x44,0x0C,0x41,0xD0,0x03,0x03,  /* 00000A38    "HID.A..." */
+    0x08,0x5F,0x43,0x49,0x44,0x0C,0x41,0xD0,  /* 00000A40    "._CID.A." */
+    0x03,0x0B,0x14,0x09,0x5F,0x53,0x54,0x41,  /* 00000A48    "...._STA" */
+    0x00,0xA4,0x0A,0x09,0x08,0x5F,0x43,0x52,  /* 00000A50    "....._CR" */
+    0x53,0x11,0x18,0x0A,0x15,0x47,0x01,0x60,  /* 00000A58    "S....G.`" */
+    0x00,0x60,0x00,0x01,0x01,0x47,0x01,0x64,  /* 00000A60    ".`...G.d" */
+    0x00,0x64,0x00,0x01,0x01,0x22,0x02,0x00,  /* 00000A68    ".d...".." */
+    0x79,0x00,0x5B,0x82,0x2B,0x50,0x49,0x43,  /* 00000A70    "y.[.+PIC" */
+    0x5F,0x08,0x5F,0x48,0x49,0x44,0x0B,0x41,  /* 00000A78    "_._HID.A" */
+    0xD0,0x08,0x5F,0x43,0x52,0x53,0x11,0x18,  /* 00000A80    ".._CRS.." */
+    0x0A,0x15,0x47,0x01,0x20,0x00,0x20,0x00,  /* 00000A88    "..G. . ." */
+    0x01,0x02,0x47,0x01,0xA0,0x00,0xA0,0x00,  /* 00000A90    "..G....." */
+    0x01,0x02,0x22,0x04,0x00,0x79,0x00,0x5B,  /* 00000A98    ".."..y.[" */
+    0x82,0x3D,0x44,0x4D,0x41,0x31,0x08,0x5F,  /* 00000AA0    ".=DMA1._" */
+    0x48,0x49,0x44,0x0C,0x41,0xD0,0x02,0x00,  /* 00000AA8    "HID.A..." */
+    0x08,0x5F,0x43,0x52,0x53,0x11,0x28,0x0A,  /* 00000AB0    "._CRS.(." */
+    0x25,0x2A,0x10,0x04,0x47,0x01,0x00,0x00,  /* 00000AB8    "%*..G..." */
+    0x00,0x00,0x01,0x10,0x47,0x01,0x80,0x00,  /* 00000AC0    "....G..." */
+    0x80,0x00,0x01,0x11,0x47,0x01,0x94,0x00,  /* 00000AC8    "....G..." */
+    0x94,0x00,0x01,0x0C,0x47,0x01,0xC0,0x00,  /* 00000AD0    "....G..." */
+    0xC0,0x00,0x01,0x20,0x79,0x00,0x5B,0x82,  /* 00000AD8    "... y.[." */
+    0x25,0x54,0x4D,0x52,0x5F,0x08,0x5F,0x48,  /* 00000AE0    "%TMR_._H" */
+    0x49,0x44,0x0C,0x41,0xD0,0x01,0x00,0x08,  /* 00000AE8    "ID.A...." */
+    0x5F,0x43,0x52,0x53,0x11,0x10,0x0A,0x0D,  /* 00000AF0    "_CRS...." */
+    0x47,0x01,0x40,0x00,0x40,0x00,0x01,0x04,  /* 00000AF8    "G.@.@..." */
+    0x22,0x01,0x00,0x79,0x00,0x5B,0x82,0x25,  /* 00000B00    ""..y.[.%" */
+    0x52,0x54,0x43,0x5F,0x08,0x5F,0x48,0x49,  /* 00000B08    "RTC_._HI" */
+    0x44,0x0C,0x41,0xD0,0x0B,0x00,0x08,0x5F,  /* 00000B10    "D.A...._" */
+    0x43,0x52,0x53,0x11,0x10,0x0A,0x0D,0x47,  /* 00000B18    "CRS....G" */
+    0x01,0x70,0x00,0x70,0x00,0x04,0x04,0x22,  /* 00000B20    ".p.p..."" */
+    0x00,0x01,0x79,0x00,0x5B,0x82,0x22,0x53,  /* 00000B28    "..y.[."S" */
+    0x50,0x4B,0x52,0x08,0x5F,0x48,0x49,0x44,  /* 00000B30    "PKR._HID" */
+    0x0C,0x41,0xD0,0x08,0x00,0x08,0x5F,0x43,  /* 00000B38    ".A...._C" */
+    0x52,0x53,0x11,0x0D,0x0A,0x0A,0x47,0x01,  /* 00000B40    "RS....G." */
+    0x61,0x00,0x61,0x00,0x01,0x01,0x79,0x00,  /* 00000B48    "a.a...y." */
+    0x5B,0x82,0x25,0x43,0x4F,0x50,0x52,0x08,  /* 00000B50    "[.%COPR." */
+    0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,0x0C,  /* 00000B58    "_HID.A.." */
+    0x04,0x08,0x5F,0x43,0x52,0x53,0x11,0x10,  /* 00000B60    ".._CRS.." */
+    0x0A,0x0D,0x47,0x01,0xF0,0x00,0xF0,0x00,  /* 00000B68    "..G....." */
+    0x01,0x10,0x22,0x00,0x20,0x79,0x00,0x5B,  /* 00000B70    "..". y.[" */
+    0x82,0x4A,0x07,0x53,0x59,0x53,0x52,0x08,  /* 00000B78    ".J.SYSR." */
+    0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,0x0C,  /* 00000B80    "_HID.A.." */
+    0x02,0x08,0x5F,0x55,0x49,0x44,0x01,0x08,  /* 00000B88    ".._UID.." */
+    0x5F,0x43,0x52,0x53,0x11,0x4E,0x05,0x0A,  /* 00000B90    "_CRS.N.." */
+    0x5A,0x47,0x01,0x10,0x00,0x10,0x00,0x01,  /* 00000B98    "ZG......" */
+    0x10,0x47,0x01,0x22,0x00,0x22,0x00,0x01,  /* 00000BA0    ".G.".".." */
+    0x1E,0x47,0x01,0x44,0x00,0x44,0x00,0x01,  /* 00000BA8    ".G.D.D.." */
+    0x1C,0x47,0x01,0x62,0x00,0x62,0x00,0x01,  /* 00000BB0    ".G.b.b.." */
+    0x02,0x47,0x01,0x65,0x00,0x65,0x00,0x01,  /* 00000BB8    ".G.e.e.." */
+    0x0B,0x47,0x01,0x74,0x00,0x74,0x00,0x01,  /* 00000BC0    ".G.t.t.." */
+    0x0C,0x47,0x01,0x91,0x00,0x91,0x00,0x01,  /* 00000BC8    ".G......" */
+    0x03,0x47,0x01,0xA2,0x00,0xA2,0x00,0x01,  /* 00000BD0    ".G......" */
+    0x1E,0x47,0x01,0xE0,0x00,0xE0,0x00,0x01,  /* 00000BD8    ".G......" */
+    0x10,0x47,0x01,0xD0,0x04,0xD0,0x04,0x01,  /* 00000BE0    ".G......" */
+    0x02,0x47,0x01,0x94,0x02,0x94,0x02,0x01,  /* 00000BE8    ".G......" */
+    0x04,0x79,0x00,0x5B,0x82,0x46,0x0D,0x4C,  /* 00000BF0    ".y.[.F.L" */
+    0x4E,0x4B,0x41,0x08,0x5F,0x48,0x49,0x44,  /* 00000BF8    "NKA._HID" */
+    0x0C,0x41,0xD0,0x0C,0x0F,0x08,0x5F,0x55,  /* 00000C00    ".A...._U" */
+    0x49,0x44,0x01,0x14,0x1B,0x5F,0x53,0x54,  /* 00000C08    "ID..._ST" */
+    0x41,0x00,0x7B,0x50,0x49,0x52,0x41,0x0A,  /* 00000C10    "A.{PIRA." */
+    0xF0,0x60,0xA0,0x07,0x93,0x60,0x00,0xA4,  /* 00000C18    ".`...`.." */
+    0x0A,0x09,0xA1,0x04,0xA4,0x0A,0x0B,0x14,  /* 00000C20    "........" */
+    0x1A,0x5F,0x50,0x52,0x53,0x00,0x08,0x42,  /* 00000C28    "._PRS..B" */
+    0x55,0x46,0x41,0x11,0x09,0x0A,0x06,0x23,  /* 00000C30    "UFA....#" */
+    0xD8,0x1C,0x18,0x79,0x00,0xA4,0x42,0x55,  /* 00000C38    "...y..BU" */
+    0x46,0x41,0x14,0x4F,0x06,0x5F,0x43,0x52,  /* 00000C40    "FA.O._CR" */
+    0x53,0x00,0x08,0x42,0x55,0x46,0x41,0x11,  /* 00000C48    "S..BUFA." */
+    0x09,0x0A,0x06,0x23,0x00,0x00,0x18,0x79,  /* 00000C50    "...#...y" */
+    0x00,0x8C,0x42,0x55,0x46,0x41,0x01,0x49,  /* 00000C58    "..BUFA.I" */
+    0x52,0x41,0x31,0x8C,0x42,0x55,0x46,0x41,  /* 00000C60    "RA1.BUFA" */
+    0x0A,0x02,0x49,0x52,0x41,0x32,0x70,0x00,  /* 00000C68    "..IRA2p." */
+    0x63,0x70,0x00,0x64,0x7B,0x50,0x49,0x52,  /* 00000C70    "cp.d{PIR" */
+    0x41,0x0A,0xF0,0x61,0x7A,0x61,0x0A,0x04,  /* 00000C78    "A..aza.." */
+    0x61,0xA0,0x2B,0x92,0x93,0x61,0x00,0xA0,  /* 00000C80    "a.+..a.." */
+    0x0E,0x94,0x61,0x0A,0x07,0x74,0x61,0x0A,  /* 00000C88    "..a..ta." */
+    0x08,0x62,0x79,0x01,0x62,0x64,0xA1,0x0A,  /* 00000C90    ".by.bd.." */
+    0xA0,0x08,0x94,0x61,0x00,0x79,0x01,0x61,  /* 00000C98    "...a.y.a" */
+    0x63,0x70,0x63,0x49,0x52,0x41,0x31,0x70,  /* 00000CA0    "cpcIRA1p" */
+    0x64,0x49,0x52,0x41,0x32,0xA4,0x42,0x55,  /* 00000CA8    "dIRA2.BU" */
+    0x46,0x41,0x14,0x06,0x5F,0x53,0x52,0x53,  /* 00000CB0    "FA.._SRS" */
+    0x01,0x14,0x11,0x5F,0x44,0x49,0x53,0x00,  /* 00000CB8    "..._DIS." */
+    0x7B,0x50,0x49,0x52,0x41,0x0A,0x0F,0x50,  /* 00000CC0    "{PIRA..P" */
+    0x49,0x52,0x41,0x5B,0x82,0x42,0x0D,0x4C,  /* 00000CC8    "IRA[.B.L" */
+    0x4E,0x4B,0x42,0x08,0x5F,0x48,0x49,0x44,  /* 00000CD0    "NKB._HID" */
+    0x0C,0x41,0xD0,0x0C,0x0F,0x08,0x5F,0x55,  /* 00000CD8    ".A...._U" */
+    0x49,0x44,0x0A,0x02,0x14,0x1B,0x5F,0x53,  /* 00000CE0    "ID...._S" */
+    0x54,0x41,0x00,0x7B,0x50,0x49,0x42,0x43,  /* 00000CE8    "TA.{PIBC" */
+    0x0A,0x0F,0x60,0xA0,0x07,0x93,0x60,0x00,  /* 00000CF0    "..`...`." */
+    0xA4,0x0A,0x09,0xA1,0x04,0xA4,0x0A,0x0B,  /* 00000CF8    "........" */
+    0x14,0x1A,0x5F,0x50,0x52,0x53,0x00,0x08,  /* 00000D00    ".._PRS.." */
+    0x42,0x55,0x46,0x42,0x11,0x09,0x0A,0x06,  /* 00000D08    "BUFB...." */
+    0x23,0xD8,0x1C,0x18,0x79,0x00,0xA4,0x42,  /* 00000D10    "#...y..B" */
+    0x55,0x46,0x42,0x14,0x4A,0x06,0x5F,0x43,  /* 00000D18    "UFB.J._C" */
+    0x52,0x53,0x00,0x08,0x42,0x55,0x46,0x42,  /* 00000D20    "RS..BUFB" */
+    0x11,0x09,0x0A,0x06,0x23,0x00,0x00,0x18,  /* 00000D28    "....#..." */
+    0x79,0x00,0x8C,0x42,0x55,0x46,0x42,0x01,  /* 00000D30    "y..BUFB." */
+    0x49,0x52,0x42,0x31,0x8C,0x42,0x55,0x46,  /* 00000D38    "IRB1.BUF" */
+    0x42,0x0A,0x02,0x49,0x52,0x42,0x32,0x70,  /* 00000D40    "B..IRB2p" */
+    0x00,0x63,0x70,0x00,0x64,0x7B,0x50,0x49,  /* 00000D48    ".cp.d{PI" */
+    0x42,0x43,0x0A,0x0F,0x61,0xA0,0x2B,0x92,  /* 00000D50    "BC..a.+." */
+    0x93,0x61,0x00,0xA0,0x0E,0x94,0x61,0x0A,  /* 00000D58    ".a....a." */
+    0x07,0x74,0x61,0x0A,0x08,0x62,0x79,0x01,  /* 00000D60    ".ta..by." */
+    0x62,0x64,0xA1,0x0A,0xA0,0x08,0x94,0x61,  /* 00000D68    "bd.....a" */
+    0x00,0x79,0x01,0x61,0x63,0x70,0x63,0x49,  /* 00000D70    ".y.acpcI" */
+    0x52,0x42,0x31,0x70,0x64,0x49,0x52,0x42,  /* 00000D78    "RB1pdIRB" */
+    0x32,0xA4,0x42,0x55,0x46,0x42,0x14,0x06,  /* 00000D80    "2.BUFB.." */
+    0x5F,0x53,0x52,0x53,0x01,0x14,0x11,0x5F,  /* 00000D88    "_SRS..._" */
+    0x44,0x49,0x53,0x00,0x7B,0x50,0x49,0x42,  /* 00000D90    "DIS.{PIB" */
+    0x43,0x0A,0xF0,0x50,0x49,0x42,0x43,0x5B,  /* 00000D98    "C..PIBC[" */
+    0x82,0x47,0x0D,0x4C,0x4E,0x4B,0x43,0x08,  /* 00000DA0    ".G.LNKC." */
+    0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,0x0C,  /* 00000DA8    "_HID.A.." */
+    0x0F,0x08,0x5F,0x55,0x49,0x44,0x0A,0x03,  /* 00000DB0    ".._UID.." */
+    0x14,0x1B,0x5F,0x53,0x54,0x41,0x00,0x7B,  /* 00000DB8    ".._STA.{" */
+    0x50,0x49,0x42,0x43,0x0A,0xF0,0x60,0xA0,  /* 00000DC0    "PIBC..`." */
+    0x07,0x93,0x60,0x00,0xA4,0x0A,0x09,0xA1,  /* 00000DC8    "..`....." */
+    0x04,0xA4,0x0A,0x0B,0x14,0x1A,0x5F,0x50,  /* 00000DD0    "......_P" */
+    0x52,0x53,0x00,0x08,0x42,0x55,0x46,0x43,  /* 00000DD8    "RS..BUFC" */
+    0x11,0x09,0x0A,0x06,0x23,0xD8,0x1C,0x18,  /* 00000DE0    "....#..." */
+    0x79,0x00,0xA4,0x42,0x55,0x46,0x43,0x14,  /* 00000DE8    "y..BUFC." */
+    0x4F,0x06,0x5F,0x43,0x52,0x53,0x00,0x08,  /* 00000DF0    "O._CRS.." */
+    0x42,0x55,0x46,0x43,0x11,0x09,0x0A,0x06,  /* 00000DF8    "BUFC...." */
+    0x23,0x00,0x00,0x18,0x79,0x00,0x8C,0x42,  /* 00000E00    "#...y..B" */
+    0x55,0x46,0x43,0x01,0x49,0x52,0x43,0x31,  /* 00000E08    "UFC.IRC1" */
+    0x8C,0x42,0x55,0x46,0x43,0x0A,0x02,0x49,  /* 00000E10    ".BUFC..I" */
+    0x52,0x43,0x32,0x70,0x00,0x63,0x70,0x00,  /* 00000E18    "RC2p.cp." */
+    0x64,0x7B,0x50,0x49,0x42,0x43,0x0A,0xF0,  /* 00000E20    "d{PIBC.." */
+    0x61,0x7A,0x61,0x0A,0x04,0x61,0xA0,0x2B,  /* 00000E28    "aza..a.+" */
+    0x92,0x93,0x61,0x00,0xA0,0x0E,0x94,0x61,  /* 00000E30    "..a....a" */
+    0x0A,0x07,0x74,0x61,0x0A,0x08,0x62,0x79,  /* 00000E38    "..ta..by" */
+    0x01,0x62,0x64,0xA1,0x0A,0xA0,0x08,0x94,  /* 00000E40    ".bd....." */
+    0x61,0x00,0x79,0x01,0x61,0x63,0x70,0x63,  /* 00000E48    "a.y.acpc" */
+    0x49,0x52,0x43,0x31,0x70,0x64,0x49,0x52,  /* 00000E50    "IRC1pdIR" */
+    0x43,0x32,0xA4,0x42,0x55,0x46,0x43,0x14,  /* 00000E58    "C2.BUFC." */
+    0x06,0x5F,0x53,0x52,0x53,0x01,0x14,0x11,  /* 00000E60    "._SRS..." */
+    0x5F,0x44,0x49,0x53,0x00,0x7B,0x50,0x49,  /* 00000E68    "_DIS.{PI" */
+    0x42,0x43,0x0A,0x0F,0x50,0x49,0x42,0x43,  /* 00000E70    "BC..PIBC" */
+    0x5B,0x82,0x47,0x0D,0x4C,0x4E,0x4B,0x44,  /* 00000E78    "[.G.LNKD" */
+    0x08,0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,  /* 00000E80    "._HID.A." */
+    0x0C,0x0F,0x08,0x5F,0x55,0x49,0x44,0x0A,  /* 00000E88    "..._UID." */
+    0x04,0x14,0x1B,0x5F,0x53,0x54,0x41,0x00,  /* 00000E90    "..._STA." */
+    0x7B,0x50,0x49,0x52,0x44,0x0A,0xF0,0x60,  /* 00000E98    "{PIRD..`" */
+    0xA0,0x07,0x93,0x60,0x00,0xA4,0x0A,0x09,  /* 00000EA0    "...`...." */
+    0xA1,0x04,0xA4,0x0A,0x0B,0x14,0x1A,0x5F,  /* 00000EA8    "......._" */
+    0x50,0x52,0x53,0x00,0x08,0x42,0x55,0x46,  /* 00000EB0    "PRS..BUF" */
+    0x44,0x11,0x09,0x0A,0x06,0x23,0xD8,0x1C,  /* 00000EB8    "D....#.." */
+    0x18,0x79,0x00,0xA4,0x42,0x55,0x46,0x44,  /* 00000EC0    ".y..BUFD" */
+    0x14,0x4F,0x06,0x5F,0x43,0x52,0x53,0x00,  /* 00000EC8    ".O._CRS." */
+    0x08,0x42,0x55,0x46,0x44,0x11,0x09,0x0A,  /* 00000ED0    ".BUFD..." */
+    0x06,0x23,0x00,0x00,0x18,0x79,0x00,0x8C,  /* 00000ED8    ".#...y.." */
+    0x42,0x55,0x46,0x44,0x01,0x49,0x52,0x44,  /* 00000EE0    "BUFD.IRD" */
+    0x31,0x8C,0x42,0x55,0x46,0x44,0x0A,0x02,  /* 00000EE8    "1.BUFD.." */
+    0x49,0x52,0x44,0x32,0x70,0x00,0x63,0x70,  /* 00000EF0    "IRD2p.cp" */
+    0x00,0x64,0x7B,0x50,0x49,0x52,0x44,0x0A,  /* 00000EF8    ".d{PIRD." */
+    0xF0,0x61,0x7A,0x61,0x0A,0x04,0x61,0xA0,  /* 00000F00    ".aza..a." */
+    0x2B,0x92,0x93,0x61,0x00,0xA0,0x0E,0x94,  /* 00000F08    "+..a...." */
+    0x61,0x0A,0x07,0x74,0x61,0x0A,0x08,0x62,  /* 00000F10    "a..ta..b" */
+    0x79,0x01,0x62,0x64,0xA1,0x0A,0xA0,0x08,  /* 00000F18    "y.bd...." */
+    0x94,0x61,0x00,0x79,0x01,0x61,0x63,0x70,  /* 00000F20    ".a.y.acp" */
+    0x63,0x49,0x52,0x44,0x31,0x70,0x64,0x49,  /* 00000F28    "cIRD1pdI" */
+    0x52,0x44,0x32,0xA4,0x42,0x55,0x46,0x44,  /* 00000F30    "RD2.BUFD" */
+    0x14,0x06,0x5F,0x53,0x52,0x53,0x01,0x14,  /* 00000F38    ".._SRS.." */
+    0x11,0x5F,0x44,0x49,0x53,0x00,0x7B,0x50,  /* 00000F40    "._DIS.{P" */
+    0x49,0x52,0x44,0x0A,0x0F,0x50,0x49,0x52,  /* 00000F48    "IRD..PIR" */
+    0x44,0x5B,0x82,0x4D,0x0B,0x41,0x54,0x41,  /* 00000F50    "D[.M.ATA" */
+    0x49,0x08,0x5F,0x48,0x49,0x44,0x0C,0x41,  /* 00000F58    "I._HID.A" */
+    0xD0,0x0C,0x0F,0x08,0x5F,0x55,0x49,0x44,  /* 00000F60    "...._UID" */
+    0x0A,0x05,0x14,0x45,0x04,0x5F,0x53,0x54,  /* 00000F68    "...E._ST" */
+    0x41,0x00,0xA0,0x23,0x92,0x93,0x41,0x54,  /* 00000F70    "A..#..AT" */
+    0x46,0x4C,0x0A,0x02,0xA0,0x14,0x92,0x93,  /* 00000F78    "FL......" */
+    0x5E,0x5E,0x2E,0x53,0x41,0x54,0x41,0x56,  /* 00000F80    "^^.SATAV" */
+    0x49,0x44,0x5F,0x0B,0x06,0x11,0xA4,0x0A,  /* 00000F88    "ID_....." */
+    0x09,0xA1,0x04,0xA4,0x0A,0x0B,0xA1,0x19,  /* 00000F90    "........" */
+    0xA0,0x12,0x93,0x5E,0x5E,0x2E,0x50,0x41,  /* 00000F98    "...^^.PA" */
+    0x54,0x41,0x45,0x4E,0x41,0x54,0x0A,0x0A,  /* 00000FA0    "TAENAT.." */
+    0xA4,0x0A,0x09,0xA1,0x04,0xA4,0x0A,0x0B,  /* 00000FA8    "........" */
+    0x14,0x1F,0x5F,0x50,0x52,0x53,0x00,0x08,  /* 00000FB0    ".._PRS.." */
+    0x41,0x54,0x41,0x4E,0x11,0x0E,0x0A,0x0B,  /* 00000FB8    "ATAN...." */
+    0x89,0x06,0x00,0x0D,0x01,0x14,0x00,0x00,  /* 00000FC0    "........" */
+    0x00,0x79,0x00,0xA4,0x41,0x54,0x41,0x4E,  /* 00000FC8    ".y..ATAN" */
+    0x14,0x31,0x5F,0x43,0x52,0x53,0x00,0x08,  /* 00000FD0    ".1_CRS.." */
+    0x41,0x54,0x41,0x42,0x11,0x0E,0x0A,0x0B,  /* 00000FD8    "ATAB...." */
+    0x89,0x06,0x00,0x0D,0x01,0x00,0x00,0x00,  /* 00000FE0    "........" */
+    0x00,0x79,0x00,0x8C,0x41,0x54,0x41,0x42,  /* 00000FE8    ".y..ATAB" */
+    0x0A,0x05,0x49,0x52,0x41,0x49,0x70,0x0A,  /* 00000FF0    "..IRAIp." */
+    0x14,0x49,0x52,0x41,0x49,0xA4,0x41,0x54,  /* 00000FF8    ".IRAI.AT" */
+    0x41,0x42,0x14,0x06,0x5F,0x53,0x52,0x53,  /* 00001000    "AB.._SRS" */
+    0x01,0x14,0x06,0x5F,0x44,0x49,0x53,0x00,  /* 00001008    "..._DIS." */
+    0x5B,0x82,0x44,0x09,0x55,0x53,0x42,0x49,  /* 00001010    "[.D.USBI" */
+    0x08,0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,  /* 00001018    "._HID.A." */
+    0x0C,0x0F,0x08,0x5F,0x55,0x49,0x44,0x0A,  /* 00001020    "..._UID." */
+    0x0A,0x14,0x1C,0x5F,0x53,0x54,0x41,0x00,  /* 00001028    "..._STA." */
+    0x7B,0x49,0x44,0x45,0x42,0x0A,0x37,0x60,  /* 00001030    "{IDEB.7`" */
+    0xA0,0x08,0x93,0x60,0x0A,0x37,0xA4,0x0A,  /* 00001038    "...`.7.." */
+    0x09,0xA1,0x04,0xA4,0x0A,0x0B,0x14,0x1F,  /* 00001040    "........" */
+    0x5F,0x50,0x52,0x53,0x00,0x08,0x55,0x53,  /* 00001048    "_PRS..US" */
+    0x42,0x42,0x11,0x0E,0x0A,0x0B,0x89,0x06,  /* 00001050    "BB......" */
+    0x00,0x0D,0x01,0x15,0x00,0x00,0x00,0x79,  /* 00001058    ".......y" */
+    0x00,0xA4,0x55,0x53,0x42,0x42,0x14,0x31,  /* 00001060    "..USBB.1" */
+    0x5F,0x43,0x52,0x53,0x00,0x08,0x55,0x53,  /* 00001068    "_CRS..US" */
+    0x42,0x42,0x11,0x0E,0x0A,0x0B,0x89,0x06,  /* 00001070    "BB......" */
+    0x00,0x0D,0x01,0x00,0x00,0x00,0x00,0x79,  /* 00001078    ".......y" */
+    0x00,0x8C,0x55,0x53,0x42,0x42,0x0A,0x05,  /* 00001080    "..USBB.." */
+    0x49,0x52,0x42,0x49,0x70,0x0A,0x15,0x49,  /* 00001088    "IRBIp..I" */
+    0x52,0x42,0x49,0xA4,0x55,0x53,0x42,0x42,  /* 00001090    "RBI.USBB" */
+    0x14,0x06,0x5F,0x53,0x52,0x53,0x01,0x14,  /* 00001098    ".._SRS.." */
+    0x06,0x5F,0x44,0x49,0x53,0x00,0x5B,0x82,  /* 000010A0    "._DIS.[." */
+    0x4F,0x08,0x56,0x54,0x38,0x49,0x08,0x5F,  /* 000010A8    "O.VT8I._" */
+    0x48,0x49,0x44,0x0C,0x41,0xD0,0x0C,0x0F,  /* 000010B0    "HID.A..." */
+    0x08,0x5F,0x55,0x49,0x44,0x0A,0x0B,0x14,  /* 000010B8    "._UID..." */
+    0x17,0x5F,0x53,0x54,0x41,0x00,0xA0,0x0B,  /* 000010C0    "._STA..." */
+    0x93,0x45,0x41,0x4D,0x43,0x0A,0x03,0xA4,  /* 000010C8    ".EAMC..." */
+    0x0A,0x09,0xA1,0x04,0xA4,0x0A,0x0B,0x14,  /* 000010D0    "........" */
+    0x1F,0x5F,0x50,0x52,0x53,0x00,0x08,0x41,  /* 000010D8    "._PRS..A" */
+    0x39,0x37,0x43,0x11,0x0E,0x0A,0x0B,0x89,  /* 000010E0    "97C....." */
+    0x06,0x00,0x0D,0x01,0x16,0x00,0x00,0x00,  /* 000010E8    "........" */
+    0x79,0x00,0xA4,0x41,0x39,0x37,0x43,0x14,  /* 000010F0    "y..A97C." */
+    0x31,0x5F,0x43,0x52,0x53,0x00,0x08,0x41,  /* 000010F8    "1_CRS..A" */
+    0x39,0x37,0x42,0x11,0x0E,0x0A,0x0B,0x89,  /* 00001100    "97B....." */
+    0x06,0x00,0x0D,0x01,0x00,0x00,0x00,0x00,  /* 00001108    "........" */
+    0x79,0x00,0x8C,0x41,0x39,0x37,0x42,0x0A,  /* 00001110    "y..A97B." */
+    0x05,0x49,0x52,0x43,0x49,0x70,0x0A,0x16,  /* 00001118    ".IRCIp.." */
+    0x49,0x52,0x43,0x49,0xA4,0x41,0x39,0x37,  /* 00001120    "IRCI.A97" */
+    0x42,0x14,0x06,0x5F,0x53,0x52,0x53,0x01,  /* 00001128    "B.._SRS." */
+    0x14,0x06,0x5F,0x44,0x49,0x53,0x00,0x5B,  /* 00001130    ".._DIS.[" */
+    0x82,0x4E,0x08,0x4E,0x49,0x43,0x49,0x08,  /* 00001138    ".N.NICI." */
+    0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,0x0C,  /* 00001140    "_HID.A.." */
+    0x0F,0x08,0x5F,0x55,0x49,0x44,0x0A,0x0C,  /* 00001148    ".._UID.." */
+    0x14,0x16,0x5F,0x53,0x54,0x41,0x00,0xA0,  /* 00001150    ".._STA.." */
+    0x0A,0x93,0x45,0x4C,0x41,0x4E,0x00,0xA4,  /* 00001158    "..ELAN.." */
+    0x0A,0x09,0xA1,0x04,0xA4,0x0A,0x0B,0x14,  /* 00001160    "........" */
+    0x1F,0x5F,0x50,0x52,0x53,0x00,0x08,0x4E,  /* 00001168    "._PRS..N" */
+    0x49,0x43,0x42,0x11,0x0E,0x0A,0x0B,0x89,  /* 00001170    "ICB....." */
+    0x06,0x00,0x0D,0x01,0x17,0x00,0x00,0x00,  /* 00001178    "........" */
+    0x79,0x00,0xA4,0x4E,0x49,0x43,0x42,0x14,  /* 00001180    "y..NICB." */
+    0x31,0x5F,0x43,0x52,0x53,0x00,0x08,0x4E,  /* 00001188    "1_CRS..N" */
+    0x49,0x43,0x44,0x11,0x0E,0x0A,0x0B,0x89,  /* 00001190    "ICD....." */
+    0x06,0x00,0x0D,0x01,0x00,0x00,0x00,0x00,  /* 00001198    "........" */
+    0x79,0x00,0x8C,0x4E,0x49,0x43,0x44,0x0A,  /* 000011A0    "y..NICD." */
+    0x05,0x49,0x52,0x44,0x49,0x70,0x0A,0x17,  /* 000011A8    ".IRDIp.." */
+    0x49,0x52,0x44,0x49,0xA4,0x4E,0x49,0x43,  /* 000011B0    "IRDI.NIC" */
+    0x44,0x14,0x06,0x5F,0x53,0x52,0x53,0x01,  /* 000011B8    "D.._SRS." */
+    0x14,0x06,0x5F,0x44,0x49,0x53,0x00,0x14,  /* 000011C0    ".._DIS.." */
+    0x34,0x5F,0x49,0x4E,0x49,0x00,0x70,0x00,  /* 000011C8    "4_INI.p." */
+    0x41,0x54,0x46,0x4C,0xA0,0x0E,0x93,0x45,  /* 000011D0    "ATFL...E" */
+    0x49,0x44,0x45,0x01,0x70,0x0A,0x02,0x41,  /* 000011D8    "IDE.p..A" */
+    0x54,0x46,0x4C,0xA1,0x18,0xA0,0x16,0x92,  /* 000011E0    "TFL....." */
+    0x93,0x5E,0x2E,0x50,0x41,0x54,0x41,0x56,  /* 000011E8    ".^.PATAV" */
+    0x49,0x44,0x5F,0x0B,0x06,0x11,0x70,0x01,  /* 000011F0    "ID_...p." */
+    0x41,0x54,0x46,0x4C,
 };
Index: via/epia-n/pata_methods.asl
===================================================================
--- via/epia-n/pata_methods.asl	(revision 0)
+++ via/epia-n/pata_methods.asl	(revision 0)
@@ -0,0 +1,132 @@
+/*
+ * Minimalist ACPI DSDT table for EPIA-N / NL
+ * Basic description of some hardware resources to allow 
+ * interrupt assignments to be done. This is expected to be included
+ * into the PATA Device definition in ab_physical.asl
+ * (C) Copyright 2009 Jon Harrison <jon.harrison@blueyonder.co.uk>
+ * 
+ */
+
+Name (TIM0, Package (0x07)
+{
+    Package (0x05)
+    {
+        0x78, 0xB4, 0xF0, 0x017F, 0x0258
+    }, 
+
+    Package (0x05)
+    {
+        0x20, 0x22, 0x33, 0x47, 0x5D
+    }, 
+
+    Package (0x05)
+    {
+        0x04, 0x03, 0x02, 0x01, 0x00
+    }, 
+
+    Package (0x04)
+    {
+        0x02, 0x01, 0x00, 0x00
+    }, 
+
+    Package (0x07)
+    {
+        0x78, 0x50, 0x3C, 0x2D, 0x1E, 0x14, 0x0F
+    }, 
+
+    Package (0x0F)
+    {
+        0x06, 0x05, 0x04, 0x04, 0x03, 0x03, 0x02, 0x02, 
+        0x01, 0x01, 0x01, 0x01, 0x01, 0x01,0x00
+    }, 
+
+    Package (0x07)
+    {
+        0x0E, 0x08, 0x06, 0x04, 0x02, 0x01, 0x00
+    }
+})
+
+
+/* This method sets up the PATA Timing Control*/
+/* Note that a lot of this is done in the     */
+/* Coreboot VT8237R Init code, but this is    */
+/* already getting very cluttered with board  */
+/* specific code. Using ACPI will allow this  */
+/* to be de-cluttered a bit (so long as we're */
+/* running a ACPI Capable OS !!!)             */
+
+Method (PMEX, 0, Serialized)
+{
+    If (REGF)
+    {
+		/* Check if these regs are still at defaults */
+		/* Board specific timing improvement if not  */
+		/* Already changed                           */
+        If (LEqual (PMPT, 0xA8))
+        {
+            Store (0x5D, PMPT)
+        }
+
+        If (LEqual (PSPT, 0xA8))
+        {
+            Store (0x5D, PSPT)
+        }
+
+        If (LEqual (SMPT, 0xA8))
+        {
+            Store (0x5D, SMPT)
+        }
+
+        If (LEqual (SSPT, 0xA8))
+        {
+            Store (0x5D, SSPT)
+        }
+
+    }
+}
+
+/* This Method Provides the method that is used to */
+/* Reset ATA Drives to POST reset condition        */
+Method (GTF, 4, Serialized)
+{
+    Store (Buffer (0x07)
+        {
+            0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF
+        }, Local1)
+    Store (Buffer (0x07)
+        {
+            0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF
+        }, Local2)
+    CreateByteField (Local1, 0x01, MODE)
+    CreateByteField (Local2, 0x01, UMOD)
+    CreateByteField (Local1, 0x05, PCHA)
+    CreateByteField (Local2, 0x05, UCHA)
+    And (Arg0, 0x03, Local3)
+    If (LEqual (And (Local3, 0x01), 0x01))
+    {
+        Store (0xB0, PCHA)
+        Store (0xB0, UCHA)
+    }
+
+    If (Arg1)
+    {
+        Store (DerefOf (Index (DerefOf (Index (TIM0, 0x05)), Arg2)), 
+            UMOD)
+        Or (UMOD, 0x40, UMOD)
+    }
+    Else
+    {
+        Store (Match (DerefOf (Index (TIM0, 0x01)), MEQ, Arg3, MTR, 
+            0x00, 0x00), Local0)
+        Or (0x20, DerefOf (Index (DerefOf (Index (TIM0, 0x03)), Local0
+            )), UMOD)
+    }
+
+    Store (Match (DerefOf (Index (TIM0, 0x01)), MEQ, Arg3, MTR, 
+        0x00, 0x00), Local0)
+    Or (0x08, DerefOf (Index (DerefOf (Index (TIM0, 0x02)), Local0
+        )), MODE)
+    Concatenate (Local1, Local2, Local6)
+    Return (Local6)
+}
+
Index: via/epia-n/Options.lb
===================================================================
--- via/epia-n/Options.lb	(revision 1)
+++ via/epia-n/Options.lb	(working copy)
@@ -19,7 +19,6 @@
 ## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
 ##
 
-uses CONFIG_HAVE_MP_TABLE
 uses CONFIG_CBFS
 uses CONFIG_HAVE_PIRQ_TABLE
 uses CONFIG_HAVE_FAILOVER_BOOT
@@ -53,6 +52,7 @@
 uses CONFIG_RAMBASE
 uses CONFIG_XIP_ROM_SIZE
 uses CONFIG_XIP_ROM_BASE
+uses CONFIG_SMP
 uses CONFIG_HAVE_MP_TABLE
 uses CONFIG_HAVE_ACPI_TABLES
 uses CONFIG_HAVE_ACPI_RESUME
@@ -73,12 +73,13 @@
 uses CONFIG_IOAPIC
 uses CONFIG_COMPRESS
 uses CONFIG_EPIA_VT8237R_INIT
+uses CONFIG_HAVE_MAINBOARD_RESOURCES
 
 default CONFIG_EPIA_VT8237R_INIT = 1
 #default CONFIG_LB_MEM_TOPK = 4 * 1024
 default CONFIG_ROM_SIZE = 512 * 1024
 default CONFIG_COMPRESS = 1
-default CONFIG_IOAPIC = 0
+default CONFIG_IOAPIC = 1
 default CONFIG_VIDEO_MB = 64
 default CONFIG_CONSOLE_SERIAL8250 = 1
 default CONFIG_PCI_ROM_RUN = 0
@@ -86,13 +87,14 @@
 default CONFIG_HAVE_FAILOVER_BOOT = 0
 default CONFIG_USE_FAILOVER_IMAGE = 0
 default CONFIG_HAVE_FALLBACK_BOOT = 1
-default CONFIG_HAVE_MP_TABLE = 0
+default CONFIG_SMP = 1
+default CONFIG_HAVE_MP_TABLE = 1
 default CONFIG_UDELAY_TSC = 1
 default CONFIG_TSC_X86RDTSC_CALIBRATE_WITH_TIMER2 = 1
 default CONFIG_HAVE_HARD_RESET = 0
 default CONFIG_HAVE_PIRQ_TABLE = 1
-default CONFIG_IRQ_SLOT_COUNT = 9
-default CONFIG_HAVE_ACPI_TABLES = 0
+default CONFIG_IRQ_SLOT_COUNT = 7
+default CONFIG_HAVE_ACPI_TABLES = 1
 default CONFIG_HAVE_OPTION_TABLE = 1
 #default CONFIG_ROM_IMAGE_SIZE = 67 * 1024
 #default CONFIG_PAYLOAD_SIZE = 125 * 1024
@@ -110,6 +112,7 @@
 default CC = "$(CROSS_COMPILE)gcc -m32 -fno-stack-protector"
 default HOSTCC = "gcc"
 #default CONFIG_MAINBOARD = "EPIA-N"
+default CONFIG_HAVE_MAINBOARD_RESOURCES = 1
 
 ##
 ## Set this to the max PCI bus number you would ever use for PCI config I/O.
Index: via/epia-n/acpi_tables.c
===================================================================
--- via/epia-n/acpi_tables.c	(revision 1)
+++ via/epia-n/acpi_tables.c	(working copy)
@@ -5,14 +5,54 @@
  * Nick Barker <nick.barker9@btinternet.com>, and those portions
  * (C) Copyright 2004 Nick Barker
  * (C) Copyright 2005 Stefan Reinauer
+ * (C) Copyright 2009 Jon Harrison <bothlyn@blueyonder.co.uk>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
  */
 
+ 
+/*
+ * Most parts of this file copied from via\epia-m\acpi_tables.c,
+ * and via\epia-m700\acpi_tables.c
+ */
+
 #include <console/console.h>
 #include <string.h>
 #include <arch/acpi.h>
+#include <device/device.h>
+#include <device/pci.h>
+#include <device/pci_ids.h>
+#include "../../../southbridge/via/vt8237r/vt8237r.h"
 
 extern unsigned char AmlCode[];
 
+/*
+ * These four macros are copied from <arch/smp/mpspec.h>, I have to do this
+ * since the "default CONFIG_HAVE_MP_TABLE = 0" in Options.lb, and also since
+ * mainboard/via/... have no mptable.c (so that I can not set
+ * CONFIG_HAVE_MP_TABLE = 1) as many other mainboards.
+ * So I have to copy these four to here. acpi_fill_madt() needs this.
+ */
+#define MP_IRQ_POLARITY_DEFAULT	0x0
+#define MP_IRQ_POLARITY_HIGH	0x1
+#define MP_IRQ_POLARITY_LOW		0x3
+#define MP_IRQ_POLARITY_MASK    0x3
+#define MP_IRQ_TRIGGER_DEFAULT	0x0
+#define MP_IRQ_TRIGGER_EDGE		0x4
+#define MP_IRQ_TRIGGER_LEVEL	0xc
+#define MP_IRQ_TRIGGER_MASK     0xc
+
 unsigned long acpi_fill_mcfg(unsigned long current)
 {
 	/* Nothing to do */
@@ -25,9 +65,49 @@
 	return current;
 }
 
+unsigned long acpi_create_madt_lapic_nmis(unsigned long current, u16 flags,
+					  u8 lint)
+{
+	device_t cpu;
+	int cpu_index = 0;
+
+	for (cpu = all_devices; cpu; cpu = cpu->next) {
+		if ((cpu->path.type != DEVICE_PATH_APIC) ||
+		    (cpu->bus->dev->path.type != DEVICE_PATH_APIC_CLUSTER)) {
+			continue;
+		}
+		if (!cpu->enabled)
+			continue;
+		current += acpi_create_madt_lapic_nmi((acpi_madt_lapic_nmi_t *)
+					      current, cpu_index, flags, lint);
+		cpu_index++;
+	}
+	return current;
+}
+
 unsigned long acpi_fill_madt(unsigned long current)
 {
-	/* Nothing to do */
+	unsigned int gsi_base = 0x00;
+
+	/* Create all subtables for processors. */
+	current = acpi_create_madt_lapics(current);
+
+	/* Write SB IOAPIC. */
+	current += acpi_create_madt_ioapic((acpi_madt_ioapic_t *) current,
+				   VT8237R_APIC_ID, VT8237R_APIC_BASE, gsi_base);
+
+	/* IRQ0 -> APIC IRQ2. */
+	current += acpi_create_madt_irqoverride((acpi_madt_irqoverride_t *)
+						current, 0, 0, 2, 0x0);
+
+	/* IRQ9 ACPI active low. */
+	current += acpi_create_madt_irqoverride((acpi_madt_irqoverride_t *)
+		current, 0, 9, 9, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW);
+
+	/* Create all subtables for processors. */
+	current = acpi_create_madt_lapic_nmis(current,
+			      MP_IRQ_TRIGGER_EDGE | MP_IRQ_POLARITY_HIGH, 1);
+
 	return current;
 }
 
@@ -37,12 +117,16 @@
 	return current;
 }
 
+#define ALIGN(x,a)              __ALIGN_MASK(x,(typeof(x))(a)-1)
+#define __ALIGN_MASK(x,mask)    (((x)+(mask))&~(mask))
+#define ALIGN_CURRENT current = ((current + 0x0f) & -0x10)
+
 unsigned long write_acpi_tables(unsigned long start)
 {
 	unsigned long current;
 	acpi_rsdp_t *rsdp;
 	acpi_rsdt_t *rsdt;
-	acpi_hpet_t *hpet;
+	acpi_xsdt_t *xsdt;
 	acpi_madt_t *madt;
 	acpi_fadt_t *fadt;
 	acpi_facs_t *facs;
@@ -70,10 +154,12 @@
 	 * We explicitly add these tables later on:
 	 */
 	printk_debug("ACPI:     * FACS\n");
+	current = ALIGN(current, 64);
 	facs = (acpi_facs_t *) current;
 	current += sizeof(acpi_facs_t);
 	acpi_create_facs(facs);
 
+	printk_debug("ACPI:     * DSDT\n");
 	dsdt = (acpi_header_t *)current;
 	current += ((acpi_header_t *)AmlCode)->length;
 	memcpy((void *)dsdt,(void *)AmlCode, ((acpi_header_t *)AmlCode)->length);
@@ -88,6 +174,13 @@
 	acpi_create_fadt(fadt,facs,dsdt);
 	acpi_add_table(rsdp,fadt);
 
+	/* If we want IOAPIC Support Linux wants it in MADT. */
+	printk_debug("ACPI:    * MADT\n");
+	madt = (acpi_madt_t *) current;
+	acpi_create_madt(madt);
+	current += madt->header.length;
+	acpi_add_table(rsdp, madt);
+	
 	printk_info("ACPI: done.\n");
 	return current;
 }
Index: via/epia-n/auto.c
===================================================================
--- via/epia-n/auto.c	(revision 1)
+++ via/epia-n/auto.c	(working copy)
@@ -73,13 +73,6 @@
 	device_t dev;
 	u8 reg;
  
- 	dev = pci_locate_device(PCI_ID(0x1106, 0x7259), 0);
-	if (dev == PCI_DEV_INVALID)
-		die("Northbridge V-Link not found!!!\n");
-	pci_write_config8(dev, 0x4F, 0x01);
-	pci_write_config8(dev, 0x48, 0x13);
-	
-	
 	dev = pci_locate_device(PCI_ID(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_VT8237R_LPC), 0);
 	if (dev == PCI_DEV_INVALID)
 		die("Southbridge not found!!!\n");
@@ -93,7 +86,7 @@
 	 *   2 16.2 USB 3
 	 *   1 16.4 USB EHCI
 	 */
-	pci_write_config8(dev, 0x50, 0x80);
+	pci_write_config8(dev, 0x50, 0xC0);
 
 	/*bit=0 means enable internal function (per VT8237R datasheet)
 	 *   7 USB Device Mode
@@ -106,7 +99,7 @@
 	 *   1 Internal KBC Configuration
 	 *   0 Internal Keyboard Controller
 	 */
-	pci_write_config8(dev, 0x51, 0x1d);
+	pci_write_config8(dev, 0x51, 0x9d);
 }
 
 static void enable_shadow_ram(void) 
Index: via/epia-n/fadt.c
===================================================================
--- via/epia-n/fadt.c	(revision 1)
+++ via/epia-n/fadt.c	(working copy)
@@ -1,6 +1,7 @@
 /*
  * ACPI - create the Fixed ACPI Description Tables (FADT)
  * (C) Copyright 2004 Nick Barker <nick.barker9@btinternet.com>
+ * (C) Copyright 2009 Jon Harrison <bothlyn@blueyonder.co.uk>
  *
  *
  * This program is free software; you can redistribute it and/or
@@ -22,6 +23,7 @@
 
 #include <string.h>
 #include <arch/acpi.h>
+#include "../../../southbridge/via/vt8237r/vt8237r.h"
 
 void acpi_create_fadt(acpi_fadt_t *fadt,acpi_facs_t *facs,void *dsdt){
 	acpi_header_t *header=&(fadt->header);
@@ -38,7 +40,7 @@
 	fadt->firmware_ctrl=facs;
 	fadt->dsdt= dsdt;
 	fadt->preferred_pm_profile=0;
-	fadt->sci_int=5;
+	fadt->sci_int=VT8237R_ACPI_IRQ;
 	fadt->smi_cmd = 0;
 	fadt->acpi_enable = 0;
 	fadt->acpi_disable = 0;
Index: via/epia-n/Config.lb
===================================================================
--- via/epia-n/Config.lb	(revision 1)
+++ via/epia-n/Config.lb	(working copy)
@@ -141,13 +141,14 @@
       register "ide1_80pin_cable" = "0"
       device pci f.0 on end			# IDE/SATA
 	  device pci f.1 on end			# IDE
-      register "fn_ctrl_lo" = "0x80"
-      register "fn_ctrl_hi" = "0x1d"
+      register "fn_ctrl_lo" = "0xC0"    # Disable AC/MC97
+      register "fn_ctrl_hi" = "0x9d"    # Disable USB Direct & LAN Gating
       device pci 10.0 on end			# OHCI
       device pci 10.1 on end			# OHCI
       device pci 10.2 on end			# OHCI
       device pci 10.3 on end			# OHCI
       device pci 10.4 on end			# EHCI
+      device pci 10.5 off end			# USB Direct
       device pci 11.0 on			# Southbridge LPC
         chip superio/winbond/w83697hf		# Super I/O
           device pnp 2e.0 off			# Floppy
@@ -190,7 +191,7 @@
         end
       end
       device pci 11.5 off end			# AC'97 audio
-      # device pci 11.6 off end			# AC'97 Modem
+      device pci 11.6 off end			# AC'97 Modem
       device pci 12.0 on end			# Ethernet
     end
   end
Index: via/epia-n/mptable.c
===================================================================
--- via/epia-n/mptable.c	(revision 0)
+++ via/epia-n/mptable.c	(revision 0)
@@ -0,0 +1,115 @@
+/* generated by MPTable, version 2.0.15*/
+/* as modified by RGM for coreboot */
+#include <console/console.h>
+#include <arch/smp/mpspec.h>
+#include <device/pci.h>
+#include <string.h>
+#include <stdint.h>
+
+void *smp_write_config_table(void *v)
+{
+        static const char sig[4] = "PCMP";
+        static const char oem[8] = "LNXI    ";
+        static const char productid[12] = "P4DPE       ";
+        struct mp_config_table *mc;
+
+        mc = (void *)(((char *)v) + SMP_FLOATING_TABLE_LEN);
+        memset(mc, 0, sizeof(*mc));
+
+        memcpy(mc->mpc_signature, sig, sizeof(sig));
+        mc->mpc_length = sizeof(*mc); /* initially just the header */
+        mc->mpc_spec = 0x04;
+        mc->mpc_checksum = 0; /* not yet computed */
+        memcpy(mc->mpc_oem, oem, sizeof(oem));
+        memcpy(mc->mpc_productid, productid, sizeof(productid));
+        mc->mpc_oemptr = 0;
+        mc->mpc_oemsize = 0;
+        mc->mpc_entry_count = 0; /* No entries yet... */
+        mc->mpc_lapic = LAPIC_ADDR;
+        mc->mpe_length = 0;
+        mc->mpe_checksum = 0;
+        mc->reserved = 0;
+
+        smp_write_processors(mc);
+
+
+/*Bus:		Bus ID	Type*/
+	smp_write_bus(mc, 0, "PCI   ");
+	smp_write_bus(mc, 1, "PCI   ");
+	smp_write_bus(mc, 2, "ISA   ");
+/*I/O APICs:	APIC ID	Version	State		Address*/
+	smp_write_ioapic(mc, 2, 0x20, 0xfec00000);
+	{
+		device_t dev;
+		struct resource *res;
+		dev = dev_find_slot(1, PCI_DEVFN(0x1e,0));
+		if (dev) {
+			res = find_resource(dev, PCI_BASE_ADDRESS_0);
+			if (res) {
+				smp_write_ioapic(mc, 3, 0x20, res->base);
+			}
+		}
+		dev = dev_find_slot(1, PCI_DEVFN(0x1c,0));
+		if (dev) {
+			res = find_resource(dev, PCI_BASE_ADDRESS_0);
+			if (res) {
+				smp_write_ioapic(mc, 4, 0x20, res->base);
+			}
+		}
+                dev = dev_find_slot(4, PCI_DEVFN(0x1e,0));
+                if (dev) {
+			res = find_resource(dev, PCI_BASE_ADDRESS_0);
+			if (res) {
+				smp_write_ioapic(mc, 5, 0x20, res->base);
+			}
+                }
+                dev = dev_find_slot(4, PCI_DEVFN(0x1c,0));
+                if (dev) {
+			res = find_resource(dev, PCI_BASE_ADDRESS_0);
+			if (res) {
+				smp_write_ioapic(mc, 8, 0x20, res->base);
+			}
+                }
+	}
+/*I/O Ints:	Type	Polarity    Trigger	Bus ID	 IRQ	APIC ID	PIN#
+*/	smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x0, 0x40, 0x2, 0x15);
+	smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x0, 0x40, 0x2, 0x15);
+	smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x0, 0x41, 0x2, 0x15);
+	smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x0, 0x41, 0x2, 0x15);
+	smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x0, 0x42, 0x2, 0x15);
+	smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x0, 0x46, 0x2, 0x16);
+	smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x1, 0x0, 0x2, 0x10);
+	smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x0, 0x48, 0x2, 0x17);
+	smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, 0x0, 0x3d, 0x2, 0x14);
+	smp_write_intsrc(mc, mp_ExtINT, MP_IRQ_TRIGGER_DEFAULT|MP_IRQ_POLARITY_DEFAULT, 0x2, 0x0, 0x2, 0x0);
+	smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_DEFAULT|MP_IRQ_POLARITY_DEFAULT, 0x2, 0x1, 0x2, 0x1);
+	smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_DEFAULT|MP_IRQ_POLARITY_DEFAULT, 0x2, 0x0, 0x2, 0x2);
+	smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_DEFAULT|MP_IRQ_POLARITY_DEFAULT, 0x2, 0x3, 0x2, 0x3);
+	smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_DEFAULT|MP_IRQ_POLARITY_DEFAULT, 0x2, 0x4, 0x2, 0x4);
+	smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_DEFAULT|MP_IRQ_POLARITY_DEFAULT, 0x2, 0x5, 0x2, 0x5);
+	smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_DEFAULT|MP_IRQ_POLARITY_DEFAULT, 0x2, 0x6, 0x2, 0x6);
+	smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_DEFAULT|MP_IRQ_POLARITY_DEFAULT, 0x2, 0x7, 0x2, 0x7);
+	smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, 0x2, 0x8, 0x2, 0x8);
+	smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_DEFAULT|MP_IRQ_POLARITY_DEFAULT, 0x2, 0x9, 0x2, 0x9);
+	smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_DEFAULT|MP_IRQ_POLARITY_DEFAULT, 0x2, 0xd, 0x2, 0xd);
+	smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_DEFAULT|MP_IRQ_POLARITY_DEFAULT, 0x2, 0xe, 0x2, 0xe);
+	smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_DEFAULT|MP_IRQ_POLARITY_DEFAULT, 0x2, 0xf, 0x2, 0xf);
+/*Local Ints:	Type	Polarity    Trigger	Bus ID	 IRQ	APIC ID	PIN#*/
+	smp_write_intsrc(mc, mp_ExtINT, MP_IRQ_TRIGGER_DEFAULT|MP_IRQ_POLARITY_DEFAULT, 0x0, 0x0, MP_APIC_ALL, 0x0);
+	smp_write_intsrc(mc, mp_NMI, MP_IRQ_TRIGGER_DEFAULT|MP_IRQ_POLARITY_DEFAULT, 0x0, 0x0, MP_APIC_ALL, 0x1);
+	/* There is no extension information... */
+
+	/* Compute the checksums */
+	mc->mpe_checksum = smp_compute_checksum(smp_next_mpc_entry(mc), mc->mpe_length);
+	mc->mpc_checksum = smp_compute_checksum(mc, mc->mpc_length);
+	printk_debug("Wrote the mp table end at: %p - %p\n",
+		mc, smp_next_mpe_entry(mc));
+	return smp_next_mpe_entry(mc);
+}
+
+unsigned long write_smp_table(unsigned long addr)
+{
+	void *v;
+	v = smp_write_floating_table(addr);
+	return (unsigned long)smp_write_config_table(v);
+}
Index: via/epia-n/irq_tables.c
===================================================================
--- via/epia-n/irq_tables.c	(revision 1)
+++ via/epia-n/irq_tables.c	(working copy)
@@ -1,53 +1,47 @@
-/*
- * This file is part of the coreboot project.
+/* This file was generated by getpir.c, do not modify!
+ * (but if you do, please run checkpir on it to verify)
  *
- * Copyright (C) 2009 Jon Harrison <bothlyn@blueyonder.co.uk>
+ * Contains the IRQ Routing Table dumped directly from your
+ * memory, which BIOS sets up.
  *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+ * Documentation at: http://www.microsoft.com/whdc/archive/pciirq.mspx
  */
 
+#ifdef GETPIR
+#include "pirq_routing.h"
+#else
 #include <arch/pirq_routing.h>
+#endif
 
 const struct irq_routing_table intel_irq_routing_table = {
-	PIRQ_SIGNATURE,		/* u32 signature */
-	PIRQ_VERSION,		/* u16 version */
-	32 + 16 * 7,		/* Max. number of devices on the bus */
-	0x00,			/* Interrupt router bus */
-	(0x11 << 3) | 0x0,	/* Interrupt router dev */
-	0x1c00,			/* IRQs devoted exclusively to PCI usage */
-	0x1106,			/* Vendor */
-	0x596,			/* Device */
-	0,			/* Miniport */
+	PIRQ_SIGNATURE,  /* u32 signature */
+	PIRQ_VERSION,    /* u16 version   */
+	32+16*7,	 /* There can be total 7 devices on the bus */
+	0x00,		 /* Where the interrupt router lies (bus) */
+	(0x11<<3)|0x0,   /* Where the interrupt router lies (dev) */
+	0x1c00,		 /* IRQs devoted exclusively to PCI usage */
+	0x1106,		 /* Vendor */
+	0x3227,		 /* Device */
+	0,		 /* Miniport */
 	{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, /* u8 rfu[11] */
-	0xf,			/* Checksum (has to be set to some value that
-				 * would give 0 after the sum of all bytes
-				 * for this structure (including checksum).
-                                 */
+	0xf,		 /* u8 checksum. This has to be set to some
+			    value that would give 0 after the sum of all
+			    bytes for this structure (including checksum) */
 	{
-		/* bus,        dev | fn,   {link, bitmap}, {link, bitmap}, {link, bitmap}, {link, bitmap}, slot, rfu */
-		{0x00, (0x14 << 3) | 0x0, {{0x03, 0xdeb8}, {0x05, 0xdeb8}, {0x01, 0xdeb8}, {0x02, 0xdeb8}}, 0x1, 0x0},
-		{0x00, (0x13 << 3) | 0x0, {{0x05, 0xdeb8}, {0x03, 0xdeb8}, {0x02, 0xdeb8}, {0x01, 0xdeb8}}, 0x2, 0x0},
-		{0x00, (0x11 << 3) | 0x0, {{0x00, 0xdeb8}, {0x00, 0xdeb8}, {0x03, 0xdeb8}, {0x05, 0xdeb8}}, 0x0, 0x0},
-		{0x00, (0x0f << 3) | 0x0, {{0x01, 0xdeb8}, {0x02, 0xdeb8}, {0x03, 0xdeb8}, {0x05, 0xdeb8}}, 0x0, 0x0},
-		{0x00, (0x01 << 3) | 0x0, {{0x01, 0xdeb8}, {0x02, 0xdeb8}, {0x03, 0xdeb8}, {0x05, 0xdeb8}}, 0x0, 0x0},
-		{0x00, (0x10 << 3) | 0x0, {{0x01, 0xdeb8}, {0x02, 0xdeb8}, {0x03, 0xdeb8}, {0x05, 0xdeb8}}, 0x0, 0x0},
-		{0x00, (0x12 << 3) | 0x0, {{0x01, 0xdeb8}, {0x00, 0xdeb8}, {0x00, 0xdeb8}, {0x00, 0xdeb8}}, 0x0, 0x0},
+		/* bus,     dev|fn,   {link, bitmap}, {link, bitmap}, {link, bitmap}, {link, bitmap},  slot, rfu */
+		{0x00,(0x14<<3)|0x0, {{0x03, 0xdeb8}, {0x05, 0xdeb8}, {0x01, 0xdeb8}, {0x02, 0xdeb8}}, 0x1, 0x0},
+		{0x00,(0x13<<3)|0x0, {{0x05, 0xdeb8}, {0x03, 0xdeb8}, {0x02, 0xdeb8}, {0x01, 0xdeb8}}, 0x2, 0x0},
+		{0x00,(0x11<<3)|0x0, {{0x00, 0xdeb8}, {0x00, 0xdeb8}, {0x03, 0xdeb8}, {0x05, 0xdeb8}}, 0x0, 0x0},
+		{0x00,(0x0f<<3)|0x0, {{0x01, 0xdeb8}, {0x02, 0xdeb8}, {0x03, 0xdeb8}, {0x05, 0xdeb8}}, 0x0, 0x0},
+		{0x00,(0x01<<3)|0x0, {{0x01, 0xdeb8}, {0x02, 0xdeb8}, {0x03, 0xdeb8}, {0x05, 0xdeb8}}, 0x0, 0x0},
+		{0x00,(0x10<<3)|0x0, {{0x01, 0xdeb8}, {0x02, 0xdeb8}, {0x03, 0xdeb8}, {0x05, 0xdeb8}}, 0x0, 0x0},
+		{0x00,(0x12<<3)|0x0, {{0x01, 0xdeb8}, {0x00, 0xdeb8}, {0x00, 0xdeb8}, {0x00, 0xdeb8}}, 0x0, 0x0},
 	}
 };
+#ifndef GETPIR
 
 unsigned long write_pirq_routing_table(unsigned long addr)
 {
 	return copy_pirq_routing_table(addr);
 }
+#endif
Index: via/epia-n/irq_links.asl
===================================================================
--- via/epia-n/irq_links.asl	(revision 0)
+++ via/epia-n/irq_links.asl	(revision 0)
@@ -0,0 +1,571 @@
+/*
+ * Minimalist ACPI DSDT table for EPIA-N / NL
+ * Basic description of PCI Interrupt Assignments.
+ * This is expected to be included into _SB.PCI0 namespace
+ * (C) Copyright 2009 Jon Harrison <jon.harrison@blueyonder.co.uk>
+ * 
+ */
+ 
+ /* PCI PnP Routing Links */
+ 
+ /* Define how interrupt Link A is plumbed in */ 
+ Device (LNKA)
+ {
+	 Name (_HID, EisaId ("PNP0C0F"))
+	 Name (_UID, 0x01)
+ 	 /* Status - always return ready */
+	 Method (_STA, 0, NotSerialized)
+	 {
+	 	/* See If Coreboot has allocated INTA# */
+	 	And (PIRA, 0xF0, Local0)
+		If (LEqual (Local0, 0x00))
+		{
+			Return (0x09)
+		}
+		Else
+		{
+		 	Return (0x0B)
+		}
+	 }
+
+	 Method (_PRS, 0, NotSerialized)
+	 {
+		 Name (BUFA, ResourceTemplate ()
+		 {
+			 IRQ (Level, ActiveLow, Shared, )
+				 {3,4,6,7,10,11,12}
+		 })
+		 Return (BUFA)
+	 }
+
+	 Method (_CRS, 0, NotSerialized)
+	 {
+		 Name (BUFA, ResourceTemplate ()
+		 {
+			 IRQ (Level, ActiveLow, Shared, _Y07) 
+			 {}
+		 })
+		 /* Read the Binary Encoded Field and Map this        */
+		 /* onto the bitwise _INT field in the IRQ descriptor */
+		 /* See ACPI Spec for detail of _IRQ Descriptor       */
+         CreateByteField (BUFA, \_SB.PCI0.LNKA._CRS._Y07._INT, IRA1)
+         CreateByteField (BUFA, 0x02, IRA2)
+         Store (0x00, Local3)
+         Store (0x00, Local4)
+         And (PIRA, 0xF0, Local1)
+         ShiftRight (Local1, 0x04, Local1)
+         If (LNotEqual (Local1, 0x00))
+         {
+         	 If (LGreater (Local1, 0x07))
+         	 {
+         		 Subtract (Local1, 0x08, Local2)
+         		 ShiftLeft (One, Local2, Local4)
+         	 }
+         	 Else
+         	 {
+         		 If (LGreater (Local1, 0x00))
+         		 {
+         			 ShiftLeft (One, Local1, Local3)
+         		 }
+         	 }
+
+         	 Store (Local3, IRA1)
+         	 Store (Local4, IRA2)
+         }
+		 Return (BUFA)
+	 }
+
+ 	 /* Set Resources - dummy function to keep Linux ACPI happy
+	  * Linux is more than happy not to tinker with irq
+ 	  * assignments as long as the CRS and STA functions 
+ 	  * return good values
+ 	 */
+	 Method (_SRS, 1, NotSerialized) {}
+ 	 /* Disable - Set PnP Routing Reg to 0 */
+ 	 Method (_DIS, 0, NotSerialized ) 
+	 {
+	 	And (PIRA, 0x0F, PIRA)
+	 }
+ } // End of LNKA
+
+ Device (LNKB)
+ {
+	 Name (_HID, EisaId ("PNP0C0F"))
+	 Name (_UID, 0x02)
+	 Method (_STA, 0, NotSerialized)
+	 {
+	 	/* See If Coreboot has allocated INTB# */
+	 	And (PIBC, 0x0F, Local0)
+		If (LEqual (Local0, 0x00))
+		{
+			Return (0x09)
+		}
+		Else
+		{
+		 	Return (0x0B)
+		}
+	 }
+
+	 Method (_PRS, 0, NotSerialized)
+	 {
+		 Name (BUFB, ResourceTemplate ()
+		 {
+			 IRQ (Level, ActiveLow, Shared, )
+				 {3,4,6,7,10,11,12}
+		 })
+		 Return (BUFB)
+	 }
+
+	 Method (_CRS, 0, NotSerialized)
+	 {
+		 Name (BUFB, ResourceTemplate ()
+		 {
+			 IRQ (Level, ActiveLow, Shared, _Y08) 
+			 {}
+		 })
+		 /* Read the Binary Encoded Field and Map this        */
+		 /* onto the bitwise _INT field in the IRQ descriptor */
+		 /* See ACPI Spec for detail of _IRQ Descriptor       */
+         CreateByteField (BUFB, \_SB.PCI0.LNKB._CRS._Y08._INT, IRB1)
+         CreateByteField (BUFB, 0x02, IRB2)
+         Store (0x00, Local3)
+         Store (0x00, Local4)
+         And (PIBC, 0x0F, Local1)
+         If (LNotEqual (Local1, 0x00))
+         {
+         	 If (LGreater (Local1, 0x07))
+         	 {
+         		 Subtract (Local1, 0x08, Local2)
+         		 ShiftLeft (One, Local2, Local4)
+         	 }
+         	 Else
+         	 {
+         		 If (LGreater (Local1, 0x00))
+         		 {
+         			 ShiftLeft (One, Local1, Local3)
+         		 }
+         	 }
+
+         	 Store (Local3, IRB1)
+         	 Store (Local4, IRB2)
+         }
+		 Return (BUFB)
+	 }
+
+ 	 /* Set Resources - dummy function to keep Linux ACPI happy
+	  * Linux is more than happy not to tinker with irq
+ 	  * assignments as long as the CRS and STA functions 
+ 	  * return good values
+ 	 */
+	 Method (_SRS, 1, NotSerialized) {}
+ 	 /* Disable - Set PnP Routing Reg to 0 */
+ 	 Method (_DIS, 0, NotSerialized ) 
+	 {
+	 	And (PIBC, 0xF0, PIBC)
+	 }
+
+ } // End of LNKB
+
+ Device (LNKC)
+ {
+	 Name (_HID, EisaId ("PNP0C0F"))
+	 Name (_UID, 0x03)
+	 Method (_STA, 0, NotSerialized)
+	 {
+	 	/* See If Coreboot has allocated INTC# */
+	 	And (PIBC, 0xF0, Local0)
+		If (LEqual (Local0, 0x00))
+		{
+			Return (0x09)
+		}
+		Else
+		{
+		 	Return (0x0B)
+		}
+	 }
+
+	 Method (_PRS, 0, NotSerialized)
+	 {
+		 Name (BUFC, ResourceTemplate ()
+		 {
+			 IRQ (Level, ActiveLow, Shared, )
+				 {3,4,6,7,10,11,12}
+		 })
+		 Return (BUFC)
+	 }
+
+	 Method (_CRS, 0, NotSerialized)
+	 {
+		 Name (BUFC, ResourceTemplate ()
+		 {
+			 IRQ (Level, ActiveLow, Shared, _Y09) 
+			 {}
+		 })
+		 /* Read the Binary Encoded Field and Map this        */
+		 /* onto the bitwise _INT field in the IRQ descriptor */
+		 /* See ACPI Spec for detail of _IRQ Descriptor       */
+         CreateByteField (BUFC, \_SB.PCI0.LNKC._CRS._Y09._INT, IRC1)
+         CreateByteField (BUFC, 0x02, IRC2)
+         Store (0x00, Local3)
+         Store (0x00, Local4)
+         And (PIBC, 0xF0, Local1)
+         ShiftRight (Local1, 0x04, Local1)
+         If (LNotEqual (Local1, 0x00))
+         {
+         	 If (LGreater (Local1, 0x07))
+         	 {
+         		 Subtract (Local1, 0x08, Local2)
+         		 ShiftLeft (One, Local2, Local4)
+         	 }
+         	 Else
+         	 {
+         		 If (LGreater (Local1, 0x00))
+         		 {
+         			 ShiftLeft (One, Local1, Local3)
+         		 }
+         	 }
+
+         	 Store (Local3, IRC1)
+         	 Store (Local4, IRC2)
+         }
+		 Return (BUFC)
+	 }
+
+ 	 /* Set Resources - dummy function to keep Linux ACPI happy
+	  * Linux is more than happy not to tinker with irq
+ 	  * assignments as long as the CRS and STA functions 
+ 	  * return good values
+ 	 */
+	 Method (_SRS, 1, NotSerialized) {}
+ 	 /* Disable - Set PnP Routing Reg to 0 */
+ 	 Method (_DIS, 0, NotSerialized ) 
+	 {
+	 	And (PIBC, 0x0F, PIBC)
+	 }
+
+} // End of LNKC
+
+Device (LNKD)
+{
+	 Name (_HID, EisaId ("PNP0C0F"))
+	 Name (_UID, 0x04)
+	 Method (_STA, 0, NotSerialized)
+	 {
+	 	/* See If Coreboot has allocated INTD# */
+	 	And (PIRD, 0xF0, Local0)
+		If (LEqual (Local0, 0x00))
+		{
+			Return (0x09)
+		}
+		Else
+		{
+		 	Return (0x0B)
+		}
+	 }
+
+	 Method (_PRS, 0, NotSerialized)
+	 {
+		 Name (BUFD, ResourceTemplate ()
+		 {
+			 IRQ (Level, ActiveLow, Shared, )
+				 {3,4,6,7,10,11,12}
+		 })
+		 Return (BUFD)
+	 }
+
+	 Method (_CRS, 0, NotSerialized)
+	 {
+		 Name (BUFD, ResourceTemplate ()
+		 {
+			 IRQ (Level, ActiveLow, Shared, _Y0A) 
+			 {}
+		 })
+		 /* Read the Binary Encoded Field and Map this        */
+		 /* onto the bitwise _INT field in the IRQ descriptor */
+		 /* See ACPI Spec for detail of _IRQ Descriptor       */
+         CreateByteField (BUFD, \_SB.PCI0.LNKD._CRS._Y0A._INT, IRD1)
+         CreateByteField (BUFD, 0x02, IRD2)
+         Store (0x00, Local3)
+         Store (0x00, Local4)
+         And (PIRD, 0xF0, Local1)
+         ShiftRight (Local1, 0x04, Local1)
+         If (LNotEqual (Local1, 0x00))
+         {
+         	 If (LGreater (Local1, 0x07))
+         	 {
+         		 Subtract (Local1, 0x08, Local2)
+         		 ShiftLeft (One, Local2, Local4)
+         	 }
+         	 Else
+         	 {
+         		 If (LGreater (Local1, 0x00))
+         		 {
+         			 ShiftLeft (One, Local1, Local3)
+         		 }
+         	 }
+
+         	 Store (Local3, IRD1)
+         	 Store (Local4, IRD2)
+         }
+		 Return (BUFD)
+	 }
+
+ 	 /* Set Resources - dummy function to keep Linux ACPI happy
+	  * Linux is more than happy not to tinker with irq
+ 	  * assignments as long as the CRS and STA functions 
+ 	  * return good values
+ 	 */
+	 Method (_SRS, 1, NotSerialized) {}
+ 	 /* Disable - Set PnP Routing Reg to 0 */
+ 	 Method (_DIS, 0, NotSerialized ) 
+	 {
+	 	And (PIRD, 0x0F, PIRD)
+	 }
+
+} // End of LNKD
+
+
+/* APIC IRQ Links */
+
+Device (ATAI)
+{
+	 Name (_HID, EisaId ("PNP0C0F"))
+	 Name (_UID, 0x05)
+	 Method (_STA, 0, NotSerialized)
+	 {
+	 	/* ATFL == 0x02 if SATA Enabled */
+      	If (LNotEqual (ATFL, 0x02))
+      	{
+			/* Double Check By Reading SATA VID */
+			/* Otherwise Compatibility Mode     */ 
+        	If (LNotEqual (\_SB.PCI0.SATA.VID, 0x1106))
+          	{
+        	  	Return (0x09)
+          	}
+          	Else
+          	{
+        	  	Return (0x0B)
+          	}
+      	}
+      	Else
+      	{
+			/* Serial ATA Enabled Check if PATA is in */
+			/* Compatibility Mode 					  */
+          	If (LEqual (\_SB.PCI0.PATA.ENAT, 0x0A))
+          	{
+        	  	Return (0x09)
+          	}
+          	Else
+          	{
+        	  	Return (0x0B)
+          	}
+      	}
+	 }
+	 
+     Method (_PRS, 0, NotSerialized)
+     {
+          Name (ATAN, ResourceTemplate ()
+          {
+              Interrupt (ResourceConsumer, Level, ActiveLow, Shared, ,, )
+              {
+            	  0x00000014,
+              }
+          })
+		  Return (ATAN)
+	 }
+	 
+     Method (_CRS, 0, NotSerialized)
+     {
+     	Name (ATAB, ResourceTemplate ()
+        {
+            Interrupt (ResourceConsumer, Level, ActiveLow, Shared, ,, _Y10)
+            {
+                0x00000000,
+            }
+        })
+        CreateByteField (ATAB, \_SB.PCI0.ATAI._CRS._Y10._INT, IRAI)
+        Store (0x14, IRAI)
+        Return (ATAB)
+	 
+	 }
+	 
+ 	 /* Set Resources - dummy function to keep Linux ACPI happy
+	  * Linux is more than happy not to tinker with irq
+ 	  * assignments as long as the CRS and STA functions 
+ 	  * return good values
+ 	 */
+	 Method (_SRS, 1, NotSerialized) {}
+ 	 /* Disable - dummy function to keep Linux ACPI happy */
+ 	 Method (_DIS, 0, NotSerialized ) {}
+
+} // End of ATA Interface Link
+
+
+Device (USBI)
+{
+	Name (_HID, EisaId ("PNP0C0F"))
+    Name (_UID, 0x0A)
+    Method (_STA, 0, NotSerialized)
+    {
+		/* Check that at least one of the USB */
+		/* functions is enabled               */
+         And (IDEB, 0x37, Local0)
+         If (LEqual (Local0, 0x37))
+         {
+         	 Return (0x09)
+         }
+         Else
+         {
+         	 Return (0x0B)
+         }
+	}
+	
+    Method (_PRS, 0, NotSerialized)
+    {
+        Name (USBB, ResourceTemplate ()
+        {
+            Interrupt (ResourceConsumer, Level, ActiveLow, Shared, ,, )
+            {
+                0x00000015,
+            }
+        })
+  		
+		Return(USBB)
+	}
+
+    Method (_CRS, 0, NotSerialized)
+    {
+        Name (USBB, ResourceTemplate ()
+        {
+            Interrupt (ResourceConsumer, Level, ActiveLow, Shared, ,, _Y12)
+            {
+                0x00000000,
+            }
+        })
+        CreateByteField (USBB, \_SB.PCI0.USBI._CRS._Y12._INT, IRBI)
+        Store (0x15, IRBI)
+        Return (USBB)
+	}
+
+
+ 	/* Set Resources - dummy function to keep Linux ACPI happy
+	 * Linux is more than happy not to tinker with irq
+ 	 * assignments as long as the CRS and STA functions 
+ 	 * return good values
+ 	*/
+	Method (_SRS, 1, NotSerialized) {}
+ 	/* Disable - dummy function to keep Linux ACPI happy */
+ 	Method (_DIS, 0, NotSerialized ) {}
+}
+
+Device (VT8I)
+{
+    Name (_HID, EisaId ("PNP0C0F"))
+    Name (_UID, 0x0B)
+    Method (_STA, 0, NotSerialized)
+    {
+		/* Check Whether Sound and/or Modem are Activated */
+        If (LEqual (EAMC, 0x03))
+        {
+            Return (0x09)
+        }
+        Else
+        {
+            Return (0x0B)
+        }
+    }
+
+    Method (_PRS, 0, NotSerialized)
+    {
+        Name (A97C, ResourceTemplate ()
+        {
+            Interrupt (ResourceConsumer, Level, ActiveLow, Shared, ,, )
+            {
+                0x00000016,
+            }
+        })
+        Return (A97C)
+	}
+
+    Method (_CRS, 0, NotSerialized)
+    {
+        Name (A97B, ResourceTemplate ()
+        {
+            Interrupt (ResourceConsumer, Level, ActiveLow, Shared, ,, _Y14)
+            {
+                0x00000000,
+            }
+        })
+        CreateByteField (A97B, \_SB.PCI0.VT8I._CRS._Y14._INT, IRCI)
+        Store (0x16, IRCI)
+        Return (A97B)
+	}
+
+ 	/* Set Resources - dummy function to keep Linux ACPI happy
+	 * Linux is more than happy not to tinker with irq
+ 	 * assignments as long as the CRS and STA functions 
+ 	 * return good values
+ 	*/
+	Method (_SRS, 1, NotSerialized) {}
+ 	/* Disable - dummy function to keep Linux ACPI happy */
+ 	Method (_DIS, 0, NotSerialized ) {}
+
+}
+
+
+Device (NICI)
+{
+    Name (_HID, EisaId ("PNP0C0F"))
+    Name (_UID, 0x0C)
+    Method (_STA, 0, NotSerialized)
+    {
+		/* Check if LAN Function is Enabled           */
+		/* Note that LAN Enable Polarity is different */
+		/* from other functions in VT8237R !?         */
+    	If (LEqual (ELAN, 0x00))
+    	{
+    		Return (0x09)
+    	}
+    	Else
+    	{
+    		Return (0x0B)
+    	}
+	}
+	
+    Method (_PRS, 0, NotSerialized)
+    {
+        Name (NICB, ResourceTemplate ()
+        {
+            Interrupt (ResourceConsumer, Level, ActiveLow, Shared, ,, )
+            {
+                0x00000017,
+            }
+        })
+        Return (NICB)
+	}
+	
+    Method (_CRS, 0, NotSerialized)
+    {
+        Name (NICD, ResourceTemplate ()
+        {
+            Interrupt (ResourceConsumer, Level, ActiveLow, Shared, ,, _Y16)
+            {
+                0x00000000,
+            }
+        })
+        CreateByteField (NICD, \_SB.PCI0.NICI._CRS._Y16._INT, IRDI)
+        Store (0x17, IRDI)
+        Return (NICD)
+	}
+				
+  	/* Set Resources - dummy function to keep Linux ACPI happy
+	 * Linux is more than happy not to tinker with irq
+ 	 * assignments as long as the CRS and STA functions 
+ 	 * return good values
+ 	*/
+	Method (_SRS, 1, NotSerialized) {}
+ 	/* Disable - dummy function to keep Linux ACPI happy */
+ 	Method (_DIS, 0, NotSerialized ) {}
+
+
+}
Index: via/epia-n/dsdt.asl
===================================================================
--- via/epia-n/dsdt.asl	(revision 1)
+++ via/epia-n/dsdt.asl	(working copy)
@@ -1,257 +1,354 @@
 /*
- * Minimalist ACPI DSDT table for EPIA-M / MII
+ * Minimalist ACPI DSDT table for EPIA-N / NL
+ * (C) Copyright 2009 Jon Harrison <jon.harrison@blueyonder.co.uk>
+ * Heavily based on EPIA-M dstd.asl
  * (C) Copyright 2004 Nick Barker <Nick.Barker9@btinternet.com>
- *
  * 
  */
-
-DefinitionBlock ("DSDT.aml", "DSDT", 1, "LXBIOS", "LXB-DSDT", 1)
+DefinitionBlock ("dsdt.aml", "DSDT", 1, "CBT-V2", "CBT-DSDT", 1)
 {
-	/*  
-	 * Define the main processor
-	 */
-	Scope (\_PR)
-	{
-		Processor (\_PR.CPU0, 0x00, 0x00000410, 0x06) {}
-	}
+    Scope (\_PR)
+    {
+        Processor (\_PR.CPU0, 0x00, 0x00000000, 0x00) {}
+    }
 
 	/* For now only define 2 power states:
 	 *  - S0 which is fully on
 	 *  - S5 which is soft off
 	 * any others would involve declaring the wake up methods
 	 */
-	Name (\_S0, Package () {0x00, 0x00, 0x00, 0x00 })
-	Name (\_S5, Package () {0x02, 0x02, 0x00, 0x00 })
-
+    Name (\_S0, Package (0x04)
+    {
+        0x00, 
+        0x00, 
+        0x00, 
+        0x00
+    })
+    Name (\_S5, Package (0x04)
+    {
+        0x02, 
+        0x02, 
+        0x02, 
+        0x02
+    })
+	
+	/* Global Flag Used to Indicate State of */
+	/* ATA Interface                         */
+    Name (ATFL, 0x00)
+	
 	/* Root of the bus hierarchy */
 	Scope (\_SB)
-    	{
-		/* Define how interrupt Link A is plumbed in */ 
-		Device (LNKA)
-		{
-			Name (_HID, EisaId ("PNP0C0F"))
-			Name (_UID, 0x01)
-			/* Status - always return ready */
-			Method (_STA, 0, NotSerialized)
-			{
-				Return (0x0B)
- 			}
-			/* Current Resources - return irq set up in BIOS */  
-			Method (_CRS, 0, NotSerialized)
-			{
-				Name (BUFF, ResourceTemplate ()
-				{
-					IRQ (Level, ActiveLow, Shared) {5}
-				})
-				Return (BUFF)
-                	}
-			/* Possible Resources - return the range of irqs
- 			 * we are using for PCI - only here to keep Linux ACPI
-			 * happy 
-			 */
-			Method (_PRS, 0, NotSerialized)
-			{
-				Name (BUFF, ResourceTemplate ()
-                    		{
-					IRQ (Level, ActiveLow, Shared) {5,9,10}
-                    		})
-                    		Return (BUFF)
-                	}
-			/* Set Resources - dummy function to keep Linux ACPI happy
-                         * Linux is more than happy not to tinker with irq
-			 * assignments as long as the CRS and STA functions 
-			 * return good values
-			 */
-			Method (_SRS, 1, NotSerialized ) {}
-			/* Disable - dummy function to keep Linux ACPI happy */
-			Method (_DIS, 0, NotSerialized ) {}
- 
-		} // End of LNKA 
+    {
+	 
+       Device (PCI0)
+       {
+           Name (_HID, EisaId ("PNP0A03"))
+           Name (_ADR, 0x00)
+           Name (_UID, 0x01)
+           Name (_BBN, 0x00)
+	       
+	       /* PCI Routing Table */
+	       Name (_PRT, Package () {
+	       
+        	   Package (0x04) {0x000FFFFF, 0x00, ATAI, 0x00}, // SATA Link A
+        	   Package (0x04) {0x000FFFFF, 0x01, ATAI, 0x00}, // SATA Link B
+        	   Package (0x04) {0x000FFFFF, 0x02, ATAI, 0x00}, // SATA Link C
+        	   Package (0x04) {0x000FFFFF, 0x03, ATAI, 0x00}, // SATA Link D
+			   
+        	   Package (0x04) {0x0010FFFF, 0x00, USBI, 0x00}, // USB Link A
+        	   Package (0x04) {0x0010FFFF, 0x01, USBI, 0x00}, // USB Link B
+        	   Package (0x04) {0x0010FFFF, 0x02, USBI, 0x00}, // USB Link C
+        	   Package (0x04) {0x0010FFFF, 0x03, USBI, 0x00}, // USB Link D
 
-		/* Define how interrupt Link B is plumbed in */ 
-		Device (LNKB)
-		{
-			Name (_HID, EisaId ("PNP0C0F"))
-			Name (_UID, 0x02)
-			/* Status - always return ready */
-			Method (_STA, 0, NotSerialized)
-			{
-				Return (0x0B)
- 			}
-			/* Current Resources - return irq set up in BIOS */  
-			Method (_CRS, 0, NotSerialized)
-			{
-				Name (BUFF, ResourceTemplate ()
-				{
-					IRQ (Level, ActiveLow, Shared) {9}
-				})
-				Return (BUFF)
-                	}
-			/* Possible Resources - return the range of irqs
-			 * we are using for PCI - only here to keep Linux ACPI
-			 * happy 
-			 */
-			Method (_PRS, 0, NotSerialized)
-			{
-				Name (BUFF, ResourceTemplate ()
-                    		{
-					IRQ (Level, ActiveLow, Shared) {5,9,10}
-                    		})
-                    		Return (BUFF)
-                	}
-			/* Set Resources - dummy function to keep Linux ACPI happy
-                         * Linux is more than happy not to tinker with irq
-			 * assignments as long as the CRS and STA functions 
-			 * return good values
-			 */
-			Method (_SRS, 1, NotSerialized ) {}
-			/* Disable - dummy function to keep Linux ACPI happy */
-			Method (_DIS, 0, NotSerialized ) {}
- 
-		} // End of LNKB
+        	   Package (0x04) {0x0011FFFF, 0x00, VT8I, 0x00}, // VT8237 Link A
+        	   Package (0x04) {0x0011FFFF, 0x01, VT8I, 0x00}, // VT8237 Link B
+        	   Package (0x04) {0x0011FFFF, 0x02, VT8I, 0x00}, // VT8237 Link C
+        	   Package (0x04) {0x0011FFFF, 0x03, VT8I, 0x00}, // VT8237 Link D
 
-		/* Define how interrupt Link C is plumbed in */ 
-		Device (LNKC)
-		{
-			Name (_HID, EisaId ("PNP0C0F"))
-			Name (_UID, 0x03)
-			/* Status - always return ready */
-			Method (_STA, 0, NotSerialized)
-			{
-				Return (0x0B)
- 			}
-			/* Current Resources - return irq set up in BIOS */  
-			Method (_CRS, 0, NotSerialized)
-			{
-				Name (BUFF, ResourceTemplate ()
-				{
-					IRQ (Level, ActiveLow, Shared) {9}
-				})
-				Return (BUFF)
-                	}
-			/* Possible Resources - return the range of irqs
-			 * we are using for PCI - only here to keep Linux ACPI
-			 * happy 
-			 */
-			Method (_PRS, 0, NotSerialized)
-			{
-				Name (BUFF, ResourceTemplate ()
-                    		{
-					IRQ (Level, ActiveLow, Shared) {5,9,10}
-                    		})
-                    		Return (BUFF)
-                	}
-			/* Set Resources - dummy function to keep Linux ACPI happy
-                         * Linux is more than happy not to tinker with irq
-			 * assignments as long as the CRS and STA functions 
-			 * return good values
-			 */
-			Method (_SRS, 1, NotSerialized ) {}
-			/* Disable - dummy function to keep Linux ACPI happy */
-			Method (_DIS, 0, NotSerialized ) {}
- 
-		} // End of LNKC
+        	   Package (0x04) {0x0012FFFF, 0x00, NICI, 0x00}, // LAN Link A
+        	   Package (0x04) {0x0012FFFF, 0x01, NICI, 0x00}, // LAN Link B
+        	   Package (0x04) {0x0012FFFF, 0x02, NICI, 0x00}, // LAN Link C
+        	   Package (0x04) {0x0012FFFF, 0x03, NICI, 0x00}, // LAN Link D
 
-		/* Define how interrupt Link D is plumbed in */ 
-		Device (LNKD)
-		{
-			Name (_HID, EisaId ("PNP0C0F"))
-			Name (_UID, 0x04)
-			/* Status - always return ready */
-			Method (_STA, 0, NotSerialized)
-			{
-				Return (0x0B)
- 			}
-			/* Current Resources - return irq set up in BIOS */  
-			Method (_CRS, 0, NotSerialized)
-			{
-				Name (BUFF, ResourceTemplate ()
-				{
-					IRQ (Level, ActiveLow, Shared) {5}
-				})
-				Return (BUFF)
-                	}
-			/* Possible Resources - return the range of irqs
-			 * we are using for PCI - only here to keep Linux ACPI
-			 * happy 
-			 */
-			Method (_PRS, 0, NotSerialized)
-			{
-				Name (BUFF, ResourceTemplate ()
-                    		{
-					IRQ (Level, ActiveLow, Shared) {5,9,10}
-                    		})
-                    		Return (BUFF)
-                	}
-			/* Set Resources - dummy function to keep Linux ACPI happy
-                         * Linux is more than happy not to tinker with irq
-			 * assignments as long as the CRS and STA functions 
-			 * return good values
-			 */
-			Method (_SRS, 1, NotSerialized ) {}
-			/* Disable - dummy function to keep Linux ACPI happy */
-			Method (_DIS, 0, NotSerialized ) {}
- 
-		} // End of LNKD 
+        	   Package (0x04) {0x0001FFFF, 0x00, 0, 0x10}, // VGA Link A (GSI)
+        	   Package (0x04) {0x0001FFFF, 0x01, 0, 0x11}, // VGA Link B (GSI)
+        	   Package (0x04) {0x0001FFFF, 0x02, 0, 0x12}, // VGA Link C (GSI)
+        	   Package (0x04) {0x0001FFFF, 0x03, 0, 0x13}, // VGA Link D (GSI)
 
- 
-		/* top PCI device */
-		Device (PCI0)
-		{
-			Name (_HID, EisaId ("PNP0A03"))
-			Name (_ADR, 0x00)
-			Name (_UID, 0x00)
-			Name (_BBN, 0x00)
+        	   Package (0x04) {0x0014FFFF, 0x00, 0, 0x12}, // Slot 1 Link C (GSI)
+        	   Package (0x04) {0x0014FFFF, 0x01, 0, 0x13}, // Slot 1 Link D (GSI)
+        	   Package (0x04) {0x0014FFFF, 0x02, 0, 0x10}, // Slot 1 Link A (GSI)
+        	   Package (0x04) {0x0014FFFF, 0x03, 0, 0x11}, // Slot 1 Link B (GSI)
 
-			/* PCI Routing Table */
-			Name (_PRT, Package () {
-				/* Epia-MII 6000e cardbus: */
-				Package () {0x000AFFFF, 0x00, LNKA, 0x00}, // Cardbus Link A
-				Package () {0x000AFFFF, 0x01, LNKB, 0x00}, // Cardbus Link B
-				Package () {0x000AFFFF, 0x02, LNKC, 0x00}, // Cardbus Link C
-				Package () {0x000AFFFF, 0x03, LNKD, 0x00}, // Cardbus Link D
+        	   Package (0x04) {0x0013FFFF, 0x00, 0, 0x13}, // Riser Slot Link D (GSI)
+        	   Package (0x04) {0x0013FFFF, 0x01, 0, 0x12}, // Riser Slot Link C (GSI)
+        	   Package (0x04) {0x0013FFFF, 0x02, 0, 0x11}, // Riser Slot Link B (GSI)
+        	   Package (0x04) {0x0013FFFF, 0x03, 0, 0x10} // Riser Slot Link A (GSI)
 
-				Package () {0x000DFFFF, 0x00, LNKB, 0x00}, // Firewire Link B
-				Package () {0x000DFFFF, 0x01, LNKC, 0x00}, // Firewire Link C
-				Package () {0x000DFFFF, 0x02, LNKD, 0x00}, // Firewire Linc D
-				Package () {0x000DFFFF, 0x03, LNKA, 0x00}, // Firewire Link A
+	       })
+		   
+		   /* PCI Devices Included Here */
+		   Include("sb_physical.asl")
+			
+		   /* Legacy PNP Devices Defined Here */
+		   
+		   /* Disable PS2 Mouse Support */
+           Device (PS2M)
+           {
+        	   Name (_HID, EisaId ("PNP0F13"))
+        	   Method (_STA, 0, NotSerialized)
+        	   {
+       			   Return (0x09)
+        	   }
 
-				Package () {0x0010FFFF, 0x00, LNKA, 0x00}, // USB Link A
-				Package () {0x0010FFFF, 0x01, LNKB, 0x00}, // USB Link B
-				Package () {0x0010FFFF, 0x02, LNKC, 0x00}, // USB Link C
-				Package () {0x0010FFFF, 0x03, LNKD, 0x00}, // USB Link D
+        	   Method (_CRS, 0, NotSerialized)
+        	   {
+        		   Name (BUF1, ResourceTemplate ()
+        		   {
+        			   IRQNoFlags ()
+        				   {12}
+        		   })
+        		   Return (BUF1) 
+        	   }
+           }
+		   
+		   /* Disable Legacy PS2 Keyboard Support */		   
+           Device (PS2K)
+           {
+         	   Name (_HID, EisaId ("PNP0303"))
+         	   Name (_CID, 0x0B03D041)
+         	   Method (_STA, 0, NotSerialized)
+         	   {
+         			Return (0x09)
+         	   }
 
-				Package () {0x0011FFFF, 0x00, LNKA, 0x00}, // vt8623 Link A
-				Package () {0x0011FFFF, 0x01, LNKB, 0x00}, // vt8623 Link B
-				Package () {0x0011FFFF, 0x02, LNKC, 0x00}, // vt8623 Link C
-				Package () {0x0011FFFF, 0x03, LNKD, 0x00}, // vt8623 Link D
+         	   Name (_CRS, ResourceTemplate ()
+         	   {
+         		   IO (Decode16,
+         			   0x0060,  		   // Range Minimum
+         			   0x0060,  		   // Range Maximum
+         			   0x01,			   // Alignment
+         			   0x01,			   // Length
+         			   )
+         		   IO (Decode16,
+         			   0x0064,  		   // Range Minimum
+         			   0x0064,  		   // Range Maximum
+         			   0x01,			   // Alignment
+         			   0x01,			   // Length
+         			   )
+         		   IRQNoFlags ()
+         			   {1}
+         	   })
+           }
+		   
+		   /* Legacy PIC Description */
+           Device (PIC)
+           {
+         	   Name (_HID, EisaId ("PNP0000"))
+         	   Name (_CRS, ResourceTemplate ()
+         	   {
+         		   IO (Decode16,
+         			   0x0020,  		   // Range Minimum
+         			   0x0020,  		   // Range Maximum
+         			   0x01,			   // Alignment
+         			   0x02,			   // Length
+         			   )
+         		   IO (Decode16,
+         			   0x00A0,  		   // Range Minimum
+         			   0x00A0,  		   // Range Maximum
+         			   0x01,			   // Alignment
+         			   0x02,			   // Length
+         			   )
+         		   IRQNoFlags ()
+         			   {2}
+         	   })
+           }
 
-				Package () {0x0012FFFF, 0x00, LNKA, 0x00}, // LAN Link A 
-				Package () {0x0012FFFF, 0x01, LNKB, 0x00}, // LAN Link B
-				Package () {0x0012FFFF, 0x02, LNKC, 0x00}, // LAN Link C
-				Package () {0x0012FFFF, 0x03, LNKD, 0x00}, // LAN Link D
+		   /* Legacy DMA Description */
+           Device (DMA1)
+           {
+         	   Name (_HID, EisaId ("PNP0200"))
+         	   Name (_CRS, ResourceTemplate ()
+         	   {
+         		   DMA (Compatibility, BusMaster, Transfer8, )
+         			   {4}
+         		   IO (Decode16,
+         			   0x0000,  		   // Range Minimum
+         			   0x0000,  		   // Range Maximum
+         			   0x01,			   // Alignment
+         			   0x10,			   // Length
+         			   )
+         		   IO (Decode16,
+         			   0x0080,  		   // Range Minimum
+         			   0x0080,  		   // Range Maximum
+         			   0x01,			   // Alignment
+         			   0x11,			   // Length
+         			   )
+         		   IO (Decode16,
+         			   0x0094,  		   // Range Minimum
+         			   0x0094,  		   // Range Maximum
+         			   0x01,			   // Alignment
+         			   0x0C,			   // Length
+         			   )
+         		   IO (Decode16,
+         			   0x00C0,  		   // Range Minimum
+         			   0x00C0,  		   // Range Maximum
+         			   0x01,			   // Alignment
+         			   0x20,			   // Length
+         			   )
+         	   })
+           }
 
-				Package () {0x0013FFFF, 0x00, LNKA, 0x00}, // Riser slot LinkA 
-				Package () {0x0013FFFF, 0x01, LNKB, 0x00}, // Riser slot LinkB
-				Package () {0x0013FFFF, 0x02, LNKC, 0x00}, // Riser slot LinkC
-				Package () {0x0013FFFF, 0x03, LNKD, 0x00}, // Riser slot LinkD
+		   /* Legacy Timer Description */
+           Device (TMR)
+           {
+         	   Name (_HID, EisaId ("PNP0100"))
+         	   Name (_CRS, ResourceTemplate ()
+         	   {
+         		   IO (Decode16,
+         			   0x0040,  		   // Range Minimum
+         			   0x0040,  		   // Range Maximum
+         			   0x01,			   // Alignment
+         			   0x04,			   // Length
+         			   )
+         		   IRQNoFlags ()
+         			   {0}
+         	   })
+           }
 
-				Package () {0x0014FFFF, 0x00, LNKB, 0x00}, // Slot 1, Link B
-				Package () {0x0014FFFF, 0x01, LNKC, 0x00}, // Slot 1, Link C
-				Package () {0x0014FFFF, 0x02, LNKD, 0x00}, // Slot 1, Link D
-				Package () {0x0014FFFF, 0x03, LNKA, 0x00}, // Slot 1, Link A
-                
-				Package () {0x0001FFFF, 0x00, LNKA, 0x00}, // VGA Link A
-				Package () {0x0001FFFF, 0x01, LNKB, 0x00}, // VGA Link B
-				Package () {0x0001FFFF, 0x02, LNKC, 0x00}, // VGA Link C
-				Package () {0x0001FFFF, 0x03, LNKD, 0x00} // VGA Link D
+		   /* Legacy RTC Description */
+           Device (RTC)
+           {
+         	   Name (_HID, EisaId ("PNP0B00"))
+         	   Name (_CRS, ResourceTemplate ()
+         	   {
+         		   IO (Decode16,
+         			   0x0070,  		   // Range Minimum
+         			   0x0070,  		   // Range Maximum
+         			   0x04,			   // Alignment
+         			   0x04,			   // Length
+         			   )
+         		   IRQNoFlags ()
+         			   {8}
+         	   })
+           }
 
-            		})
+		   /* Legacy Speaker Description */
+           Device (SPKR)
+           {
+         	   Name (_HID, EisaId ("PNP0800"))
+         	   Name (_CRS, ResourceTemplate ()
+         	   {
+         		   IO (Decode16,
+         			   0x0061,  		   // Range Minimum
+         			   0x0061,  		   // Range Maximum
+         			   0x01,			   // Alignment
+         			   0x01,			   // Length
+         			   )
+         	   })
+           }
 
-
-		} // End of PCI0
-
+		   /* Legacy Math Co-Processor Description */
+           Device (COPR)
+           {
+         	   Name (_HID, EisaId ("PNP0C04"))
+         	   Name (_CRS, ResourceTemplate ()
+         	   {
+         		   IO (Decode16,
+         			   0x00F0,  		   // Range Minimum
+         			   0x00F0,  		   // Range Maximum
+         			   0x01,			   // Alignment
+         			   0x10,			   // Length
+         			   )
+         		   IRQNoFlags ()
+         			   {13}
+         	   })
+           }
+		   
+		   /* General Legacy IO Reservations                   */
+		   /* Covering items that are not explicitly reserved  */
+		   /* from coreboot.                                   */
+           Device (SYSR)
+           {
+               Name (_HID, EisaId ("PNP0C02"))
+               Name (_UID, 0x01)
+               Name (_CRS, ResourceTemplate ()
+               {
+            	   IO (Decode16,
+            		   0x0010,  		   // Range Minimum
+            		   0x0010,  		   // Range Maximum
+            		   0x01,			   // Alignment
+            		   0x10,			   // Length
+            		   )
+            	   IO (Decode16,
+            		   0x0022,  		   // Range Minimum
+            		   0x0022,  		   // Range Maximum
+            		   0x01,			   // Alignment
+            		   0x1E,			   // Length
+            		   )
+            	   IO (Decode16,
+            		   0x0044,  		   // Range Minimum
+            		   0x0044,  		   // Range Maximum
+            		   0x01,			   // Alignment
+            		   0x1C,			   // Length
+            		   )
+            	   IO (Decode16,
+            		   0x0062,  		   // Range Minimum
+            		   0x0062,  		   // Range Maximum
+            		   0x01,			   // Alignment
+            		   0x02,			   // Length
+            		   )
+            	   IO (Decode16,
+            		   0x0065,  		   // Range Minimum
+            		   0x0065,  		   // Range Maximum
+            		   0x01,			   // Alignment
+            		   0x0B,			   // Length
+            		   )
+            	   IO (Decode16,
+            		   0x0074,  		   // Range Minimum
+            		   0x0074,  		   // Range Maximum
+            		   0x01,			   // Alignment
+            		   0x0C,			   // Length
+            		   )
+            	   IO (Decode16,
+            		   0x0091,  		   // Range Minimum
+            		   0x0091,  		   // Range Maximum
+            		   0x01,			   // Alignment
+            		   0x03,			   // Length
+            		   )
+            	   IO (Decode16,
+            		   0x00A2,  		   // Range Minimum
+            		   0x00A2,  		   // Range Maximum
+            		   0x01,			   // Alignment
+            		   0x1E,			   // Length
+            		   )
+            	   IO (Decode16,
+            		   0x00E0,  		   // Range Minimum
+            		   0x00E0,  		   // Range Maximum
+            		   0x01,			   // Alignment
+            		   0x10,			   // Length
+            		   )
+            	   IO (Decode16,
+            		   0x04D0,  		   // Range Minimum
+            		   0x04D0,  		   // Range Maximum
+            		   0x01,			   // Alignment
+            		   0x02,			   // Length
+            		   )
+            	   IO (Decode16,
+            		   0x0294,  		   // Range Minimum
+            		   0x0294,  		   // Range Maximum
+            		   0x01,			   // Alignment
+            		   0x04,			   // Length
+            		   )
+               })
+           }
+		   
+		   Include("irq_links.asl")
+		   Include("pci_init.asl")
+		  
+	   } //End of PCI0
+	   
 	} // End of _SB
-
+		
 } // End of Definition Block
 
Index: via/epia-n/pci_init.asl
===================================================================
--- via/epia-n/pci_init.asl	(revision 0)
+++ via/epia-n/pci_init.asl	(revision 0)
@@ -0,0 +1,30 @@
+/*
+ * Minimalist ACPI DSDT table for EPIA-N / NL
+ * Basic description of PCI Interrupt Assignments.
+ * This is expected to be included into _SB.PCI0 namespace
+ * (C) Copyright 2009 Jon Harrison <jon.harrison@blueyonder.co.uk>
+ * 
+ */
+
+/* This file provides a PCI Bus Initialisation Method that sets 
+ * some flags for use in the interrupt link assignment
+ */
+ 
+Method (\_SB.PCI0._INI, 0, NotSerialized)
+{
+
+	/* Checking for ATA Interface Enabled */
+	Store (0x00, ATFL)
+	If (LEqual (EIDE, 0x01))
+	{
+    	Store (0x02, ATFL)
+	}
+	Else
+	{
+    	If (LNotEqual (\_SB.PCI0.PATA.VID, 0x1106))
+    	{
+        	Store (0x01, ATFL)
+    	}
+	}
+
+}
Index: via/epia-n/mainboard.c
===================================================================
--- via/epia-n/mainboard.c	(revision 1)
+++ via/epia-n/mainboard.c	(working copy)
@@ -20,8 +20,25 @@
  */
 
 #include <device/device.h>
+#include <device/pci.h>
+#include <device/pci_ids.h>
+#include <boot/tables.h>
 #include "chip.h"
+#include "../../../southbridge/via/vt8237r/vt8237r.h"
 
+int add_mainboard_resources(struct lb_memory *mem)
+{
+#if CONFIG_IOAPIC == 1
+	lb_add_memory_range(mem, LB_MEM_RESERVED,
+		VT8237R_APIC_BASE, 0x1000);
+	lb_add_memory_range(mem, LB_MEM_RESERVED,
+		0xFEE00000ULL, 0x1000);
+	lb_add_memory_range(mem, LB_MEM_RESERVED,
+		0xFFFF0000ULL, 0x10000);
+#endif
+	return 0;
+}
+
 struct chip_operations mainboard_ops = {
 	CHIP_NAME("VIA EPIA-N Mainboard")
 };
Index: via/epia-n/sb_physical.asl
===================================================================
--- via/epia-n/sb_physical.asl	(revision 0)
+++ via/epia-n/sb_physical.asl	(revision 0)
@@ -0,0 +1,548 @@
+/*
+ * Minimalist ACPI DSDT table for EPIA-N / NL
+ * Basic description of some hardware resources to allow 
+ * interrupt assignments to be done. This is expected to be included
+ * into _SB.PCI0 namespace
+ * (C) Copyright 2009 Jon Harrison <jon.harrison@blueyonder.co.uk>
+ * 
+ */
+ 
+
+/* Basic description of the VT8237R LPC Interface
+ * PCI Configuration Space
+ */
+ 
+Device (VT8R)
+{
+    Name (_ADR, 0x00110000)
+    OperationRegion (USBC, PCI_Config, 0x50, 0x02)
+    Scope (\)
+    {
+    	Field (\_SB.PCI0.VT8R.USBC, ByteAcc, NoLock, Preserve)
+    	{
+    		IDEB,	8
+    	}
+    }
+
+    OperationRegion (VTSB, PCI_Config, 0x00, 0xE8)
+    Scope (\)
+    {
+    	Field (\_SB.PCI0.VT8R.VTSB, ByteAcc, NoLock, Preserve)
+    	{
+    				Offset (0x02), 
+    		DEID,	16, 
+    				Offset (0x2C), 
+    		ID2C,	8, 
+    		ID2D,	8, 
+    		ID2E,	8, 
+    		ID2F,	8, 
+    				Offset (0x44), 
+    		PIRE,	4, 
+    		PIRF,	4, 
+    		PIRG,	4, 
+    		PIRH,	4, 
+    		POLE,	1, 
+    		POLF,	1, 
+    		POLG,	1, 
+    		POLH,	1, 
+    		ENR8,	1, 
+    				Offset (0x50), 
+    		ESB4,	1, 
+    		ESB3,	1, 
+    		ESB2,	1, 
+    		EIDE,	1, 
+    		EUSB,	1, 
+    		ESB1,	1, 
+    		EAMC,	2, 
+    		EKBC,	1, 
+    		KBCC,	1, 
+    		EPS2,	1, 
+    		ERTC,	1, 
+    		ELAN,	1, 
+    			,	2, 
+    		USBD,	1, 
+    		SIRQ,	8, 
+    				Offset (0x55), 
+    		PIRA,	8, 
+    		PIBC,	8, 
+    		PIRD,	8, 
+    				Offset (0x75), 
+    		BSAT,	1, 
+    				Offset (0x94), 
+    		PWC1,	2, 
+    		GPO1,	1, 
+    		GPO2,	1, 
+    		GPO3,	1, 
+    		PLLD,	1
+    	}
+    }
+}
+
+/* Basic Description of Serial ATA Interface */
+Device (SATA)
+{
+    Name (_ADR, 0x000F0000)
+    Method (_STA, 0, NotSerialized)
+    {
+        If (LNotEqual (\_SB.PCI0.SATA.VID, 0x1106))
+        {
+            Return (0x00)
+        }
+        Else
+        {
+            If (LEqual (\_SB.PCI0.SATA.CMDR, 0x00))
+            {
+                Return (0x0D)
+            }
+            Else
+            {
+                Return (0x0F)
+            }
+        }
+    }
+
+    OperationRegion (SAPR, PCI_Config, 0x00, 0xC2)
+    Field (SAPR, ByteAcc, NoLock, Preserve)
+    {
+        VID,    16, 
+                Offset (0x04), 
+        CMDR,   3, 
+                Offset (0x3C), 
+        IDEI,   8, 
+                Offset (0x49), 
+            ,   6, 
+        EPHY,   1
+    }
+}
+
+/* Basic Description of Parallel ATA Interface */
+/* An some initialisation of the interface     */
+Device (PATA)
+{
+    Name (_ADR, 0x000F0001)
+    Name (REGF, 0x01)
+    Method (_STA, 0, NotSerialized)
+    {
+        If (LNotEqual (\_SB.PCI0.PATA.VID, 0x1106))
+        {
+            Return (0x00)
+        }
+        Else
+        {
+            PMEX ()
+			/* Check if the Interface is Enabled */
+            If (LEqual (\_SB.PCI0.PATA.CMDR, 0x00))
+            {
+                Return (0x0D)
+            }
+            Else
+            {
+                Return (0x0F)
+            }
+        }
+    }
+	
+	/* ACPI Spec says to check that regions are accessible */
+	/* before trying to access them                        */
+    Method (_REG, 2, NotSerialized)
+    {
+		/* Arg0 = Operating Region (0x02 == PCI_Config) */
+        If (LEqual (Arg0, 0x02))
+        {
+			/* Arg1 = Handler Connection Mode (0x01 == Connect) */
+            Store (Arg1, REGF)
+        }
+    }
+	
+	Include("pata_methods.asl")
+		
+	
+    OperationRegion (PAPR, PCI_Config, 0x00, 0xC2)
+    Field (PAPR, ByteAcc, NoLock, Preserve)
+    {
+        VID,    16, 
+                Offset (0x04), 
+        CMDR,   3, 
+                Offset (0x09), 
+        ENAT,   4, 
+                Offset (0x3C), 
+        IDEI,   8, 
+                Offset (0x40), 
+        ESCH,   1, 
+        EPCH,   1, 
+                Offset (0x48), 
+        SSPT,   8, 
+        SMPT,   8, 
+        PSPT,   8, 
+        PMPT,   8, 
+                Offset (0x50), 
+        SSUT,   4, 
+        SSCT,   1, 
+        SSUE,   3, 
+        SMUT,   4, 
+        SMCT,   1, 
+        SMUE,   3, 
+        PSUT,   4, 
+        PSCT,   1, 
+        PSUE,   3, 
+        PMUT,   4, 
+        PMCT,   1, 
+        PMUE,   3
+    }
+	
+	
+    Device (CHN0)
+    {
+        Name (_ADR, 0x00)
+        Method (_STA, 0, NotSerialized)
+        {
+            If (LNotEqual (\_SB.PCI0.PATA.EPCH, 0x01))
+            {
+                Return (0x00)
+            }
+            Else
+            {
+                Return (0x0F)
+            }
+        }
+
+        Device (DRV0)
+        {
+            Name (_ADR, 0x00)
+            Method (_GTF, 0, NotSerialized)
+            {
+                Return (GTF (0x00, PMUE, PMUT, PMPT))
+            }
+        }
+
+        Device (DRV1)
+        {
+            Name (_ADR, 0x01)
+            Method (_GTF, 0, NotSerialized)
+            {
+                Return (GTF (0x01, PSUE, PSUT, PSPT))
+            }
+        }
+    }
+
+    Device (CHN1)
+    {
+        Name (_ADR, 0x01)
+        Method (_STA, 0, NotSerialized)
+        {
+            If (LNotEqual (ATFL, 0x02))
+            {
+                If (LEqual (\_SB.PCI0.SATA.EPHY, 0x01))
+                {
+                    Return (0x00)
+                }
+                Else
+                {
+                    If (LNotEqual (\_SB.PCI0.PATA.ESCH, 0x01))
+                    {
+                        Return (0x00)
+                    }
+                    Else
+                    {
+                        Return (0x0F)
+                    }
+                }
+            }
+			Else
+			{
+               If (LEqual (ATFL, 0x02))
+               {
+                   If (LNotEqual (\_SB.PCI0.PATA.ESCH, 0x01))
+                   {
+                	   Return (0x00)
+                   }
+                   Else
+                   {
+                	   Return (0x0F)
+                   }
+               }
+			   Else
+			   {
+			   		Return(0x00)
+			   }
+			}
+        }
+
+        Device (DRV0)
+        {
+            Name (_ADR, 0x00)
+            Method (_GTF, 0, NotSerialized)
+            {
+                Return (GTF (0x02, SMUE, SMUT, SMPT))
+            }
+        }
+
+        Device (DRV1)
+        {
+            Name (_ADR, 0x01)
+            Method (_GTF, 0, NotSerialized)
+            {
+                Return (GTF (0x03, SSUE, SSUT, SSPT))
+            }
+        }
+    }	
+} // End of PATA Device
+
+
+/* Implement Basic USB Presence detect and */
+/* Power Management Event mask             */
+Device (USB0)
+{
+    Name (_ADR, 0x00100000)
+    Name (_PRW, Package (0x02)
+    {
+        0x0E, 
+        0x03
+    })
+
+    OperationRegion (U2F0, PCI_Config, 0x00, 0xC2)
+    Field (U2F0, ByteAcc, NoLock, Preserve)
+    {
+        VID,    16, 
+                Offset (0x04), 
+        CMDR,   3, 
+                Offset (0x3C), 
+        U0IR,   4, 
+                Offset (0x84), 
+        ECDX,   2
+    }
+
+    Method (_STA, 0, NotSerialized)
+    {
+        If (LNotEqual (\_SB.PCI0.USB0.VID, 0x1106))
+        {
+            Return (0x00)
+        }
+        Else
+        {
+            If (LEqual (\_SB.PCI0.USB0.CMDR, 0x00))
+            {
+                Return (0x0D)
+            }
+            Else
+            {
+                Return (0x0F)
+            }
+        }
+    }
+}
+
+Device (USB1)
+{
+    Name (_ADR, 0x00100001)
+    Name (_PRW, Package (0x02)
+    {
+        0x0E, 
+        0x03
+    })
+
+    OperationRegion (U2F1, PCI_Config, 0x00, 0xC2)
+    Field (U2F1, ByteAcc, NoLock, Preserve)
+    {
+        VID,    16, 
+                Offset (0x04), 
+        CMDR,   3, 
+                Offset (0x3C), 
+        U1IR,   4, 
+                Offset (0x84), 
+        ECDX,   2
+    }
+
+    Method (_STA, 0, NotSerialized)
+    {
+        If (LNotEqual (\_SB.PCI0.USB1.VID, 0x1106))
+        {
+            Return (0x00)
+        }
+        Else
+        {
+            If (LEqual (\_SB.PCI0.USB1.CMDR, 0x00))
+            {
+                Return (0x0D)
+            }
+            Else
+            {
+                Return (0x0F)
+            }
+        }
+    }
+}
+
+Device (USB2)
+{
+    Name (_ADR, 0x00100002)
+    Name (_PRW, Package (0x02)
+    {
+        0x0E, 
+        0x03
+    })
+
+    OperationRegion (U2F2, PCI_Config, 0x00, 0xC2)
+    Field (U2F2, ByteAcc, NoLock, Preserve)
+    {
+        VID,    16, 
+                Offset (0x04), 
+        CMDR,   3, 
+                Offset (0x3C), 
+        U2IR,   4, 
+                Offset (0x84), 
+        ECDX,   2
+    }
+
+    Method (_STA, 0, NotSerialized)
+    {
+        If (LNotEqual (\_SB.PCI0.USB2.VID, 0x1106))
+        {
+            Return (0x00)
+        }
+        Else
+        {
+            If (LEqual (\_SB.PCI0.USB2.CMDR, 0x00))
+            {
+                Return (0x0D)
+            }
+            Else
+            {
+                Return (0x0F)
+            }
+        }
+    }
+}
+
+Device (USB3)
+{
+    Name (_ADR, 0x00100003)
+    Name (_PRW, Package (0x02)
+    {
+        0x0E, 
+        0x03
+    })
+
+    OperationRegion (U2F3, PCI_Config, 0x00, 0xC2)
+    Field (U2F3, ByteAcc, NoLock, Preserve)
+    {
+        VID,    16, 
+                Offset (0x04), 
+        CMDR,   3, 
+                Offset (0x3C), 
+        U3IR,   4, 
+                Offset (0x84), 
+        ECDX,   2
+    }
+
+    Method (_STA, 0, NotSerialized)
+    {
+        If (LNotEqual (\_SB.PCI0.USB3.VID, 0x1106))
+        {
+            Return (0x00)
+        }
+        Else
+        {
+            If (LEqual (\_SB.PCI0.USB3.CMDR, 0x00))
+            {
+                Return (0x0D)
+            }
+            Else
+            {
+                Return (0x0F)
+            }
+        }
+    }
+}
+
+Device (USB4)
+{
+    Name (_ADR, 0x00100004)
+    Name (_PRW, Package (0x02)
+    {
+        0x0E, 
+        0x03
+    })
+
+    OperationRegion (U2F4, PCI_Config, 0x00, 0xC2)
+    Field (U2F4, ByteAcc, NoLock, Preserve)
+    {
+        VID,    16, 
+                Offset (0x04), 
+        CMDR,   3, 
+                Offset (0x3C), 
+        U4IR,   4, 
+                Offset (0x84), 
+        ECDX,   2
+    }
+
+    Method (_STA, 0, NotSerialized)
+    {
+        If (LNotEqual (\_SB.PCI0.USB4.VID, 0x1106))
+        {
+            Return (0x00)
+        }
+        Else
+        {
+            If (LEqual (\_SB.PCI0.USB4.CMDR, 0x00))
+            {
+                Return (0x0D)
+            }
+            Else
+            {
+                Return (0x0F)
+            }
+        }
+    }
+}
+
+/* Basic Definition of Ethernet Interface */
+Device (NIC0)
+{
+    Name (_ADR, 0x00120000)
+    Name (_PRW, Package (0x02)
+    {
+        0x03, 
+        0x05
+    })
+	
+    OperationRegion (NIC0, PCI_Config, 0x00, 0xC2)
+    Field (NIC0, ByteAcc, NoLock, Preserve)
+    {
+        VID,    16, 
+                Offset (0x04), 
+        CMDR,   3, 
+                Offset (0x3C), 
+        NIIR,   4, 
+    }
+
+    Method (_STA, 0, NotSerialized)
+    {
+        If (LNotEqual (\_SB.PCI0.NIC0.VID, 0x1106))
+        {
+            Return (0x00)
+        }
+        Else
+        {
+            If (LEqual (\_SB.PCI0.NIC0.CMDR, 0x00))
+            {
+                Return (0x0D)
+            }
+            Else
+            {
+                Return (0x0F)
+            }
+        }
+    }
+}
+
+/* Very Basic Definition of Sound Controller */
+Device (AC97)
+{
+    Name (_ADR, 0x00110005)
+    Name (_PRW, Package (0x02)
+    {
+        0x0D, 
+        0x05
+    })
+}
