aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/acpi-dsdt.dsl45
-rw-r--r--src/acpi-dsdt.hex374
-rw-r--r--src/acpi.c58
-rw-r--r--src/acpi.h5
-rw-r--r--src/config.h21
-rw-r--r--src/coreboot.c8
-rw-r--r--src/resume.c43
7 files changed, 340 insertions, 214 deletions
diff --git a/src/acpi-dsdt.dsl b/src/acpi-dsdt.dsl
index 19ac2f9c..5fc36364 100644
--- a/src/acpi-dsdt.dsl
+++ b/src/acpi-dsdt.dsl
@@ -133,6 +133,21 @@ DefinitionBlock (
}
Scope(\_SB.PCI0) {
+ Device (VGA) {
+ Name (_ADR, 0x00020000)
+ Method (_S1D, 0, NotSerialized)
+ {
+ Return (0x00)
+ }
+ Method (_S2D, 0, NotSerialized)
+ {
+ Return (0x00)
+ }
+ Method (_S3D, 0, NotSerialized)
+ {
+ Return (0x00)
+ }
+ }
/* PIIX3 ISA bridge */
Device (ISA) {
@@ -531,11 +546,29 @@ DefinitionBlock (
}
}
- /* S5 = power off state */
- Name (_S5, Package (4) {
- 0x00, // PM1a_CNT.SLP_TYP
- 0x00, // PM2a_CNT.SLP_TYP
- 0x00, // reserved
- 0x00, // reserved
+ /*
+ * S3 (suspend-to-ram), S4 (suspend-to-disk) and S5 (power-off) type codes:
+ * must match piix4 emulation.
+ */
+ Name (\_S3, Package (0x04)
+ {
+ 0x01, /* PM1a_CNT.SLP_TYP */
+ 0x01, /* PM1b_CNT.SLP_TYP */
+ Zero, /* reserved */
+ Zero /* reserved */
+ })
+ Name (\_S4, Package (0x04)
+ {
+ Zero, /* PM1a_CNT.SLP_TYP */
+ Zero, /* PM1b_CNT.SLP_TYP */
+ Zero, /* reserved */
+ Zero /* reserved */
+ })
+ Name (\_S5, Package (0x04)
+ {
+ Zero, /* PM1a_CNT.SLP_TYP */
+ Zero, /* PM1b_CNT.SLP_TYP */
+ Zero, /* reserved */
+ Zero /* reserved */
})
}
diff --git a/src/acpi-dsdt.hex b/src/acpi-dsdt.hex
index 6bc6268f..3371d17e 100644
--- a/src/acpi-dsdt.hex
+++ b/src/acpi-dsdt.hex
@@ -1,22 +1,22 @@
/*
*
* Intel ACPI Component Architecture
- * ASL Optimizing Compiler version 20060912 [Nov 25 2006]
+ * ASL Optimizing Compiler version 20061109 [Feb 21 2008]
* Copyright (C) 2000 - 2006 Intel Corporation
* Supports ACPI Specification Revision 3.0a
*
- * Compilation of "acpi-dsdt.dsl" - Sun Sep 14 10:27:40 2008
+ * Compilation of "acpi-dsdt.dsl" - Sat Dec 13 23:18:12 2008
*
* C source code output
*
*/
unsigned char AmlCode[] =
{
- 0x44,0x53,0x44,0x54,0xC9,0x07,0x00,0x00, /* 00000000 "DSDT...." */
- 0x01,0x0E,0x42,0x58,0x50,0x43,0x00,0x00, /* 00000008 "..BXPC.." */
+ 0x44,0x53,0x44,0x54,0x0D,0x08,0x00,0x00, /* 00000000 "DSDT...." */
+ 0x01,0xA1,0x42,0x58,0x50,0x43,0x00,0x00, /* 00000008 "..BXPC.." */
0x42,0x58,0x44,0x53,0x44,0x54,0x00,0x00, /* 00000010 "BXDSDT.." */
0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */
- 0x12,0x09,0x06,0x20,0x10,0x1C,0x5C,0x00, /* 00000020 "... ..\." */
+ 0x09,0x11,0x06,0x20,0x10,0x1C,0x5C,0x00, /* 00000020 "... ..\." */
0x5B,0x80,0x44,0x42,0x47,0x5F,0x01,0x0B, /* 00000028 "[.DBG_.." */
0x44,0xB0,0x0A,0x04,0x5B,0x81,0x0B,0x44, /* 00000030 "D...[..D" */
0x42,0x47,0x5F,0x03,0x44,0x42,0x47,0x4C, /* 00000038 "BG_.DBGL" */
@@ -83,183 +83,191 @@ unsigned char AmlCode[] =
0x17,0x00,0x00,0x0C,0x01,0x00,0x00,0x00, /* 00000220 "........" */
0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0xBF, /* 00000228 "........" */
0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0xC0, /* 00000230 "........" */
- 0x1E,0x79,0x00,0x10,0x41,0x29,0x2E,0x5F, /* 00000238 ".y..A)._" */
+ 0x1E,0x79,0x00,0x10,0x4D,0x2B,0x2E,0x5F, /* 00000238 ".y..M+._" */
0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x5B, /* 00000240 "SB_PCI0[" */
- 0x82,0x42,0x23,0x49,0x53,0x41,0x5F,0x08, /* 00000248 ".B#ISA_." */
- 0x5F,0x41,0x44,0x52,0x0C,0x00,0x00,0x01, /* 00000250 "_ADR...." */
- 0x00,0x5B,0x80,0x50,0x34,0x30,0x43,0x02, /* 00000258 ".[.P40C." */
- 0x0A,0x60,0x0A,0x04,0x5B,0x82,0x2D,0x52, /* 00000260 ".`..[.-R" */
- 0x54,0x43,0x5F,0x08,0x5F,0x48,0x49,0x44, /* 00000268 "TC_._HID" */
- 0x0C,0x41,0xD0,0x0B,0x00,0x08,0x5F,0x43, /* 00000270 ".A...._C" */
- 0x52,0x53,0x11,0x18,0x0A,0x15,0x47,0x01, /* 00000278 "RS....G." */
- 0x70,0x00,0x70,0x00,0x10,0x02,0x22,0x00, /* 00000280 "p.p..."." */
- 0x01,0x47,0x01,0x72,0x00,0x72,0x00,0x02, /* 00000288 ".G.r.r.." */
- 0x06,0x79,0x00,0x5B,0x82,0x44,0x04,0x4B, /* 00000290 ".y.[.D.K" */
- 0x42,0x44,0x5F,0x08,0x5F,0x48,0x49,0x44, /* 00000298 "BD_._HID" */
- 0x0C,0x41,0xD0,0x03,0x03,0x14,0x09,0x5F, /* 000002A0 ".A....._" */
- 0x53,0x54,0x41,0x00,0xA4,0x0A,0x0F,0x14, /* 000002A8 "STA....." */
- 0x29,0x5F,0x43,0x52,0x53,0x00,0x08,0x54, /* 000002B0 ")_CRS..T" */
- 0x4D,0x50,0x5F,0x11,0x18,0x0A,0x15,0x47, /* 000002B8 "MP_....G" */
- 0x01,0x60,0x00,0x60,0x00,0x01,0x01,0x47, /* 000002C0 ".`.`...G" */
- 0x01,0x64,0x00,0x64,0x00,0x01,0x01,0x22, /* 000002C8 ".d.d..."" */
- 0x02,0x00,0x79,0x00,0xA4,0x54,0x4D,0x50, /* 000002D0 "..y..TMP" */
- 0x5F,0x5B,0x82,0x33,0x4D,0x4F,0x55,0x5F, /* 000002D8 "_[.3MOU_" */
- 0x08,0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0, /* 000002E0 "._HID.A." */
- 0x0F,0x13,0x14,0x09,0x5F,0x53,0x54,0x41, /* 000002E8 "...._STA" */
- 0x00,0xA4,0x0A,0x0F,0x14,0x19,0x5F,0x43, /* 000002F0 "......_C" */
- 0x52,0x53,0x00,0x08,0x54,0x4D,0x50,0x5F, /* 000002F8 "RS..TMP_" */
- 0x11,0x08,0x0A,0x05,0x22,0x00,0x10,0x79, /* 00000300 "...."..y" */
- 0x00,0xA4,0x54,0x4D,0x50,0x5F,0x5B,0x82, /* 00000308 "..TMP_[." */
- 0x47,0x04,0x46,0x44,0x43,0x30,0x08,0x5F, /* 00000310 "G.FDC0._" */
- 0x48,0x49,0x44,0x0C,0x41,0xD0,0x07,0x00, /* 00000318 "HID.A..." */
- 0x14,0x09,0x5F,0x53,0x54,0x41,0x00,0xA4, /* 00000320 ".._STA.." */
- 0x0A,0x0F,0x14,0x2C,0x5F,0x43,0x52,0x53, /* 00000328 "...,_CRS" */
- 0x00,0x08,0x42,0x55,0x46,0x30,0x11,0x1B, /* 00000330 "..BUF0.." */
- 0x0A,0x18,0x47,0x01,0xF2,0x03,0xF2,0x03, /* 00000338 "..G....." */
- 0x00,0x04,0x47,0x01,0xF7,0x03,0xF7,0x03, /* 00000340 "..G....." */
- 0x00,0x01,0x22,0x40,0x00,0x2A,0x04,0x00, /* 00000348 ".."@.*.." */
- 0x79,0x00,0xA4,0x42,0x55,0x46,0x30,0x5B, /* 00000350 "y..BUF0[" */
- 0x82,0x4B,0x05,0x4C,0x50,0x54,0x5F,0x08, /* 00000358 ".K.LPT_." */
- 0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,0x04, /* 00000360 "_HID.A.." */
- 0x00,0x14,0x28,0x5F,0x53,0x54,0x41,0x00, /* 00000368 "..(_STA." */
- 0x70,0x5E,0x5E,0x5E,0x2E,0x50,0x58,0x31, /* 00000370 "p^^^.PX1" */
- 0x33,0x44,0x52,0x53,0x41,0x60,0x7B,0x60, /* 00000378 "3DRSA`{`" */
- 0x0C,0x00,0x00,0x00,0x80,0x60,0xA0,0x06, /* 00000380 ".....`.." */
- 0x93,0x60,0x00,0xA4,0x00,0xA1,0x04,0xA4, /* 00000388 ".`......" */
- 0x0A,0x0F,0x14,0x21,0x5F,0x43,0x52,0x53, /* 00000390 "...!_CRS" */
- 0x00,0x08,0x42,0x55,0x46,0x30,0x11,0x10, /* 00000398 "..BUF0.." */
- 0x0A,0x0D,0x47,0x01,0x78,0x03,0x78,0x03, /* 000003A0 "..G.x.x." */
- 0x08,0x08,0x22,0x80,0x00,0x79,0x00,0xA4, /* 000003A8 ".."..y.." */
- 0x42,0x55,0x46,0x30,0x5B,0x82,0x41,0x06, /* 000003B0 "BUF0[.A." */
- 0x43,0x4F,0x4D,0x31,0x08,0x5F,0x48,0x49, /* 000003B8 "COM1._HI" */
- 0x44,0x0C,0x41,0xD0,0x05,0x01,0x08,0x5F, /* 000003C0 "D.A...._" */
- 0x55,0x49,0x44,0x01,0x14,0x28,0x5F,0x53, /* 000003C8 "UID..(_S" */
- 0x54,0x41,0x00,0x70,0x5E,0x5E,0x5E,0x2E, /* 000003D0 "TA.p^^^." */
- 0x50,0x58,0x31,0x33,0x44,0x52,0x53,0x43, /* 000003D8 "PX13DRSC" */
- 0x60,0x7B,0x60,0x0C,0x00,0x00,0x00,0x08, /* 000003E0 "`{`....." */
- 0x60,0xA0,0x06,0x93,0x60,0x00,0xA4,0x00, /* 000003E8 "`...`..." */
- 0xA1,0x04,0xA4,0x0A,0x0F,0x14,0x21,0x5F, /* 000003F0 "......!_" */
- 0x43,0x52,0x53,0x00,0x08,0x42,0x55,0x46, /* 000003F8 "CRS..BUF" */
- 0x30,0x11,0x10,0x0A,0x0D,0x47,0x01,0xF8, /* 00000400 "0....G.." */
- 0x03,0xF8,0x03,0x00,0x08,0x22,0x10,0x00, /* 00000408 ".....".." */
- 0x79,0x00,0xA4,0x42,0x55,0x46,0x30,0x5B, /* 00000410 "y..BUF0[" */
- 0x82,0x42,0x06,0x43,0x4F,0x4D,0x32,0x08, /* 00000418 ".B.COM2." */
- 0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,0x05, /* 00000420 "_HID.A.." */
- 0x01,0x08,0x5F,0x55,0x49,0x44,0x0A,0x02, /* 00000428 ".._UID.." */
- 0x14,0x28,0x5F,0x53,0x54,0x41,0x00,0x70, /* 00000430 ".(_STA.p" */
- 0x5E,0x5E,0x5E,0x2E,0x50,0x58,0x31,0x33, /* 00000438 "^^^.PX13" */
- 0x44,0x52,0x53,0x43,0x60,0x7B,0x60,0x0C, /* 00000440 "DRSC`{`." */
- 0x00,0x00,0x00,0x80,0x60,0xA0,0x06,0x93, /* 00000448 "....`..." */
- 0x60,0x00,0xA4,0x00,0xA1,0x04,0xA4,0x0A, /* 00000450 "`......." */
- 0x0F,0x14,0x21,0x5F,0x43,0x52,0x53,0x00, /* 00000458 "..!_CRS." */
- 0x08,0x42,0x55,0x46,0x30,0x11,0x10,0x0A, /* 00000460 ".BUF0..." */
- 0x0D,0x47,0x01,0xF8,0x02,0xF8,0x02,0x00, /* 00000468 ".G......" */
- 0x08,0x22,0x08,0x00,0x79,0x00,0xA4,0x42, /* 00000470 "."..y..B" */
- 0x55,0x46,0x30,0x5B,0x82,0x40,0x05,0x50, /* 00000478 "UF0[.@.P" */
- 0x58,0x31,0x33,0x08,0x5F,0x41,0x44,0x52, /* 00000480 "X13._ADR" */
- 0x0C,0x03,0x00,0x01,0x00,0x5B,0x80,0x50, /* 00000488 ".....[.P" */
- 0x31,0x33,0x43,0x02,0x0A,0x5C,0x0A,0x24, /* 00000490 "13C..\.$" */
- 0x5B,0x81,0x33,0x50,0x31,0x33,0x43,0x03, /* 00000498 "[.3P13C." */
- 0x44,0x52,0x53,0x41,0x20,0x44,0x52,0x53, /* 000004A0 "DRSA DRS" */
- 0x42,0x20,0x44,0x52,0x53,0x43,0x20,0x44, /* 000004A8 "B DRSC D" */
- 0x52,0x53,0x45,0x20,0x44,0x52,0x53,0x46, /* 000004B0 "RSE DRSF" */
- 0x20,0x44,0x52,0x53,0x47,0x20,0x44,0x52, /* 000004B8 " DRSG DR" */
- 0x53,0x48,0x20,0x44,0x52,0x53,0x49,0x20, /* 000004C0 "SH DRSI " */
- 0x44,0x52,0x53,0x4A,0x20,0x10,0x4F,0x2E, /* 000004C8 "DRSJ .O." */
- 0x5F,0x53,0x42,0x5F,0x5B,0x81,0x24,0x2F, /* 000004D0 "_SB_[.$/" */
- 0x03,0x50,0x43,0x49,0x30,0x49,0x53,0x41, /* 000004D8 ".PCI0ISA" */
- 0x5F,0x50,0x34,0x30,0x43,0x01,0x50,0x52, /* 000004E0 "_P40C.PR" */
- 0x51,0x30,0x08,0x50,0x52,0x51,0x31,0x08, /* 000004E8 "Q0.PRQ1." */
- 0x50,0x52,0x51,0x32,0x08,0x50,0x52,0x51, /* 000004F0 "PRQ2.PRQ" */
- 0x33,0x08,0x5B,0x82,0x4E,0x0A,0x4C,0x4E, /* 000004F8 "3.[.N.LN" */
- 0x4B,0x41,0x08,0x5F,0x48,0x49,0x44,0x0C, /* 00000500 "KA._HID." */
- 0x41,0xD0,0x0C,0x0F,0x08,0x5F,0x55,0x49, /* 00000508 "A...._UI" */
- 0x44,0x01,0x08,0x5F,0x50,0x52,0x53,0x11, /* 00000510 "D.._PRS." */
- 0x09,0x0A,0x06,0x23,0xF8,0x1E,0x18,0x79, /* 00000518 "...#...y" */
- 0x00,0x14,0x1A,0x5F,0x53,0x54,0x41,0x00, /* 00000520 "..._STA." */
- 0x70,0x0A,0x0B,0x60,0xA0,0x0D,0x7B,0x0A, /* 00000528 "p..`..{." */
- 0x80,0x50,0x52,0x51,0x30,0x61,0x70,0x0A, /* 00000530 ".PRQ0ap." */
- 0x09,0x60,0xA4,0x60,0x14,0x11,0x5F,0x44, /* 00000538 ".`.`.._D" */
- 0x49,0x53,0x00,0x7D,0x50,0x52,0x51,0x30, /* 00000540 "IS.}PRQ0" */
- 0x0A,0x80,0x50,0x52,0x51,0x30,0x14,0x3F, /* 00000548 "..PRQ0.?" */
- 0x5F,0x43,0x52,0x53,0x00,0x08,0x50,0x52, /* 00000550 "_CRS..PR" */
- 0x52,0x30,0x11,0x09,0x0A,0x06,0x23,0x02, /* 00000558 "R0....#." */
- 0x00,0x18,0x79,0x00,0x8B,0x50,0x52,0x52, /* 00000560 "..y..PRR" */
- 0x30,0x01,0x54,0x4D,0x50,0x5F,0x70,0x50, /* 00000568 "0.TMP_pP" */
- 0x52,0x51,0x30,0x60,0xA0,0x0C,0x95,0x60, /* 00000570 "RQ0`...`" */
- 0x0A,0x80,0x79,0x01,0x60,0x54,0x4D,0x50, /* 00000578 "..y.`TMP" */
- 0x5F,0xA1,0x07,0x70,0x00,0x54,0x4D,0x50, /* 00000580 "_..p.TMP" */
- 0x5F,0xA4,0x50,0x52,0x52,0x30,0x14,0x1B, /* 00000588 "_.PRR0.." */
- 0x5F,0x53,0x52,0x53,0x01,0x8B,0x68,0x01, /* 00000590 "_SRS..h." */
- 0x54,0x4D,0x50,0x5F,0x82,0x54,0x4D,0x50, /* 00000598 "TMP_.TMP" */
- 0x5F,0x60,0x76,0x60,0x70,0x60,0x50,0x52, /* 000005A0 "_`v`p`PR" */
- 0x51,0x30,0x5B,0x82,0x4F,0x0A,0x4C,0x4E, /* 000005A8 "Q0[.O.LN" */
- 0x4B,0x42,0x08,0x5F,0x48,0x49,0x44,0x0C, /* 000005B0 "KB._HID." */
- 0x41,0xD0,0x0C,0x0F,0x08,0x5F,0x55,0x49, /* 000005B8 "A...._UI" */
- 0x44,0x0A,0x02,0x08,0x5F,0x50,0x52,0x53, /* 000005C0 "D..._PRS" */
- 0x11,0x09,0x0A,0x06,0x23,0xF8,0x1E,0x18, /* 000005C8 "....#..." */
- 0x79,0x00,0x14,0x1A,0x5F,0x53,0x54,0x41, /* 000005D0 "y..._STA" */
- 0x00,0x70,0x0A,0x0B,0x60,0xA0,0x0D,0x7B, /* 000005D8 ".p..`..{" */
- 0x0A,0x80,0x50,0x52,0x51,0x31,0x61,0x70, /* 000005E0 "..PRQ1ap" */
- 0x0A,0x09,0x60,0xA4,0x60,0x14,0x11,0x5F, /* 000005E8 "..`.`.._" */
- 0x44,0x49,0x53,0x00,0x7D,0x50,0x52,0x51, /* 000005F0 "DIS.}PRQ" */
- 0x31,0x0A,0x80,0x50,0x52,0x51,0x31,0x14, /* 000005F8 "1..PRQ1." */
- 0x3F,0x5F,0x43,0x52,0x53,0x00,0x08,0x50, /* 00000600 "?_CRS..P" */
- 0x52,0x52,0x30,0x11,0x09,0x0A,0x06,0x23, /* 00000608 "RR0....#" */
- 0x02,0x00,0x18,0x79,0x00,0x8B,0x50,0x52, /* 00000610 "...y..PR" */
- 0x52,0x30,0x01,0x54,0x4D,0x50,0x5F,0x70, /* 00000618 "R0.TMP_p" */
- 0x50,0x52,0x51,0x31,0x60,0xA0,0x0C,0x95, /* 00000620 "PRQ1`..." */
- 0x60,0x0A,0x80,0x79,0x01,0x60,0x54,0x4D, /* 00000628 "`..y.`TM" */
- 0x50,0x5F,0xA1,0x07,0x70,0x00,0x54,0x4D, /* 00000630 "P_..p.TM" */
- 0x50,0x5F,0xA4,0x50,0x52,0x52,0x30,0x14, /* 00000638 "P_.PRR0." */
- 0x1B,0x5F,0x53,0x52,0x53,0x01,0x8B,0x68, /* 00000640 "._SRS..h" */
- 0x01,0x54,0x4D,0x50,0x5F,0x82,0x54,0x4D, /* 00000648 ".TMP_.TM" */
- 0x50,0x5F,0x60,0x76,0x60,0x70,0x60,0x50, /* 00000650 "P_`v`p`P" */
- 0x52,0x51,0x31,0x5B,0x82,0x4F,0x0A,0x4C, /* 00000658 "RQ1[.O.L" */
- 0x4E,0x4B,0x43,0x08,0x5F,0x48,0x49,0x44, /* 00000660 "NKC._HID" */
- 0x0C,0x41,0xD0,0x0C,0x0F,0x08,0x5F,0x55, /* 00000668 ".A...._U" */
- 0x49,0x44,0x0A,0x03,0x08,0x5F,0x50,0x52, /* 00000670 "ID..._PR" */
- 0x53,0x11,0x09,0x0A,0x06,0x23,0xF8,0x1E, /* 00000678 "S....#.." */
- 0x18,0x79,0x00,0x14,0x1A,0x5F,0x53,0x54, /* 00000680 ".y..._ST" */
- 0x41,0x00,0x70,0x0A,0x0B,0x60,0xA0,0x0D, /* 00000688 "A.p..`.." */
- 0x7B,0x0A,0x80,0x50,0x52,0x51,0x32,0x61, /* 00000690 "{..PRQ2a" */
- 0x70,0x0A,0x09,0x60,0xA4,0x60,0x14,0x11, /* 00000698 "p..`.`.." */
- 0x5F,0x44,0x49,0x53,0x00,0x7D,0x50,0x52, /* 000006A0 "_DIS.}PR" */
- 0x51,0x32,0x0A,0x80,0x50,0x52,0x51,0x32, /* 000006A8 "Q2..PRQ2" */
- 0x14,0x3F,0x5F,0x43,0x52,0x53,0x00,0x08, /* 000006B0 ".?_CRS.." */
- 0x50,0x52,0x52,0x30,0x11,0x09,0x0A,0x06, /* 000006B8 "PRR0...." */
- 0x23,0x02,0x00,0x18,0x79,0x00,0x8B,0x50, /* 000006C0 "#...y..P" */
- 0x52,0x52,0x30,0x01,0x54,0x4D,0x50,0x5F, /* 000006C8 "RR0.TMP_" */
- 0x70,0x50,0x52,0x51,0x32,0x60,0xA0,0x0C, /* 000006D0 "pPRQ2`.." */
- 0x95,0x60,0x0A,0x80,0x79,0x01,0x60,0x54, /* 000006D8 ".`..y.`T" */
- 0x4D,0x50,0x5F,0xA1,0x07,0x70,0x00,0x54, /* 000006E0 "MP_..p.T" */
- 0x4D,0x50,0x5F,0xA4,0x50,0x52,0x52,0x30, /* 000006E8 "MP_.PRR0" */
- 0x14,0x1B,0x5F,0x53,0x52,0x53,0x01,0x8B, /* 000006F0 ".._SRS.." */
- 0x68,0x01,0x54,0x4D,0x50,0x5F,0x82,0x54, /* 000006F8 "h.TMP_.T" */
- 0x4D,0x50,0x5F,0x60,0x76,0x60,0x70,0x60, /* 00000700 "MP_`v`p`" */
- 0x50,0x52,0x51,0x32,0x5B,0x82,0x4F,0x0A, /* 00000708 "PRQ2[.O." */
- 0x4C,0x4E,0x4B,0x44,0x08,0x5F,0x48,0x49, /* 00000710 "LNKD._HI" */
- 0x44,0x0C,0x41,0xD0,0x0C,0x0F,0x08,0x5F, /* 00000718 "D.A...._" */
- 0x55,0x49,0x44,0x0A,0x04,0x08,0x5F,0x50, /* 00000720 "UID..._P" */
- 0x52,0x53,0x11,0x09,0x0A,0x06,0x23,0xF8, /* 00000728 "RS....#." */
- 0x1E,0x18,0x79,0x00,0x14,0x1A,0x5F,0x53, /* 00000730 "..y..._S" */
- 0x54,0x41,0x00,0x70,0x0A,0x0B,0x60,0xA0, /* 00000738 "TA.p..`." */
- 0x0D,0x7B,0x0A,0x80,0x50,0x52,0x51,0x33, /* 00000740 ".{..PRQ3" */
- 0x61,0x70,0x0A,0x09,0x60,0xA4,0x60,0x14, /* 00000748 "ap..`.`." */
- 0x11,0x5F,0x44,0x49,0x53,0x00,0x7D,0x50, /* 00000750 "._DIS.}P" */
- 0x52,0x51,0x33,0x0A,0x80,0x50,0x52,0x51, /* 00000758 "RQ3..PRQ" */
- 0x33,0x14,0x3F,0x5F,0x43,0x52,0x53,0x00, /* 00000760 "3.?_CRS." */
- 0x08,0x50,0x52,0x52,0x30,0x11,0x09,0x0A, /* 00000768 ".PRR0..." */
- 0x06,0x23,0x02,0x00,0x18,0x79,0x00,0x8B, /* 00000770 ".#...y.." */
- 0x50,0x52,0x52,0x30,0x01,0x54,0x4D,0x50, /* 00000778 "PRR0.TMP" */
- 0x5F,0x70,0x50,0x52,0x51,0x33,0x60,0xA0, /* 00000780 "_pPRQ3`." */
- 0x0C,0x95,0x60,0x0A,0x80,0x79,0x01,0x60, /* 00000788 "..`..y.`" */
- 0x54,0x4D,0x50,0x5F,0xA1,0x07,0x70,0x00, /* 00000790 "TMP_..p." */
- 0x54,0x4D,0x50,0x5F,0xA4,0x50,0x52,0x52, /* 00000798 "TMP_.PRR" */
- 0x30,0x14,0x1B,0x5F,0x53,0x52,0x53,0x01, /* 000007A0 "0.._SRS." */
- 0x8B,0x68,0x01,0x54,0x4D,0x50,0x5F,0x82, /* 000007A8 ".h.TMP_." */
- 0x54,0x4D,0x50,0x5F,0x60,0x76,0x60,0x70, /* 000007B0 "TMP_`v`p" */
- 0x60,0x50,0x52,0x51,0x33,0x08,0x5F,0x53, /* 000007B8 "`PRQ3._S" */
- 0x35,0x5F,0x12,0x06,0x04,0x00,0x00,0x00, /* 000007C0 "5_......" */
- 0x00,
+ 0x82,0x2A,0x56,0x47,0x41,0x5F,0x08,0x5F, /* 00000248 ".*VGA_._" */
+ 0x41,0x44,0x52,0x0C,0x00,0x00,0x02,0x00, /* 00000250 "ADR....." */
+ 0x14,0x08,0x5F,0x53,0x31,0x44,0x00,0xA4, /* 00000258 ".._S1D.." */
+ 0x00,0x14,0x08,0x5F,0x53,0x32,0x44,0x00, /* 00000260 "..._S2D." */
+ 0xA4,0x00,0x14,0x08,0x5F,0x53,0x33,0x44, /* 00000268 "...._S3D" */
+ 0x00,0xA4,0x00,0x5B,0x82,0x42,0x23,0x49, /* 00000270 "...[.B#I" */
+ 0x53,0x41,0x5F,0x08,0x5F,0x41,0x44,0x52, /* 00000278 "SA_._ADR" */
+ 0x0C,0x00,0x00,0x01,0x00,0x5B,0x80,0x50, /* 00000280 ".....[.P" */
+ 0x34,0x30,0x43,0x02,0x0A,0x60,0x0A,0x04, /* 00000288 "40C..`.." */
+ 0x5B,0x82,0x2D,0x52,0x54,0x43,0x5F,0x08, /* 00000290 "[.-RTC_." */
+ 0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,0x0B, /* 00000298 "_HID.A.." */
+ 0x00,0x08,0x5F,0x43,0x52,0x53,0x11,0x18, /* 000002A0 ".._CRS.." */
+ 0x0A,0x15,0x47,0x01,0x70,0x00,0x70,0x00, /* 000002A8 "..G.p.p." */
+ 0x10,0x02,0x22,0x00,0x01,0x47,0x01,0x72, /* 000002B0 ".."..G.r" */
+ 0x00,0x72,0x00,0x02,0x06,0x79,0x00,0x5B, /* 000002B8 ".r...y.[" */
+ 0x82,0x44,0x04,0x4B,0x42,0x44,0x5F,0x08, /* 000002C0 ".D.KBD_." */
+ 0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,0x03, /* 000002C8 "_HID.A.." */
+ 0x03,0x14,0x09,0x5F,0x53,0x54,0x41,0x00, /* 000002D0 "..._STA." */
+ 0xA4,0x0A,0x0F,0x14,0x29,0x5F,0x43,0x52, /* 000002D8 "....)_CR" */
+ 0x53,0x00,0x08,0x54,0x4D,0x50,0x5F,0x11, /* 000002E0 "S..TMP_." */
+ 0x18,0x0A,0x15,0x47,0x01,0x60,0x00,0x60, /* 000002E8 "...G.`.`" */
+ 0x00,0x01,0x01,0x47,0x01,0x64,0x00,0x64, /* 000002F0 "...G.d.d" */
+ 0x00,0x01,0x01,0x22,0x02,0x00,0x79,0x00, /* 000002F8 "..."..y." */
+ 0xA4,0x54,0x4D,0x50,0x5F,0x5B,0x82,0x33, /* 00000300 ".TMP_[.3" */
+ 0x4D,0x4F,0x55,0x5F,0x08,0x5F,0x48,0x49, /* 00000308 "MOU_._HI" */
+ 0x44,0x0C,0x41,0xD0,0x0F,0x13,0x14,0x09, /* 00000310 "D.A....." */
+ 0x5F,0x53,0x54,0x41,0x00,0xA4,0x0A,0x0F, /* 00000318 "_STA...." */
+ 0x14,0x19,0x5F,0x43,0x52,0x53,0x00,0x08, /* 00000320 ".._CRS.." */
+ 0x54,0x4D,0x50,0x5F,0x11,0x08,0x0A,0x05, /* 00000328 "TMP_...." */
+ 0x22,0x00,0x10,0x79,0x00,0xA4,0x54,0x4D, /* 00000330 ""..y..TM" */
+ 0x50,0x5F,0x5B,0x82,0x47,0x04,0x46,0x44, /* 00000338 "P_[.G.FD" */
+ 0x43,0x30,0x08,0x5F,0x48,0x49,0x44,0x0C, /* 00000340 "C0._HID." */
+ 0x41,0xD0,0x07,0x00,0x14,0x09,0x5F,0x53, /* 00000348 "A....._S" */
+ 0x54,0x41,0x00,0xA4,0x0A,0x0F,0x14,0x2C, /* 00000350 "TA.....," */
+ 0x5F,0x43,0x52,0x53,0x00,0x08,0x42,0x55, /* 00000358 "_CRS..BU" */
+ 0x46,0x30,0x11,0x1B,0x0A,0x18,0x47,0x01, /* 00000360 "F0....G." */
+ 0xF2,0x03,0xF2,0x03,0x00,0x04,0x47,0x01, /* 00000368 "......G." */
+ 0xF7,0x03,0xF7,0x03,0x00,0x01,0x22,0x40, /* 00000370 "......"@" */
+ 0x00,0x2A,0x04,0x00,0x79,0x00,0xA4,0x42, /* 00000378 ".*..y..B" */
+ 0x55,0x46,0x30,0x5B,0x82,0x4B,0x05,0x4C, /* 00000380 "UF0[.K.L" */
+ 0x50,0x54,0x5F,0x08,0x5F,0x48,0x49,0x44, /* 00000388 "PT_._HID" */
+ 0x0C,0x41,0xD0,0x04,0x00,0x14,0x28,0x5F, /* 00000390 ".A....(_" */
+ 0x53,0x54,0x41,0x00,0x70,0x5E,0x5E,0x5E, /* 00000398 "STA.p^^^" */
+ 0x2E,0x50,0x58,0x31,0x33,0x44,0x52,0x53, /* 000003A0 ".PX13DRS" */
+ 0x41,0x60,0x7B,0x60,0x0C,0x00,0x00,0x00, /* 000003A8 "A`{`...." */
+ 0x80,0x60,0xA0,0x06,0x93,0x60,0x00,0xA4, /* 000003B0 ".`...`.." */
+ 0x00,0xA1,0x04,0xA4,0x0A,0x0F,0x14,0x21, /* 000003B8 ".......!" */
+ 0x5F,0x43,0x52,0x53,0x00,0x08,0x42,0x55, /* 000003C0 "_CRS..BU" */
+ 0x46,0x30,0x11,0x10,0x0A,0x0D,0x47,0x01, /* 000003C8 "F0....G." */
+ 0x78,0x03,0x78,0x03,0x08,0x08,0x22,0x80, /* 000003D0 "x.x..."." */
+ 0x00,0x79,0x00,0xA4,0x42,0x55,0x46,0x30, /* 000003D8 ".y..BUF0" */
+ 0x5B,0x82,0x41,0x06,0x43,0x4F,0x4D,0x31, /* 000003E0 "[.A.COM1" */
+ 0x08,0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0, /* 000003E8 "._HID.A." */
+ 0x05,0x01,0x08,0x5F,0x55,0x49,0x44,0x01, /* 000003F0 "..._UID." */
+ 0x14,0x28,0x5F,0x53,0x54,0x41,0x00,0x70, /* 000003F8 ".(_STA.p" */
+ 0x5E,0x5E,0x5E,0x2E,0x50,0x58,0x31,0x33, /* 00000400 "^^^.PX13" */
+ 0x44,0x52,0x53,0x43,0x60,0x7B,0x60,0x0C, /* 00000408 "DRSC`{`." */
+ 0x00,0x00,0x00,0x08,0x60,0xA0,0x06,0x93, /* 00000410 "....`..." */
+ 0x60,0x00,0xA4,0x00,0xA1,0x04,0xA4,0x0A, /* 00000418 "`......." */
+ 0x0F,0x14,0x21,0x5F,0x43,0x52,0x53,0x00, /* 00000420 "..!_CRS." */
+ 0x08,0x42,0x55,0x46,0x30,0x11,0x10,0x0A, /* 00000428 ".BUF0..." */
+ 0x0D,0x47,0x01,0xF8,0x03,0xF8,0x03,0x00, /* 00000430 ".G......" */
+ 0x08,0x22,0x10,0x00,0x79,0x00,0xA4,0x42, /* 00000438 "."..y..B" */
+ 0x55,0x46,0x30,0x5B,0x82,0x42,0x06,0x43, /* 00000440 "UF0[.B.C" */
+ 0x4F,0x4D,0x32,0x08,0x5F,0x48,0x49,0x44, /* 00000448 "OM2._HID" */
+ 0x0C,0x41,0xD0,0x05,0x01,0x08,0x5F,0x55, /* 00000450 ".A...._U" */
+ 0x49,0x44,0x0A,0x02,0x14,0x28,0x5F,0x53, /* 00000458 "ID...(_S" */
+ 0x54,0x41,0x00,0x70,0x5E,0x5E,0x5E,0x2E, /* 00000460 "TA.p^^^." */
+ 0x50,0x58,0x31,0x33,0x44,0x52,0x53,0x43, /* 00000468 "PX13DRSC" */
+ 0x60,0x7B,0x60,0x0C,0x00,0x00,0x00,0x80, /* 00000470 "`{`....." */
+ 0x60,0xA0,0x06,0x93,0x60,0x00,0xA4,0x00, /* 00000478 "`...`..." */
+ 0xA1,0x04,0xA4,0x0A,0x0F,0x14,0x21,0x5F, /* 00000480 "......!_" */
+ 0x43,0x52,0x53,0x00,0x08,0x42,0x55,0x46, /* 00000488 "CRS..BUF" */
+ 0x30,0x11,0x10,0x0A,0x0D,0x47,0x01,0xF8, /* 00000490 "0....G.." */
+ 0x02,0xF8,0x02,0x00,0x08,0x22,0x08,0x00, /* 00000498 ".....".." */
+ 0x79,0x00,0xA4,0x42,0x55,0x46,0x30,0x5B, /* 000004A0 "y..BUF0[" */
+ 0x82,0x40,0x05,0x50,0x58,0x31,0x33,0x08, /* 000004A8 ".@.PX13." */
+ 0x5F,0x41,0x44,0x52,0x0C,0x03,0x00,0x01, /* 000004B0 "_ADR...." */
+ 0x00,0x5B,0x80,0x50,0x31,0x33,0x43,0x02, /* 000004B8 ".[.P13C." */
+ 0x0A,0x5C,0x0A,0x24,0x5B,0x81,0x33,0x50, /* 000004C0 ".\.$[.3P" */
+ 0x31,0x33,0x43,0x03,0x44,0x52,0x53,0x41, /* 000004C8 "13C.DRSA" */
+ 0x20,0x44,0x52,0x53,0x42,0x20,0x44,0x52, /* 000004D0 " DRSB DR" */
+ 0x53,0x43,0x20,0x44,0x52,0x53,0x45,0x20, /* 000004D8 "SC DRSE " */
+ 0x44,0x52,0x53,0x46,0x20,0x44,0x52,0x53, /* 000004E0 "DRSF DRS" */
+ 0x47,0x20,0x44,0x52,0x53,0x48,0x20,0x44, /* 000004E8 "G DRSH D" */
+ 0x52,0x53,0x49,0x20,0x44,0x52,0x53,0x4A, /* 000004F0 "RSI DRSJ" */
+ 0x20,0x10,0x4F,0x2E,0x5F,0x53,0x42,0x5F, /* 000004F8 " .O._SB_" */
+ 0x5B,0x81,0x24,0x2F,0x03,0x50,0x43,0x49, /* 00000500 "[.$/.PCI" */
+ 0x30,0x49,0x53,0x41,0x5F,0x50,0x34,0x30, /* 00000508 "0ISA_P40" */
+ 0x43,0x01,0x50,0x52,0x51,0x30,0x08,0x50, /* 00000510 "C.PRQ0.P" */
+ 0x52,0x51,0x31,0x08,0x50,0x52,0x51,0x32, /* 00000518 "RQ1.PRQ2" */
+ 0x08,0x50,0x52,0x51,0x33,0x08,0x5B,0x82, /* 00000520 ".PRQ3.[." */
+ 0x4E,0x0A,0x4C,0x4E,0x4B,0x41,0x08,0x5F, /* 00000528 "N.LNKA._" */
+ 0x48,0x49,0x44,0x0C,0x41,0xD0,0x0C,0x0F, /* 00000530 "HID.A..." */
+ 0x08,0x5F,0x55,0x49,0x44,0x01,0x08,0x5F, /* 00000538 "._UID.._" */
+ 0x50,0x52,0x53,0x11,0x09,0x0A,0x06,0x23, /* 00000540 "PRS....#" */
+ 0xF8,0x1E,0x18,0x79,0x00,0x14,0x1A,0x5F, /* 00000548 "...y..._" */
+ 0x53,0x54,0x41,0x00,0x70,0x0A,0x0B,0x60, /* 00000550 "STA.p..`" */
+ 0xA0,0x0D,0x7B,0x0A,0x80,0x50,0x52,0x51, /* 00000558 "..{..PRQ" */
+ 0x30,0x61,0x70,0x0A,0x09,0x60,0xA4,0x60, /* 00000560 "0ap..`.`" */
+ 0x14,0x11,0x5F,0x44,0x49,0x53,0x00,0x7D, /* 00000568 ".._DIS.}" */
+ 0x50,0x52,0x51,0x30,0x0A,0x80,0x50,0x52, /* 00000570 "PRQ0..PR" */
+ 0x51,0x30,0x14,0x3F,0x5F,0x43,0x52,0x53, /* 00000578 "Q0.?_CRS" */
+ 0x00,0x08,0x50,0x52,0x52,0x30,0x11,0x09, /* 00000580 "..PRR0.." */
+ 0x0A,0x06,0x23,0x02,0x00,0x18,0x79,0x00, /* 00000588 "..#...y." */
+ 0x8B,0x50,0x52,0x52,0x30,0x01,0x54,0x4D, /* 00000590 ".PRR0.TM" */
+ 0x50,0x5F,0x70,0x50,0x52,0x51,0x30,0x60, /* 00000598 "P_pPRQ0`" */
+ 0xA0,0x0C,0x95,0x60,0x0A,0x80,0x79,0x01, /* 000005A0 "...`..y." */
+ 0x60,0x54,0x4D,0x50,0x5F,0xA1,0x07,0x70, /* 000005A8 "`TMP_..p" */
+ 0x00,0x54,0x4D,0x50,0x5F,0xA4,0x50,0x52, /* 000005B0 ".TMP_.PR" */
+ 0x52,0x30,0x14,0x1B,0x5F,0x53,0x52,0x53, /* 000005B8 "R0.._SRS" */
+ 0x01,0x8B,0x68,0x01,0x54,0x4D,0x50,0x5F, /* 000005C0 "..h.TMP_" */
+ 0x82,0x54,0x4D,0x50,0x5F,0x60,0x76,0x60, /* 000005C8 ".TMP_`v`" */
+ 0x70,0x60,0x50,0x52,0x51,0x30,0x5B,0x82, /* 000005D0 "p`PRQ0[." */
+ 0x4F,0x0A,0x4C,0x4E,0x4B,0x42,0x08,0x5F, /* 000005D8 "O.LNKB._" */
+ 0x48,0x49,0x44,0x0C,0x41,0xD0,0x0C,0x0F, /* 000005E0 "HID.A..." */
+ 0x08,0x5F,0x55,0x49,0x44,0x0A,0x02,0x08, /* 000005E8 "._UID..." */
+ 0x5F,0x50,0x52,0x53,0x11,0x09,0x0A,0x06, /* 000005F0 "_PRS...." */
+ 0x23,0xF8,0x1E,0x18,0x79,0x00,0x14,0x1A, /* 000005F8 "#...y..." */
+ 0x5F,0x53,0x54,0x41,0x00,0x70,0x0A,0x0B, /* 00000600 "_STA.p.." */
+ 0x60,0xA0,0x0D,0x7B,0x0A,0x80,0x50,0x52, /* 00000608 "`..{..PR" */
+ 0x51,0x31,0x61,0x70,0x0A,0x09,0x60,0xA4, /* 00000610 "Q1ap..`." */
+ 0x60,0x14,0x11,0x5F,0x44,0x49,0x53,0x00, /* 00000618 "`.._DIS." */
+ 0x7D,0x50,0x52,0x51,0x31,0x0A,0x80,0x50, /* 00000620 "}PRQ1..P" */
+ 0x52,0x51,0x31,0x14,0x3F,0x5F,0x43,0x52, /* 00000628 "RQ1.?_CR" */
+ 0x53,0x00,0x08,0x50,0x52,0x52,0x30,0x11, /* 00000630 "S..PRR0." */
+ 0x09,0x0A,0x06,0x23,0x02,0x00,0x18,0x79, /* 00000638 "...#...y" */
+ 0x00,0x8B,0x50,0x52,0x52,0x30,0x01,0x54, /* 00000640 "..PRR0.T" */
+ 0x4D,0x50,0x5F,0x70,0x50,0x52,0x51,0x31, /* 00000648 "MP_pPRQ1" */
+ 0x60,0xA0,0x0C,0x95,0x60,0x0A,0x80,0x79, /* 00000650 "`...`..y" */
+ 0x01,0x60,0x54,0x4D,0x50,0x5F,0xA1,0x07, /* 00000658 ".`TMP_.." */
+ 0x70,0x00,0x54,0x4D,0x50,0x5F,0xA4,0x50, /* 00000660 "p.TMP_.P" */
+ 0x52,0x52,0x30,0x14,0x1B,0x5F,0x53,0x52, /* 00000668 "RR0.._SR" */
+ 0x53,0x01,0x8B,0x68,0x01,0x54,0x4D,0x50, /* 00000670 "S..h.TMP" */
+ 0x5F,0x82,0x54,0x4D,0x50,0x5F,0x60,0x76, /* 00000678 "_.TMP_`v" */
+ 0x60,0x70,0x60,0x50,0x52,0x51,0x31,0x5B, /* 00000680 "`p`PRQ1[" */
+ 0x82,0x4F,0x0A,0x4C,0x4E,0x4B,0x43,0x08, /* 00000688 ".O.LNKC." */
+ 0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,0x0C, /* 00000690 "_HID.A.." */
+ 0x0F,0x08,0x5F,0x55,0x49,0x44,0x0A,0x03, /* 00000698 ".._UID.." */
+ 0x08,0x5F,0x50,0x52,0x53,0x11,0x09,0x0A, /* 000006A0 "._PRS..." */
+ 0x06,0x23,0xF8,0x1E,0x18,0x79,0x00,0x14, /* 000006A8 ".#...y.." */
+ 0x1A,0x5F,0x53,0x54,0x41,0x00,0x70,0x0A, /* 000006B0 "._STA.p." */
+ 0x0B,0x60,0xA0,0x0D,0x7B,0x0A,0x80,0x50, /* 000006B8 ".`..{..P" */
+ 0x52,0x51,0x32,0x61,0x70,0x0A,0x09,0x60, /* 000006C0 "RQ2ap..`" */
+ 0xA4,0x60,0x14,0x11,0x5F,0x44,0x49,0x53, /* 000006C8 ".`.._DIS" */
+ 0x00,0x7D,0x50,0x52,0x51,0x32,0x0A,0x80, /* 000006D0 ".}PRQ2.." */
+ 0x50,0x52,0x51,0x32,0x14,0x3F,0x5F,0x43, /* 000006D8 "PRQ2.?_C" */
+ 0x52,0x53,0x00,0x08,0x50,0x52,0x52,0x30, /* 000006E0 "RS..PRR0" */
+ 0x11,0x09,0x0A,0x06,0x23,0x02,0x00,0x18, /* 000006E8 "....#..." */
+ 0x79,0x00,0x8B,0x50,0x52,0x52,0x30,0x01, /* 000006F0 "y..PRR0." */
+ 0x54,0x4D,0x50,0x5F,0x70,0x50,0x52,0x51, /* 000006F8 "TMP_pPRQ" */
+ 0x32,0x60,0xA0,0x0C,0x95,0x60,0x0A,0x80, /* 00000700 "2`...`.." */
+ 0x79,0x01,0x60,0x54,0x4D,0x50,0x5F,0xA1, /* 00000708 "y.`TMP_." */
+ 0x07,0x70,0x00,0x54,0x4D,0x50,0x5F,0xA4, /* 00000710 ".p.TMP_." */
+ 0x50,0x52,0x52,0x30,0x14,0x1B,0x5F,0x53, /* 00000718 "PRR0.._S" */
+ 0x52,0x53,0x01,0x8B,0x68,0x01,0x54,0x4D, /* 00000720 "RS..h.TM" */
+ 0x50,0x5F,0x82,0x54,0x4D,0x50,0x5F,0x60, /* 00000728 "P_.TMP_`" */
+ 0x76,0x60,0x70,0x60,0x50,0x52,0x51,0x32, /* 00000730 "v`p`PRQ2" */
+ 0x5B,0x82,0x4F,0x0A,0x4C,0x4E,0x4B,0x44, /* 00000738 "[.O.LNKD" */
+ 0x08,0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0, /* 00000740 "._HID.A." */
+ 0x0C,0x0F,0x08,0x5F,0x55,0x49,0x44,0x0A, /* 00000748 "..._UID." */
+ 0x04,0x08,0x5F,0x50,0x52,0x53,0x11,0x09, /* 00000750 ".._PRS.." */
+ 0x0A,0x06,0x23,0xF8,0x1E,0x18,0x79,0x00, /* 00000758 "..#...y." */
+ 0x14,0x1A,0x5F,0x53,0x54,0x41,0x00,0x70, /* 00000760 ".._STA.p" */
+ 0x0A,0x0B,0x60,0xA0,0x0D,0x7B,0x0A,0x80, /* 00000768 "..`..{.." */
+ 0x50,0x52,0x51,0x33,0x61,0x70,0x0A,0x09, /* 00000770 "PRQ3ap.." */
+ 0x60,0xA4,0x60,0x14,0x11,0x5F,0x44,0x49, /* 00000778 "`.`.._DI" */
+ 0x53,0x00,0x7D,0x50,0x52,0x51,0x33,0x0A, /* 00000780 "S.}PRQ3." */
+ 0x80,0x50,0x52,0x51,0x33,0x14,0x3F,0x5F, /* 00000788 ".PRQ3.?_" */
+ 0x43,0x52,0x53,0x00,0x08,0x50,0x52,0x52, /* 00000790 "CRS..PRR" */
+ 0x30,0x11,0x09,0x0A,0x06,0x23,0x02,0x00, /* 00000798 "0....#.." */
+ 0x18,0x79,0x00,0x8B,0x50,0x52,0x52,0x30, /* 000007A0 ".y..PRR0" */
+ 0x01,0x54,0x4D,0x50,0x5F,0x70,0x50,0x52, /* 000007A8 ".TMP_pPR" */
+ 0x51,0x33,0x60,0xA0,0x0C,0x95,0x60,0x0A, /* 000007B0 "Q3`...`." */
+ 0x80,0x79,0x01,0x60,0x54,0x4D,0x50,0x5F, /* 000007B8 ".y.`TMP_" */
+ 0xA1,0x07,0x70,0x00,0x54,0x4D,0x50,0x5F, /* 000007C0 "..p.TMP_" */
+ 0xA4,0x50,0x52,0x52,0x30,0x14,0x1B,0x5F, /* 000007C8 ".PRR0.._" */
+ 0x53,0x52,0x53,0x01,0x8B,0x68,0x01,0x54, /* 000007D0 "SRS..h.T" */
+ 0x4D,0x50,0x5F,0x82,0x54,0x4D,0x50,0x5F, /* 000007D8 "MP_.TMP_" */
+ 0x60,0x76,0x60,0x70,0x60,0x50,0x52,0x51, /* 000007E0 "`v`p`PRQ" */
+ 0x33,0x08,0x5F,0x53,0x33,0x5F,0x12,0x06, /* 000007E8 "3._S3_.." */
+ 0x04,0x01,0x01,0x00,0x00,0x08,0x5F,0x53, /* 000007F0 "......_S" */
+ 0x34,0x5F,0x12,0x06,0x04,0x00,0x00,0x00, /* 000007F8 "4_......" */
+ 0x00,0x08,0x5F,0x53,0x35,0x5F,0x12,0x06, /* 00000800 ".._S5_.." */
+ 0x04,0x00,0x00,0x00,0x00,
};
diff --git a/src/acpi.c b/src/acpi.c
index a688d34c..cdc90db6 100644
--- a/src/acpi.c
+++ b/src/acpi.c
@@ -21,7 +21,7 @@
BSD license) */
#define ACPI_TABLE_HEADER_DEF /* ACPI common table header */ \
- u8 signature [4]; /* ACPI signature (4 ASCII characters) */\
+ u32 signature; /* ACPI signature (4 ASCII characters) */\
u32 length; /* Length of table, in bytes, including header */\
u8 revision; /* ACPI Specification minor version # */\
u8 checksum; /* To make sum of entire table == 0 */\
@@ -40,6 +40,7 @@ struct acpi_table_header /* ACPI common table header */
/*
* ACPI 1.0 Root System Description Table (RSDT)
*/
+#define RSDT_SIGNATURE 0x54445352 // RSDT
struct rsdt_descriptor_rev1
{
ACPI_TABLE_HEADER_DEF /* ACPI common table header */
@@ -50,9 +51,10 @@ struct rsdt_descriptor_rev1
/*
* ACPI 1.0 Firmware ACPI Control Structure (FACS)
*/
+#define FACS_SIGNATURE 0x53434146 // FACS
struct facs_descriptor_rev1
{
- u8 signature[4]; /* ACPI Signature */
+ u32 signature; /* ACPI Signature */
u32 length; /* Length of structure, in bytes */
u32 hardware_signature; /* Hardware configuration signature */
u32 firmware_waking_vector; /* ACPI OS waking vector */
@@ -66,6 +68,7 @@ struct facs_descriptor_rev1
/*
* ACPI 1.0 Fixed ACPI Description Table (FADT)
*/
+#define FACP_SIGNATURE 0x50434146 // FACP
struct fadt_descriptor_rev1
{
ACPI_TABLE_HEADER_DEF /* ACPI common table header */
@@ -135,6 +138,7 @@ struct fadt_descriptor_rev1
/* Master MADT */
+#define APIC_SIGNATURE 0x43495041 // APIC
struct multiple_apic_table
{
ACPI_TABLE_HEADER_DEF /* ACPI common table header */
@@ -206,20 +210,21 @@ static inline u32 cpu_to_le32(u32 x)
}
static void acpi_build_table_header(struct acpi_table_header *h,
- char *sig, int len, u8 rev)
+ u32 sig, int len, u8 rev)
{
- memcpy(h->signature, sig, 4);
+ h->signature = sig;
h->length = cpu_to_le32(len);
h->revision = rev;
memcpy(h->oem_id, CONFIG_APPNAME6, 6);
memcpy(h->oem_table_id, CONFIG_APPNAME4, 4);
memcpy(h->asl_compiler_id, CONFIG_APPNAME4, 4);
- memcpy(h->oem_table_id + 4, sig, 4);
+ memcpy(h->oem_table_id + 4, (void*)&sig, 4);
h->oem_revision = cpu_to_le32(1);
h->asl_compiler_revision = cpu_to_le32(1);
h->checksum = -checksum((void *)h, len);
}
+#define SSDT_SIGNATURE 0x54445353// SSDT
static int
acpi_build_processor_ssdt(u8 *ssdt)
{
@@ -268,11 +273,13 @@ acpi_build_processor_ssdt(u8 *ssdt)
}
acpi_build_table_header((struct acpi_table_header *)ssdt,
- "SSDT", ssdt_ptr - ssdt, 1);
+ SSDT_SIGNATURE, ssdt_ptr - ssdt, 1);
return ssdt_ptr - ssdt;
}
+struct rsdp_descriptor *RsdpAddr;
+
/* base_addr must be a multiple of 4KB */
void acpi_bios_init(void)
{
@@ -344,10 +351,11 @@ void acpi_bios_init(void)
/* RSDP */
memset(rsdp, 0, sizeof(*rsdp));
- memcpy(rsdp->signature, "RSD PTR ", 8);
+ rsdp->signature = RSDP_SIGNATURE;
memcpy(rsdp->oem_id, CONFIG_APPNAME6, 6);
rsdp->rsdt_physical_address = cpu_to_le32(rsdt_addr);
rsdp->checksum = -checksum((void *)rsdp, 20);
+ RsdpAddr = rsdp;
/* RSDT */
memset(rsdt, 0, sizeof(*rsdt));
@@ -355,7 +363,7 @@ void acpi_bios_init(void)
rsdt->table_offset_entry[1] = cpu_to_le32(madt_addr);
rsdt->table_offset_entry[2] = cpu_to_le32(ssdt_addr);
acpi_build_table_header((struct acpi_table_header *)rsdt,
- "RSDT", sizeof(*rsdt), 1);
+ RSDT_SIGNATURE, sizeof(*rsdt), 1);
/* FADT */
memset(fadt, 0, sizeof(*fadt));
@@ -378,12 +386,12 @@ void acpi_bios_init(void)
fadt->plvl3_lat = cpu_to_le16(0xfff); // C3 state not supported
/* WBINVD + PROC_C1 + PWR_BUTTON + SLP_BUTTON + FIX_RTC */
fadt->flags = cpu_to_le32((1 << 0) | (1 << 2) | (1 << 4) | (1 << 5) | (1 << 6));
- acpi_build_table_header((struct acpi_table_header *)fadt, "FACP",
+ acpi_build_table_header((struct acpi_table_header *)fadt, FACP_SIGNATURE,
sizeof(*fadt), 1);
/* FACS */
memset(facs, 0, sizeof(*facs));
- memcpy(facs->signature, "FACS", 4);
+ facs->signature = FACS_SIGNATURE;
facs->length = cpu_to_le32(sizeof(*facs));
/* DSDT */
@@ -414,6 +422,34 @@ void acpi_bios_init(void)
io_apic->interrupt = cpu_to_le32(0);
acpi_build_table_header((struct acpi_table_header *)madt,
- "APIC", madt_size, 1);
+ APIC_SIGNATURE, madt_size, 1);
+ }
+}
+
+u32
+find_resume_vector()
+{
+ dprintf(4, "rsdp=%p\n", RsdpAddr);
+ if (!RsdpAddr || RsdpAddr->signature != RSDP_SIGNATURE)
+ return 0;
+ struct rsdt_descriptor_rev1 *rsdt = (void*)RsdpAddr->rsdt_physical_address;
+ dprintf(4, "rsdt=%p\n", rsdt);
+ if (!rsdt || rsdt->signature != RSDT_SIGNATURE)
+ return 0;
+ void *end = (void*)rsdt + rsdt->length;
+ int i;
+ for (i=0; (void*)&rsdt->table_offset_entry[i] < end; i++) {
+ struct fadt_descriptor_rev1 *fadt = (void*)rsdt->table_offset_entry[i];
+ if (!fadt || fadt->signature != FACP_SIGNATURE)
+ continue;
+ dprintf(4, "fadt=%p\n", fadt);
+ struct facs_descriptor_rev1 *facs = (void*)fadt->firmware_ctrl;
+ dprintf(4, "facs=%p\n", facs);
+ if (! facs || facs->signature != FACS_SIGNATURE)
+ return 0;
+ // Found it.
+ dprintf(4, "resume addr=%d\n", facs->firmware_waking_vector);
+ return facs->firmware_waking_vector;
}
+ return 0;
}
diff --git a/src/acpi.h b/src/acpi.h
index a5c58b51..f8ed8701 100644
--- a/src/acpi.h
+++ b/src/acpi.h
@@ -4,12 +4,13 @@
#include "types.h" // u32
void acpi_bios_init(void);
+u32 find_resume_vector();
#define RSDP_SIGNATURE 0x2052545020445352LL // "RSD PTR "
struct rsdp_descriptor /* Root System Descriptor Pointer */
{
- u8 signature [8]; /* ACPI signature, contains "RSD PTR " */
+ u64 signature; /* ACPI signature, contains "RSD PTR " */
u8 checksum; /* To make sum of struct == 0 */
u8 oem_id [6]; /* OEM identification */
u8 revision; /* Must be 0 for 1.0, 2 for 2.0 */
@@ -20,6 +21,8 @@ struct rsdp_descriptor /* Root System Descriptor Pointer */
u8 reserved [3]; /* Reserved field must be 0 */
};
+extern struct rsdp_descriptor *RsdpAddr;
+
// XXX - not really part of acpi.
struct mptable_floating_s {
u32 signature;
diff --git a/src/config.h b/src/config.h
index 7e384ad1..7a875df7 100644
--- a/src/config.h
+++ b/src/config.h
@@ -86,19 +86,20 @@
#define CONFIG_BIOS_REVISION 0x01
// Various memory addresses used by the code.
-#define BUILD_STACK_ADDR 0x7c00
-#define BUILD_AP_BOOT_ADDR 0x10000
-#define BUILD_BIOS_ADDR 0xf0000
-#define BUILD_BIOS_SIZE 0x10000
+#define BUILD_STACK_ADDR 0x7c00
+#define BUILD_S3RESUME_STACK_ADDR 0x1000
+#define BUILD_AP_BOOT_ADDR 0x10000
+#define BUILD_BIOS_ADDR 0xf0000
+#define BUILD_BIOS_SIZE 0x10000
// 64 KB used to copy the BIOS to shadow RAM
-#define BUILD_BIOS_TMP_ADDR 0x30000
+#define BUILD_BIOS_TMP_ADDR 0x30000
-#define BUILD_APIC_ADDR 0xfee00000
-#define BUILD_IOAPIC_ADDR 0xfec00000
+#define BUILD_APIC_ADDR 0xfee00000
+#define BUILD_IOAPIC_ADDR 0xfec00000
-#define BUILD_SMM_INIT_ADDR 0x38000
-#define BUILD_SMM_ADDR 0xa8000
-#define BUILD_SMM_SIZE 0x8000
+#define BUILD_SMM_INIT_ADDR 0x38000
+#define BUILD_SMM_ADDR 0xa8000
+#define BUILD_SMM_SIZE 0x8000
// Start of fixed addresses in 0xf0000 segment.
#define BUILD_START_FIXED 0xe050
diff --git a/src/coreboot.c b/src/coreboot.c
index 0079811e..8610d756 100644
--- a/src/coreboot.c
+++ b/src/coreboot.c
@@ -62,9 +62,11 @@ copy_mptable(void *pos)
static void
copy_acpi_rsdp(void *pos)
{
- if (*(u64*)pos != RSDP_SIGNATURE)
+ if (RsdpAddr)
return;
struct rsdp_descriptor *p = pos;
+ if (p->signature != RSDP_SIGNATURE)
+ return;
u32 length = 20;
if (checksum(pos, length) != 0)
return;
@@ -79,7 +81,8 @@ copy_acpi_rsdp(void *pos)
return;
}
dprintf(1, "Copying ACPI RSDP from %p to %x\n", pos, bios_table_cur_addr);
- memcpy((void*)bios_table_cur_addr, pos, length);
+ RsdpAddr = (void*)bios_table_cur_addr;
+ memcpy(RsdpAddr, pos, length);
bios_table_cur_addr += length;
}
@@ -233,6 +236,7 @@ fail:
// No table found.. Use 16Megs as a dummy value.
dprintf(1, "Unable to find coreboot table!\n");
SET_EBDA(ram_size, 16*1024*1024);
+ SET_EBDA(ram_size_over4G, 0);
add_e820(0, 16*1024*1024, E820_RAM);
return;
}
diff --git a/src/resume.c b/src/resume.c
index 559fa97d..0e27c1c4 100644
--- a/src/resume.c
+++ b/src/resume.c
@@ -8,6 +8,8 @@
#include "ioport.h" // outb
#include "pic.h" // eoi_pic2
#include "biosvar.h" // struct bios_data_area_s
+#include "bregs.h" // struct bregs
+#include "acpi.h" // find_resume_vector
// Reset DMA controller
void
@@ -32,9 +34,21 @@ handle_resume(u8 status)
dprintf(1, "In resume (status=%d)\n", status);
switch (status) {
+ case 0xfe:
+ // S3 resume request. Jump to 32bit mode to handle the resume.
+ asm volatile(
+ "movw %%ax, %%ss\n"
+ "movl %0, %%esp\n"
+ "pushl $_code32_s3_resume\n"
+ "jmp transition32\n"
+ : : "i"(BUILD_S3RESUME_STACK_ADDR), "a"(0)
+ );
+ break;
+
case 0x00:
case 0x09:
- case 0x0d ... 0xff:
+ case 0x0d ... 0xfd:
+ case 0xff:
// Normal post - now that status has been cleared a reset will
// run regular boot code..
reset_vector();
@@ -79,3 +93,30 @@ handle_resume(u8 status)
BX_PANIC("Unimplemented shutdown status: %02x\n", status);
}
+
+void VISIBLE32
+s3_resume()
+{
+ dprintf(1, "In 32bit resume\n");
+
+ smm_init();
+
+ make_bios_readonly();
+
+ u32 s3_resume_vector = find_resume_vector();
+
+ // Invoke the resume vector.
+ struct bregs br;
+ memset(&br, 0, sizeof(br));
+ if (s3_resume_vector) {
+ dprintf(1, "Jump to resume vector (%x)\n", s3_resume_vector);
+ br.ip = FARPTR_TO_OFFSET(s3_resume_vector);
+ br.cs = FARPTR_TO_SEG(s3_resume_vector);
+ } else {
+ dprintf(1, "No resume vector set!\n");
+ // Jump to the post vector to restart with a normal boot.
+ br.ip = (u32)reset_vector - BUILD_BIOS_ADDR;
+ br.cs = SEG_BIOS;
+ }
+ call16big(&br);
+}