diff options
author | Jung-uk Kim <jkim@FreeBSD.org> | 2021-06-05 04:00:36 +0000 |
---|---|---|
committer | Jung-uk Kim <jkim@FreeBSD.org> | 2021-06-05 04:00:36 +0000 |
commit | 395770967c3664ec744e63fa47acc19670d32f47 (patch) | |
tree | 6a701012d1331dfbfec29593ea35eeb600a2d6c8 /source/compiler | |
parent | 1e02e5b0ba8634758c128dcb43c67342c7219cd4 (diff) | |
download | src-395770967c3664ec744e63fa47acc19670d32f47.tar.gz src-395770967c3664ec744e63fa47acc19670d32f47.zip |
Import ACPICA 20210604vendor/acpica/20210604
Diffstat (limited to 'source/compiler')
-rw-r--r-- | source/compiler/aslcompiler.h | 4 | ||||
-rw-r--r-- | source/compiler/aslmessages.c | 6 | ||||
-rw-r--r-- | source/compiler/aslmessages.h | 4 | ||||
-rw-r--r-- | source/compiler/aslutils.c | 40 | ||||
-rw-r--r-- | source/compiler/asluuid.c | 47 | ||||
-rw-r--r-- | source/compiler/dtcompiler.h | 16 | ||||
-rw-r--r-- | source/compiler/dtfield.c | 4 | ||||
-rw-r--r-- | source/compiler/dtio.c | 6 | ||||
-rw-r--r-- | source/compiler/dttable1.c | 274 | ||||
-rw-r--r-- | source/compiler/dttable2.c | 169 | ||||
-rw-r--r-- | source/compiler/dttemplate.h | 212 | ||||
-rw-r--r-- | source/compiler/dtutils.c | 19 |
12 files changed, 666 insertions, 135 deletions
diff --git a/source/compiler/aslcompiler.h b/source/compiler/aslcompiler.h index e48e4674c1e5..5112ea49695c 100644 --- a/source/compiler/aslcompiler.h +++ b/source/compiler/aslcompiler.h @@ -1224,6 +1224,10 @@ DbgPrint ( #define ASL_PARSE_OUTPUT 1 #define ASL_TREE_OUTPUT 2 +BOOLEAN +UtIsIdInteger ( + UINT8 *Target); + UINT8 UtIsBigEndianMachine ( void); diff --git a/source/compiler/aslmessages.c b/source/compiler/aslmessages.c index c969764508c0..4dd6422ba75a 100644 --- a/source/compiler/aslmessages.c +++ b/source/compiler/aslmessages.c @@ -400,14 +400,16 @@ const char *AslTableCompilerMsgs [] = /* ASL_MSG_INVALID_FIELD_NAME */ "Invalid Field Name", /* ASL_MSG_INVALID_HEX_INTEGER */ "Invalid hex integer constant", /* ASL_MSG_OEM_TABLE */ "OEM table - unknown contents", -/* ASL_MSG_RESERVED_VALUE */ "Reserved field", +/* ASL_MSG_RESERVED_FIELD */ "Reserved field", /* ASL_MSG_UNKNOWN_LABEL */ "Label is undefined", /* ASL_MSG_UNKNOWN_SUBTABLE */ "Unknown subtable type", /* ASL_MSG_UNKNOWN_TABLE */ "Unknown ACPI table signature", /* ASL_MSG_ZERO_VALUE */ "Value must be non-zero", /* ASL_MSG_INVALID_LABEL */ "Invalid field label detected", /* ASL_MSG_BUFFER_LIST */ "Invalid buffer initializer list", -/* ASL_MSG_ENTRY_LIST */ "Invalid entry initializer list" +/* ASL_MSG_ENTRY_LIST */ "Invalid entry initializer list", +/* ASL_MSG_UNKNOWN_FORMAT */ "Unknown format value", +/* ASL_MSG_RESERVED_VALUE */ "Value for field is reserved or unknown", }; /* Preprocessor */ diff --git a/source/compiler/aslmessages.h b/source/compiler/aslmessages.h index 1d9f7becb12d..69c2561bad0f 100644 --- a/source/compiler/aslmessages.h +++ b/source/compiler/aslmessages.h @@ -402,7 +402,7 @@ typedef enum ASL_MSG_INVALID_FIELD_NAME, ASL_MSG_INVALID_HEX_INTEGER, ASL_MSG_OEM_TABLE, - ASL_MSG_RESERVED_VALUE, + ASL_MSG_RESERVED_FIELD, ASL_MSG_UNKNOWN_LABEL, ASL_MSG_UNKNOWN_SUBTABLE, ASL_MSG_UNKNOWN_TABLE, @@ -410,6 +410,8 @@ typedef enum ASL_MSG_INVALID_LABEL, ASL_MSG_BUFFER_LIST, ASL_MSG_ENTRY_LIST, + ASL_MSG_UNKNOWN_FORMAT, + ASL_MSG_RESERVED_VALUE, /* These messages are used by the Preprocessor only */ diff --git a/source/compiler/aslutils.c b/source/compiler/aslutils.c index 5dee45d91e04..44631957ca8e 100644 --- a/source/compiler/aslutils.c +++ b/source/compiler/aslutils.c @@ -206,6 +206,46 @@ UtIsBigEndianMachine ( } +/******************************************************************************* + * + * FUNCTION: UtIsIdInteger + * + * PARAMETERS: Pointer to an ACPI ID (HID, CID) string + * + * RETURN: TRUE if string is an integer + * FALSE if string is not an integer + * + * DESCRIPTION: Determine whether the input ACPI ID string can be converted to + * an integer value. + * + ******************************************************************************/ + +BOOLEAN +UtIsIdInteger ( + UINT8 *Target) +{ + UINT32 i; + + + /* The first three characters of the string must be alphabetic */ + + for (i = 0; i < 3; i++) + { + if (!isalpha ((int) Target[i])) + { + break; + } + } + + if (i < 3) + { + return (TRUE); + } + + return (FALSE); +} + + /****************************************************************************** * * FUNCTION: UtQueryForOverwrite diff --git a/source/compiler/asluuid.c b/source/compiler/asluuid.c index c8dd4a464aa9..30540acdaeaa 100644 --- a/source/compiler/asluuid.c +++ b/source/compiler/asluuid.c @@ -212,50 +212,3 @@ AuValidateUuid ( return (AE_OK); } - -/******************************************************************************* - * - * FUNCTION: AuConvertUuidToString - * - * PARAMETERS: UuidBuffer - 16-byte UUID buffer - * OutString - 36-byte formatted UUID string - * - * RETURN: Status - * - * DESCRIPTION: Convert 16-byte UUID buffer to 36-byte formatted UUID string - * OutString must be 37 bytes to include null terminator. - * - ******************************************************************************/ - -ACPI_STATUS -AuConvertUuidToString ( - char *UuidBuffer, - char *OutString) -{ - UINT32 i; - - - if (!UuidBuffer || !OutString) - { - return (AE_BAD_PARAMETER); - } - - for (i = 0; i < UUID_BUFFER_LENGTH; i++) - { - OutString[AcpiGbl_MapToUuidOffset[i]] = - AcpiUtHexToAsciiChar (UuidBuffer[i], 4); - - OutString[AcpiGbl_MapToUuidOffset[i] + 1] = - AcpiUtHexToAsciiChar (UuidBuffer[i], 0); - } - - /* Insert required hyphens (dashes) */ - - OutString[UUID_HYPHEN1_OFFSET] = - OutString[UUID_HYPHEN2_OFFSET] = - OutString[UUID_HYPHEN3_OFFSET] = - OutString[UUID_HYPHEN4_OFFSET] = '-'; - - OutString[UUID_STRING_LENGTH] = 0; /* Null terminate */ - return (AE_OK); -} diff --git a/source/compiler/dtcompiler.h b/source/compiler/dtcompiler.h index f2d006440d8e..4f96680843fd 100644 --- a/source/compiler/dtcompiler.h +++ b/source/compiler/dtcompiler.h @@ -674,6 +674,14 @@ DtCompilePptt ( void **PFieldList); ACPI_STATUS +DtCompilePrmt ( + void **PFieldList); + +ACPI_STATUS +DtCompileRgrt ( + void **PFieldList); + +ACPI_STATUS DtCompileRsdt ( void **PFieldList); @@ -702,6 +710,10 @@ DtCompileStao ( void **PFieldList); ACPI_STATUS +DtCompileSvkl ( + void **PFieldList); + +ACPI_STATUS DtCompileTcpa ( void **PFieldList); @@ -743,6 +755,7 @@ DtGetGenericTableInfo ( extern const unsigned char TemplateAsf[]; extern const unsigned char TemplateBoot[]; +extern const unsigned char TemplateBdat[]; extern const unsigned char TemplateBert[]; extern const unsigned char TemplateBgrt[]; extern const unsigned char TemplateCedt[]; @@ -776,7 +789,9 @@ extern const unsigned char TemplatePdtt[]; extern const unsigned char TemplatePhat[]; extern const unsigned char TemplatePmtt[]; extern const unsigned char TemplatePptt[]; +extern const unsigned char TemplatePrmt[]; extern const unsigned char TemplateRasf[]; +extern const unsigned char TemplateRgrt[]; extern const unsigned char TemplateRsdt[]; extern const unsigned char TemplateS3pt[]; extern const unsigned char TemplateSbst[]; @@ -788,6 +803,7 @@ extern const unsigned char TemplateSpcr[]; extern const unsigned char TemplateSpmi[]; extern const unsigned char TemplateSrat[]; extern const unsigned char TemplateStao[]; +extern const unsigned char TemplateSvkl[]; extern const unsigned char TemplateTcpa[]; extern const unsigned char TemplateTpm2[]; extern const unsigned char TemplateUefi[]; diff --git a/source/compiler/dtfield.c b/source/compiler/dtfield.c index ee7788e3b8a5..729791d7acde 100644 --- a/source/compiler/dtfield.c +++ b/source/compiler/dtfield.c @@ -434,14 +434,14 @@ DtCompileInteger ( { if (Value != 1) { - DtError (ASL_WARNING, ASL_MSG_RESERVED_VALUE, Field, + DtError (ASL_WARNING, ASL_MSG_RESERVED_FIELD, Field, "Must be one, setting to one"); Value = 1; } } else if (Value != 0) { - DtError (ASL_WARNING, ASL_MSG_RESERVED_VALUE, Field, + DtError (ASL_WARNING, ASL_MSG_RESERVED_FIELD, Field, "Must be zero, setting to zero"); Value = 0; } diff --git a/source/compiler/dtio.c b/source/compiler/dtio.c index 781b2b8abc40..e1776f3f2919 100644 --- a/source/compiler/dtio.c +++ b/source/compiler/dtio.c @@ -1086,9 +1086,9 @@ DtDumpSubtableTree ( { DbgPrint (ASL_DEBUG_OUTPUT, - "[%.04X] %24s %*s%p (%.02X) - (%.02X)\n", + "[%.04X] %24s %*s%p (%.02X) - (%.02X) %.02X\n", Subtable->Depth, Subtable->Name, (4 * Subtable->Depth), " ", - Subtable, Subtable->Length, Subtable->TotalLength); + Subtable, Subtable->Length, Subtable->TotalLength, *Subtable->Buffer); } @@ -1123,7 +1123,7 @@ DtDumpSubtableList ( DtWalkTableTree (AslGbl_RootTable, DtDumpSubtableInfo, NULL, NULL); DbgPrint (ASL_DEBUG_OUTPUT, - "\nSubtable Tree: (Depth, Name, Subtable, Length, TotalLength)\n\n"); + "\nSubtable Tree: (Depth, Name, Subtable, Length, TotalLength, Integer Value)\n\n"); DtWalkTableTree (AslGbl_RootTable, DtDumpSubtableTree, NULL, NULL); DbgPrint (ASL_DEBUG_OUTPUT, "\n"); diff --git a/source/compiler/dttable1.c b/source/compiler/dttable1.c index 458a71743cf8..bf710e31c133 100644 --- a/source/compiler/dttable1.c +++ b/source/compiler/dttable1.c @@ -2058,7 +2058,18 @@ DtCompileIort ( * * RETURN: Status * - * DESCRIPTION: Compile IVRS. + * DESCRIPTION: Compile IVRS. Notes: + * The IVRS is essentially a flat table, with the following + * structure: + * <Main ACPI Table Header> + * <Main subtable - virtualization info> + * <IVHD> + * <Device Entries> + * ... + * <IVHD> + * <Device Entries> + * <IVMD> + * ... * *****************************************************************************/ @@ -2069,12 +2080,16 @@ DtCompileIvrs ( ACPI_STATUS Status; DT_SUBTABLE *Subtable; DT_SUBTABLE *ParentTable; + DT_SUBTABLE *MainSubtable; DT_FIELD **PFieldList = (DT_FIELD **) List; DT_FIELD *SubtableStart; - ACPI_DMTABLE_INFO *InfoTable; - ACPI_IVRS_HEADER *IvrsHeader; - UINT8 EntryType; + ACPI_DMTABLE_INFO *InfoTable = NULL; + UINT8 SubtableType; + UINT8 Temp64[16]; + UINT8 Temp8; + + /* Main table */ Status = DtCompileTable (PFieldList, AcpiDmTableInfoIvrs, &Subtable); @@ -2085,122 +2100,263 @@ DtCompileIvrs ( ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); + DtPushSubtable (Subtable); + + /* Save a pointer to the main subtable */ + + MainSubtable = Subtable; while (*PFieldList) { SubtableStart = *PFieldList; - Status = DtCompileTable (PFieldList, AcpiDmTableInfoIvrsHdr, - &Subtable); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - ParentTable = DtPeekSubtable (); - DtInsertSubtable (ParentTable, Subtable); - DtPushSubtable (Subtable); + /* Compile the SubtableType integer */ - IvrsHeader = ACPI_CAST_PTR (ACPI_IVRS_HEADER, Subtable->Buffer); + DtCompileInteger (&SubtableType, *PFieldList, 1, 0); - switch (IvrsHeader->Type) + switch (SubtableType) { + + /* Type 10h, IVHD (I/O Virtualization Hardware Definition) */ + case ACPI_IVRS_TYPE_HARDWARE1: - InfoTable = AcpiDmTableInfoIvrs0; + InfoTable = AcpiDmTableInfoIvrsHware1; break; + /* Types 11h, 40h, IVHD (I/O Virtualization Hardware Definition) */ + case ACPI_IVRS_TYPE_HARDWARE2: + case ACPI_IVRS_TYPE_HARDWARE3: - InfoTable = AcpiDmTableInfoIvrs01; + InfoTable = AcpiDmTableInfoIvrsHware23; break; + /* Types 20h, 21h, 22h, IVMD (I/O Virtualization Memory Definition Block) */ + case ACPI_IVRS_TYPE_MEMORY1: case ACPI_IVRS_TYPE_MEMORY2: case ACPI_IVRS_TYPE_MEMORY3: - InfoTable = AcpiDmTableInfoIvrs1; + InfoTable = AcpiDmTableInfoIvrsMemory; + break; + + /* 4-byte device entries */ + + case ACPI_IVRS_TYPE_PAD4: + case ACPI_IVRS_TYPE_ALL: + case ACPI_IVRS_TYPE_SELECT: + case ACPI_IVRS_TYPE_START: + case ACPI_IVRS_TYPE_END: + + InfoTable = AcpiDmTableInfoIvrs4; + break; + + /* 8-byte device entries, type A */ + + case ACPI_IVRS_TYPE_ALIAS_SELECT: + case ACPI_IVRS_TYPE_ALIAS_START: + + InfoTable = AcpiDmTableInfoIvrs8a; + break; + + /* 8-byte device entries, type B */ + + case ACPI_IVRS_TYPE_EXT_SELECT: + case ACPI_IVRS_TYPE_EXT_START: + + InfoTable = AcpiDmTableInfoIvrs8b; + break; + + /* 8-byte device entries, type C */ + + case ACPI_IVRS_TYPE_SPECIAL: + + InfoTable = AcpiDmTableInfoIvrs8c; + break; + + /* Variable device entries, type F0h */ + + case ACPI_IVRS_TYPE_HID: + + InfoTable = AcpiDmTableInfoIvrsHid; break; default: - DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "IVRS"); + DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, + "IVRS Device Entry"); return (AE_ERROR); } - Status = DtCompileTable (PFieldList, InfoTable, &Subtable); + /* Compile the InfoTable from above */ + + Status = DtCompileTable (PFieldList, InfoTable, + &Subtable); if (ACPI_FAILURE (Status)) { return (Status); } ParentTable = DtPeekSubtable (); - DtInsertSubtable (ParentTable, Subtable); + if (SubtableType != ACPI_IVRS_TYPE_HARDWARE1 && + SubtableType != ACPI_IVRS_TYPE_HARDWARE2 && + SubtableType != ACPI_IVRS_TYPE_HARDWARE3 && + SubtableType != ACPI_IVRS_TYPE_HID && + SubtableType != ACPI_IVRS_TYPE_MEMORY1 && + SubtableType != ACPI_IVRS_TYPE_MEMORY2 && + SubtableType != ACPI_IVRS_TYPE_MEMORY3) + { + if (ParentTable) + DtInsertSubtable (ParentTable, Subtable); + } - if (IvrsHeader->Type == ACPI_IVRS_TYPE_HARDWARE1 || - IvrsHeader->Type == ACPI_IVRS_TYPE_HARDWARE2) + switch (SubtableType) { - while (*PFieldList && - !strcmp ((*PFieldList)->Name, "Entry Type")) + case ACPI_IVRS_TYPE_HARDWARE1: + case ACPI_IVRS_TYPE_HARDWARE2: + case ACPI_IVRS_TYPE_HARDWARE3: + case ACPI_IVRS_TYPE_MEMORY1: + case ACPI_IVRS_TYPE_MEMORY2: + case ACPI_IVRS_TYPE_MEMORY3: + + /* Insert these IVHDs/IVMDs at the root subtable */ + + DtInsertSubtable (MainSubtable, Subtable); + DtPushSubtable (Subtable); + ParentTable = MainSubtable; + break; + + case ACPI_IVRS_TYPE_HID: + + /* Special handling for the HID named device entry (0xF0) */ + + if (ParentTable) + { + DtInsertSubtable (ParentTable, Subtable); + } + + /* + * Process the HID value. First, get the HID value as a string. + */ + DtCompileOneField ((UINT8 *) &Temp64, *PFieldList, 16, DT_FIELD_TYPE_STRING, 0); + + /* + * Determine if the HID is an integer or a string. + * An integer is defined to be 32 bits, with the upper 32 bits + * set to zero. (from the ACPI Spec): "The HID can be a 32-bit + * integer or a character string. If an integer, the lower + * 4 bytes of the field contain the integer and the upper + * 4 bytes are padded with 0". + */ + if (UtIsIdInteger ((UINT8 *) &Temp64)) { - SubtableStart = *PFieldList; - DtCompileInteger (&EntryType, *PFieldList, 1, 0); + /* Compile the HID value as an integer */ - switch (EntryType) + DtCompileOneField ((UINT8 *) &Temp64, *PFieldList, 8, DT_FIELD_TYPE_INTEGER, 0); + + Status = DtCompileTable (PFieldList, AcpiDmTableInfoIvrsHidInteger, + &Subtable); + if (ACPI_FAILURE (Status)) { - /* 4-byte device entries */ + return (Status); + } + } + else + { + /* Compile the HID value as a string */ - case ACPI_IVRS_TYPE_PAD4: - case ACPI_IVRS_TYPE_ALL: - case ACPI_IVRS_TYPE_SELECT: - case ACPI_IVRS_TYPE_START: - case ACPI_IVRS_TYPE_END: + Status = DtCompileTable (PFieldList, AcpiDmTableInfoIvrsHidString, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + } - InfoTable = AcpiDmTableInfoIvrs4; - break; + DtInsertSubtable (ParentTable, Subtable); - /* 8-byte entries, type A */ + /* + * Process the CID value. First, get the CID value as a string. + */ + DtCompileOneField ((UINT8 *) &Temp64, *PFieldList, 16, DT_FIELD_TYPE_STRING, 0); - case ACPI_IVRS_TYPE_ALIAS_SELECT: - case ACPI_IVRS_TYPE_ALIAS_START: + if (UtIsIdInteger ((UINT8 *) &Temp64)) + { + /* Compile the CID value as an integer */ - InfoTable = AcpiDmTableInfoIvrs8a; - break; + DtCompileOneField ((UINT8 *) &Temp64, *PFieldList, 8, DT_FIELD_TYPE_INTEGER, 0); - /* 8-byte entries, type B */ + Status = DtCompileTable (PFieldList, AcpiDmTableInfoIvrsCidInteger, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + } + else + { + /* Compile the CID value as a string */ - case ACPI_IVRS_TYPE_PAD8: - case ACPI_IVRS_TYPE_EXT_SELECT: - case ACPI_IVRS_TYPE_EXT_START: + Status = DtCompileTable (PFieldList, AcpiDmTableInfoIvrsCidString, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + } - InfoTable = AcpiDmTableInfoIvrs8b; - break; + DtInsertSubtable (ParentTable, Subtable); - /* 8-byte entries, type C */ + /* + * Process the UID value. First, get and decode the "UID Format" field (Integer). + */ + if (!*PFieldList) + { + return (AE_OK); + } - case ACPI_IVRS_TYPE_SPECIAL: + DtCompileOneField (&Temp8, *PFieldList, 1, DT_FIELD_TYPE_INTEGER, 0); - InfoTable = AcpiDmTableInfoIvrs8c; - break; + switch (Temp8) + { + case ACPI_IVRS_UID_NOT_PRESENT: + break; - default: + case ACPI_IVRS_UID_IS_INTEGER: - DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, - "IVRS Device Entry"); - return (AE_ERROR); + Status = DtCompileTable (PFieldList, AcpiDmTableInfoIvrsUidInteger, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); } + DtInsertSubtable (ParentTable, Subtable); + break; - Status = DtCompileTable (PFieldList, InfoTable, + case ACPI_IVRS_UID_IS_STRING: + + Status = DtCompileTable (PFieldList, AcpiDmTableInfoIvrsUidString, &Subtable); if (ACPI_FAILURE (Status)) { return (Status); } - DtInsertSubtable (ParentTable, Subtable); + break; + + default: + + DtFatal (ASL_MSG_UNKNOWN_FORMAT, SubtableStart, + "IVRS Device Entry"); + return (AE_ERROR); } - } - DtPopSubtable (); + default: + + /* All other subtable types come through here */ + break; + } } return (AE_OK); diff --git a/source/compiler/dttable2.c b/source/compiler/dttable2.c index f6efcf3d940b..3a0d8a22607b 100644 --- a/source/compiler/dttable2.c +++ b/source/compiler/dttable2.c @@ -1337,6 +1337,118 @@ DtCompilePptt ( /****************************************************************************** * + * FUNCTION: DtCompilePrmt + * + * PARAMETERS: List - Current field list pointer + * + * RETURN: Status + * + * DESCRIPTION: Compile PRMT. + * + *****************************************************************************/ + +ACPI_STATUS +DtCompilePrmt ( + void **List) +{ + ACPI_STATUS Status; + ACPI_TABLE_PRMT_HEADER *PrmtHeader; + ACPI_PRMT_MODULE_INFO *PrmtModuleInfo; + DT_SUBTABLE *Subtable; + DT_SUBTABLE *ParentTable; + DT_FIELD **PFieldList = (DT_FIELD **) List; + UINT32 i, j; + + ParentTable = DtPeekSubtable (); + + /* Compile PRMT subtable header */ + + Status = DtCompileTable (PFieldList, AcpiDmTableInfoPrmtHdr, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + DtInsertSubtable (ParentTable, Subtable); + PrmtHeader = ACPI_CAST_PTR (ACPI_TABLE_PRMT_HEADER, Subtable->Buffer); + + for (i = 0; i < PrmtHeader->ModuleInfoCount; i++) + { + Status = DtCompileTable (PFieldList, AcpiDmTableInfoPrmtModule, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + DtInsertSubtable (ParentTable, Subtable); + PrmtModuleInfo = ACPI_CAST_PTR (ACPI_PRMT_MODULE_INFO, Subtable->Buffer); + + for (j = 0; j < PrmtModuleInfo->HandlerInfoCount; j++) + { + Status = DtCompileTable (PFieldList, AcpiDmTableInfoPrmtHandler, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + DtInsertSubtable (ParentTable, Subtable); + } + } + + return (AE_OK); +} + + +/****************************************************************************** + * + * FUNCTION: DtCompileRgrt + * + * PARAMETERS: List - Current field list pointer + * + * RETURN: Status + * + * DESCRIPTION: Compile RGRT. + * + *****************************************************************************/ + +ACPI_STATUS +DtCompileRgrt ( + void **List) +{ + ACPI_STATUS Status; + DT_SUBTABLE *Subtable; + DT_SUBTABLE *ParentTable; + DT_FIELD **PFieldList = (DT_FIELD **) List; + + + /* Compile the main table */ + + Status = DtCompileTable (PFieldList, AcpiDmTableInfoRgrt, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + + /* Compile the "Subtable" -- actually just the binary (PNG) image */ + + Status = DtCompileTable (PFieldList, AcpiDmTableInfoRgrt0, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + DtInsertSubtable (ParentTable, Subtable); + return (AE_OK); +} + + +/****************************************************************************** + * * FUNCTION: DtCompileRsdt * * PARAMETERS: List - Current field list pointer @@ -2024,6 +2136,63 @@ DtCompileStao ( } + +/****************************************************************************** + * + * FUNCTION: DtCompileSvkl + * + * PARAMETERS: PFieldList - Current field list pointer + * + * RETURN: Status + * + * DESCRIPTION: Compile SVKL. + * + * NOTES: SVKL is essentially a flat table, with a small main table and + * a variable number of a single type of subtable. + * + *****************************************************************************/ + +ACPI_STATUS +DtCompileSvkl ( + void **List) +{ + DT_FIELD **PFieldList = (DT_FIELD **) List; + DT_SUBTABLE *Subtable; + DT_SUBTABLE *ParentTable; + ACPI_STATUS Status; + + + /* Compile the main table */ + + Status = DtCompileTable (PFieldList, AcpiDmTableInfoSvkl, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + + /* Compile each subtable */ + + while (*PFieldList) + { + Status = DtCompileTable (PFieldList, AcpiDmTableInfoSvkl0, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + } + + return (AE_OK); +} + + /****************************************************************************** * * FUNCTION: DtCompileTcpa diff --git a/source/compiler/dttemplate.h b/source/compiler/dttemplate.h index fbe68ec9f8f1..224a6a111dc2 100644 --- a/source/compiler/dttemplate.h +++ b/source/compiler/dttemplate.h @@ -174,6 +174,16 @@ const unsigned char TemplateAsf[] = 0x01,0x00 /* 00000070 ".." */ }; +const unsigned char TemplateBdat[] = +{ + 0x42,0x44,0x41,0x54,0x30,0x00,0x00,0x00, /* 00000000 "BDAT0..." */ + 0x01,0xED,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ + 0x54,0x65,0x6D,0x70,0x6C,0x61,0x74,0x65, /* 00000010 "Template" */ + 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ + 0x31,0x03,0x21,0x20,0x01,0x08,0x00,0x01, /* 00000020 "1.! ...." */ + 0xF0,0xDE,0xBC,0x9A,0x78,0x56,0x34,0x12 /* 00000028 "....xV4." */ +}; + const unsigned char TemplateBgrt[] = { 0x42,0x47,0x52,0x54,0x38,0x00,0x00,0x00, /* 00000000 "BGRT8..." */ @@ -794,30 +804,72 @@ const unsigned char TemplateIort[] = const unsigned char TemplateIvrs[] = { - 0x49,0x56,0x52,0x53,0xBC,0x00,0x00,0x00, /* 00000000 "IVRS...." */ - 0x01,0x87,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ + 0x49,0x56,0x52,0x53,0x10,0x02,0x00,0x00, /* 00000000 "IVRS...." */ + 0x02,0x6C,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 ".lINTEL " */ 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ - 0x28,0x05,0x10,0x20,0x00,0x00,0x00,0x00, /* 00000020 "(.. ...." */ + 0x31,0x03,0x21,0x20,0x41,0x30,0x20,0x00, /* 00000020 "1.! A0 ." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000028 "........" */ - 0x10,0x14,0x34,0x00,0x00,0x00,0x00,0x00, /* 00000030 "..4....." */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000038 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000040 "........" */ - 0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00, /* 00000048 "....@..." */ - 0x00,0x00,0x00,0x00,0x42,0x00,0x00,0x00, /* 00000050 "....B..." */ - 0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00, /* 00000058 "....H..." */ - 0x00,0x00,0x00,0x00,0x20,0x08,0x20,0x00, /* 00000060 ".... . ." */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000068 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000070 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000078 "........" */ - 0x00,0x00,0x00,0x00,0x21,0x04,0x20,0x00, /* 00000080 "....!. ." */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000088 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000090 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000098 "........" */ - 0x00,0x00,0x00,0x00,0x10,0x14,0x18,0x00, /* 000000A0 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000A8 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000B0 "........" */ - 0x00,0x00,0x00,0x00 /* 000000B8 "...." */ + 0x10,0xB0,0x64,0x00,0x02,0x00,0x40,0x00, /* 00000030 "..d...@." */ + 0x00,0x00,0xF0,0xFD,0x00,0x00,0x00,0x00, /* 00000038 "........" */ + 0x00,0x00,0x00,0x00,0x6F,0x8F,0x04,0x80, /* 00000040 "....o..." */ + 0x03,0x08,0x00,0x00,0x01,0x08,0x00,0x00, /* 00000048 "........" */ + 0x02,0x08,0x00,0x00,0x04,0xFE,0xFF,0x00, /* 00000050 "........" */ + 0x42,0x00,0xFF,0x00,0x00,0xA5,0x00,0x00, /* 00000058 "B......." */ + 0x43,0x00,0xFF,0x00,0x00,0xA5,0x00,0x00, /* 00000060 "C......." */ + 0x46,0x00,0xFF,0x00,0x44,0x33,0x22,0x11, /* 00000068 "F...D3"." */ + 0x47,0x00,0xFF,0x00,0x44,0x33,0x22,0x11, /* 00000070 "G...D3"." */ + 0x04,0xFF,0xFF,0x00,0x48,0x00,0x00,0x00, /* 00000078 "....H..." */ + 0x00,0xA0,0x00,0x02,0x48,0x00,0x00,0xD7, /* 00000080 "....H..." */ + 0x21,0xA0,0x00,0x01,0x48,0x00,0x00,0x00, /* 00000088 "!...H..." */ + 0x22,0x01,0x00,0x01,0x11,0xB0,0x48,0x00, /* 00000090 "".....H." */ + 0x02,0x00,0x40,0x00,0x00,0x00,0xF0,0xFD, /* 00000098 "..@....." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000A0 "........" */ + 0x00,0x02,0x04,0x00,0xDE,0x4A,0x25,0x22, /* 000000A8 ".....J%"" */ + 0xEF,0x73,0x6D,0x20,0x00,0x00,0x00,0x00, /* 000000B0 ".sm ...." */ + 0x00,0x00,0x00,0x00,0x03,0x08,0x00,0x00, /* 000000B8 "........" */ + 0x04,0xFE,0xFF,0x00,0x43,0x00,0xFF,0x00, /* 000000C0 "....C..." */ + 0x00,0xA5,0x00,0x00,0x04,0xFF,0xFF,0x00, /* 000000C8 "........" */ + 0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00, /* 000000D0 "....H..." */ + 0x00,0xA0,0x00,0x02,0x40,0xB0,0xD4,0x00, /* 000000D8 "....@..." */ + 0x02,0x00,0x40,0x00,0x00,0x00,0xF0,0xFD, /* 000000E0 "..@....." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000E8 "........" */ + 0x00,0x02,0x04,0x00,0xDE,0x4A,0x25,0x22, /* 000000F0 ".....J%"" */ + 0xEF,0x73,0x6D,0x20,0x00,0x00,0x00,0x00, /* 000000F8 ".sm ...." */ + 0x00,0x00,0x00,0x00,0x03,0x08,0x00,0x00, /* 00000100 "........" */ + 0x04,0xFE,0xFF,0x00,0x43,0x00,0xFF,0x00, /* 00000108 "....C..." */ + 0x00,0xA5,0x00,0x00,0x04,0xFF,0xFF,0x00, /* 00000110 "........" */ + 0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00, /* 00000118 "....H..." */ + 0x00,0xA0,0x00,0x02,0x48,0x00,0x00,0xD7, /* 00000120 "....H..." */ + 0x21,0xA0,0x00,0x01,0x48,0x00,0x00,0x00, /* 00000128 "!...H..." */ + 0x22,0x01,0x00,0x01,0xF0,0xA5,0x00,0x40, /* 00000130 ""......@" */ + 0x49,0x4E,0x54,0x43,0x30,0x30,0x32,0x30, /* 00000138 "INTC0020" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000140 "........" */ + 0x02,0x09,0x5C,0x5F,0x53,0x42,0x2E,0x44, /* 00000148 "..\_SB.D" */ + 0x45,0x56,0x30,0xF0,0xA5,0x00,0x40,0x49, /* 00000150 "EV0...@I" */ + 0x4E,0x54,0x43,0x30,0x30,0x32,0x30,0x00, /* 00000158 "NTC0020." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02, /* 00000160 "........" */ + 0x09,0x5C,0x5F,0x53,0x42,0x2E,0x44,0x45, /* 00000168 ".\_SB.DE" */ + 0x56,0x31,0xF0,0xA5,0x00,0x40,0x49,0x4E, /* 00000170 "V1...@IN" */ + 0x54,0x43,0x30,0x30,0x32,0x30,0x00,0x00, /* 00000178 "TC0020.." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x09, /* 00000180 "........" */ + 0x5C,0x5F,0x53,0x42,0x2E,0x44,0x45,0x56, /* 00000188 "\_SB.DEV" */ + 0x32,0xF0,0xA5,0x00,0x40,0x49,0x4E,0x54, /* 00000190 "2...@INT" */ + 0x43,0x30,0x30,0x32,0x30,0x00,0x00,0x00, /* 00000198 "C0020..." */ + 0x00,0x00,0x00,0x00,0x00,0x02,0x09,0x5C, /* 000001A0 ".......\" */ + 0x5F,0x53,0x42,0x2E,0x44,0x45,0x56,0x33, /* 000001A8 "_SB.DEV3" */ + 0x20,0x0D,0x20,0x00,0x22,0x11,0x00,0x00, /* 000001B0 " . ."..." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001B8 "........" */ + 0xCD,0xAB,0x78,0x56,0x34,0x12,0x00,0x00, /* 000001C0 "..xV4..." */ + 0xDC,0xFE,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001C8 "........" */ + 0x21,0x0D,0x20,0x00,0x22,0x11,0x00,0x00, /* 000001D0 "!. ."..." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001D8 "........" */ + 0xCD,0xAB,0x78,0x56,0x34,0x12,0x00,0x00, /* 000001E0 "..xV4..." */ + 0xDC,0xFE,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001E8 "........" */ + 0x22,0x0D,0x20,0x00,0x22,0x11,0x00,0x00, /* 000001F0 "". ."..." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001F8 "........" */ + 0xCD,0xAB,0x78,0x56,0x34,0x12,0x00,0x00, /* 00000200 "..xV4..." */ + 0xDC,0xFE,0x00,0x00,0x00,0x00,0x00,0x00 /* 00000208 "........" */ }; const unsigned char TemplateLpit[] = @@ -1205,6 +1257,97 @@ const unsigned char TemplatePptt[] = 0x00,0x00 /* 00000070 ".." */ }; +const unsigned char TemplatePrmt[] = +{ + 0x50,0x52,0x4D,0x54,0xB8,0x02,0x00,0x00, /* 00000000 "PRMT...." */ + 0x00,0x13,0x4F,0x45,0x4D,0x43,0x41,0x20, /* 00000008 "..OEMCA " */ + 0x4F,0x45,0x4D,0x43,0x41,0x20,0x20,0x20, /* 00000010 "OEMCA " */ + 0x02,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ + 0x17,0x07,0x20,0x20,0xA5,0x61,0x6B,0xB6, /* 00000020 ".. .ak." */ + 0x01,0xA1,0x46,0xED,0xA6,0xA3,0xCA,0xC1, /* 00000028 "..F....." */ + 0xC4,0xD1,0x30,0x1E,0x3C,0x00,0x00,0x00, /* 00000030 "..0.<..." */ + 0x04,0x00,0x00,0x00,0x00,0x00,0xAA,0x00, /* 00000038 "........" */ + 0xC2,0xB3,0x52,0x16,0xA1,0xA7,0xAC,0x46, /* 00000040 "..R....F" */ + 0xAF,0x93,0xDD,0x6D,0xEE,0x44,0x66,0x69, /* 00000048 "...m.Dfi" */ + 0x01,0x00,0x00,0x00,0x03,0x00,0x26,0x00, /* 00000050 "......&." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000058 "........" */ + 0x00,0x00,0x00,0x00,0x2C,0x00,0x5F,0xAD, /* 00000060 "....,._." */ + 0xF2,0xD5,0x47,0xA3,0x3E,0x4D,0x87,0xBC, /* 00000068 "..G.>M.." */ + 0xC2,0xCE,0x63,0x02,0x9C,0xC8,0x90,0xC2, /* 00000070 "..c....." */ + 0x5E,0x8A,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000078 "^......." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000080 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000088 "........" */ + 0x2C,0x00,0xC3,0xAD,0xE7,0xA9,0xD0,0x8C, /* 00000090 ",......." */ + 0x9A,0x42,0x89,0x15,0x10,0x94,0x6E,0xBD, /* 00000098 ".B....n." */ + 0xE3,0x18,0xC0,0xC2,0x5E,0x8A,0x00,0x00, /* 000000A0 "....^..." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000A8 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000B0 "........" */ + 0x00,0x00,0x00,0x00,0x2C,0x00,0x14,0xC2, /* 000000B8 "....,..." */ + 0x88,0xB6,0x81,0x40,0xEB,0x4E,0x8D,0x26, /* 000000C0 "...@.N.&" */ + 0x1E,0xB5,0xA3,0xBC,0xF1,0x1A,0xF0,0xC2, /* 000000C8 "........" */ + 0x5E,0x8A,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000D0 "^......." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000D8 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000E0 "........" */ + 0x52,0x00,0xA6,0x58,0x2A,0xDC,0x27,0x59, /* 000000E8 "R..X*.'Y" */ + 0x76,0x47,0xB9,0x95,0xD1,0x18,0xA2,0x73, /* 000000F0 "vG.....s" */ + 0x35,0xA2,0x01,0x00,0x00,0x00,0x01,0x00, /* 000000F8 "5......." */ + 0x26,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000100 "&......." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x2C,0x00, /* 00000108 "......,." */ + 0x13,0x2D,0x4F,0x2E,0x40,0x62,0xD0,0x4E, /* 00000110 ".-O.@b.N" */ + 0xA4,0x01,0xC7,0x23,0xFB,0xDC,0x34,0xE8, /* 00000118 "...#..4." */ + 0x90,0x32,0x5E,0x8A,0x00,0x00,0x00,0x00, /* 00000120 ".2^....." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000128 "........" */ + 0xF8,0x7F,0x71,0x8A,0x00,0x00,0x00,0x00, /* 00000130 "..q....." */ + 0x00,0x00,0x2E,0x01,0xD7,0x3E,0xF9,0x0E, /* 00000138 ".....>.." */ + 0xAE,0x14,0x5B,0x42,0x92,0x8F,0xB8,0x5A, /* 00000140 "..[B...Z" */ + 0x62,0x13,0xB5,0x7E,0x01,0x00,0x00,0x00, /* 00000148 "b..~...." */ + 0x06,0x00,0x26,0x00,0x00,0x00,0xE0,0x3F, /* 00000150 "..&....?" */ + 0x71,0x8A,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000158 "q......." */ + 0x2C,0x00,0x3C,0xCD,0x20,0x21,0x8B,0x84, /* 00000160 ",.<. !.." */ + 0x8F,0x4D,0xAB,0xBB,0x4B,0x74,0xCE,0x64, /* 00000168 ".M..Kt.d" */ + 0xAC,0x89,0x4C,0xA6,0x5D,0x8A,0x00,0x00, /* 00000170 "..L.]..." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000178 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000180 "........" */ + 0x00,0x00,0x00,0x00,0x2C,0x00,0xA7,0x35, /* 00000188 "....,..5" */ + 0x09,0xEA,0x6B,0x50,0x59,0x41,0xBB,0xBB, /* 00000190 "..kPYA.." */ + 0x48,0xDE,0xEE,0xCB,0x6F,0x58,0x34,0xA7, /* 00000198 "H...oX4." */ + 0x5D,0x8A,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001A0 "]......." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001A8 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001B0 "........" */ + 0x2C,0x00,0xA9,0xBD,0xD1,0x1B,0x9A,0x90, /* 000001B8 ",......." */ + 0x14,0x46,0x96,0x99,0x25,0xEC,0x0C,0x27, /* 000001C0 ".F..%..'" */ + 0x83,0xF7,0x94,0xA7,0x5D,0x8A,0x00,0x00, /* 000001C8 "....]..." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001D0 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001D8 "........" */ + 0x00,0x00,0x00,0x00,0x2C,0x00,0xE7,0xB4, /* 000001E0 "....,..." */ + 0x28,0x5D,0x67,0x38,0xEE,0x4A,0xAA,0x09, /* 000001E8 "(]g8.J.." */ + 0x51,0xFC,0x28,0x2C,0x3B,0x22,0x9C,0xA6, /* 000001F0 "Q.(,;".." */ + 0x5D,0x8A,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001F8 "]......." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000200 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000208 "........" */ + 0x2C,0x00,0x02,0xB7,0x64,0x4B,0x2B,0x4D, /* 00000210 ",...dK+M" */ + 0xFE,0x4D,0xAC,0x5A,0x0B,0x41,0x10,0xA2, /* 00000218 ".M.Z.A.." */ + 0xCA,0x47,0x48,0xA7,0x5D,0x8A,0x00,0x00, /* 00000220 ".GH.]..." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000228 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000230 "........" */ + 0x00,0x00,0x00,0x00,0x2C,0x00,0xDE,0xFD, /* 00000238 "....,..." */ + 0x0E,0x8A,0xD0,0x78,0xF0,0x45,0xAE,0xA0, /* 00000240 "...x.E.." */ + 0xC2,0x82,0x45,0xC7,0xE1,0xDB,0x98,0xA7, /* 00000248 "..E....." */ + 0x5D,0x8A,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000250 "]......." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000258 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000260 "........" */ + 0x52,0x00,0x2B,0xF4,0x6C,0x5A,0xB4,0x8B, /* 00000268 "R.+.lZ.." */ + 0x2C,0x47,0xA2,0x33,0x5C,0x4D,0xC4,0x03, /* 00000270 ",G.3\M.." */ + 0x3D,0xC7,0x01,0x00,0x00,0x00,0x01,0x00, /* 00000278 "=......." */ + 0x26,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000280 "&......." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x2C,0x00, /* 00000288 "......,." */ + 0x81,0x60,0x46,0xE1,0x62,0x75,0x0F,0x43, /* 00000290 ".`F.bu.C" */ + 0x89,0x6B,0xB0,0xE5,0x23,0xDC,0x33,0x5A, /* 00000298 ".k..#.3Z" */ + 0x90,0x12,0x5D,0x8A,0x00,0x00,0x00,0x00, /* 000002A0 "..]....." */ + 0xE0,0x5F,0x71,0x8A,0x00,0x00,0x00,0x00, /* 000002A8 "._q....." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 /* 000002B0 "........" */ +}; + const unsigned char TemplateRasf[] = { 0x52,0x41,0x53,0x46,0x30,0x00,0x00,0x00, /* 00000000 "RASF0..." */ @@ -1215,6 +1358,20 @@ const unsigned char TemplateRasf[] = 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 /* 00000028 "........" */ }; +const unsigned char TemplateRgrt[] = +{ + 0x52,0x47,0x52,0x54,0x50,0x00,0x00,0x00, /* 00000000 "RGRTP..." */ + 0x01,0x33,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 ".3INTEL " */ + 0x54,0x65,0x6D,0x70,0x6C,0x61,0x74,0x65, /* 00000010 "Template" */ + 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ + 0x31,0x03,0x21,0x20,0x01,0x00,0x01,0x00, /* 00000020 "1.! ...." */ + 0xAA,0x01,0x02,0x03,0x04,0x05,0x06,0x07, /* 00000028 "........" */ + 0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, /* 00000030 "........" */ + 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, /* 00000038 "........" */ + 0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, /* 00000040 "........" */ + 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27 /* 00000048 " !"#$%&'" */ +}; + const unsigned char TemplateRsdp[] = { 0x52,0x53,0x44,0x20,0x50,0x54,0x52,0x20, /* 00000000 "RSD PTR " */ @@ -1475,6 +1632,19 @@ const unsigned char TemplateStao[] = 0x31,0x2E,0x50,0x54,0x31,0x00 /* 00000078 "1.PT1." */ }; +const unsigned char TemplateSvkl[] = +{ + 0x53,0x56,0x4B,0x4C,0x48,0x00,0x00,0x00, /* 00000000 "SVKLH..." */ + 0x04,0xDB,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ + 0x54,0x65,0x6D,0x70,0x6C,0x61,0x74,0x65, /* 00000010 "Template" */ + 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ + 0x31,0x03,0x21,0x20,0x02,0x00,0x00,0x00, /* 00000020 "1.! ...." */ + 0x00,0x00,0x00,0x00,0x21,0x43,0xAA,0xAA, /* 00000028 "....!C.." */ + 0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01, /* 00000030 "....gE#." */ + 0x00,0x00,0x00,0x00,0x21,0x43,0xBB,0xBB, /* 00000038 "....!C.." */ + 0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01 /* 00000040 "....gE#." */ +}; + const unsigned char TemplateTcpa[] = { 0x54,0x43,0x50,0x41,0x64,0x00,0x00,0x00, /* 00000000 "TCPAd..." */ diff --git a/source/compiler/dtutils.c b/source/compiler/dtutils.c index d69ad2fbce33..ba454b31e4fa 100644 --- a/source/compiler/dtutils.c +++ b/source/compiler/dtutils.c @@ -426,6 +426,7 @@ DtGetFieldType ( case ACPI_DMT_NAME6: case ACPI_DMT_NAME8: case ACPI_DMT_STRING: + case ACPI_DMT_IVRS_UNTERMINATED_STRING: Type = DT_FIELD_TYPE_STRING; break; @@ -576,11 +577,13 @@ DtGetFieldLength ( case ACPI_DMT_ACCWIDTH: case ACPI_DMT_CEDT: case ACPI_DMT_IVRS: + case ACPI_DMT_IVRS_DE: case ACPI_DMT_GTDT: case ACPI_DMT_MADT: case ACPI_DMT_PCCT: case ACPI_DMT_PMTT: case ACPI_DMT_PPTT: + case ACPI_DMT_RGRT: case ACPI_DMT_SDEV: case ACPI_DMT_SRAT: case ACPI_DMT_ASF: @@ -660,6 +663,22 @@ DtGetFieldLength ( } break; + case ACPI_DMT_IVRS_UNTERMINATED_STRING: + + Value = DtGetFieldValue (Field); + if (Value) + { + ByteLength = strlen (Value); + } + else + { /* At this point, this is a fatal error */ + + sprintf (AslGbl_MsgBuffer, "Expected \"%s\"", Info->Name); + DtFatal (ASL_MSG_COMPILER_INTERNAL, NULL, AslGbl_MsgBuffer); + return (0); + } + break; + case ACPI_DMT_GAS: ByteLength = sizeof (ACPI_GENERIC_ADDRESS); |