aboutsummaryrefslogtreecommitdiff
path: root/source/compiler
diff options
context:
space:
mode:
authorJung-uk Kim <jkim@FreeBSD.org>2021-06-05 04:00:36 +0000
committerJung-uk Kim <jkim@FreeBSD.org>2021-06-05 04:00:36 +0000
commit395770967c3664ec744e63fa47acc19670d32f47 (patch)
tree6a701012d1331dfbfec29593ea35eeb600a2d6c8 /source/compiler
parent1e02e5b0ba8634758c128dcb43c67342c7219cd4 (diff)
downloadsrc-395770967c3664ec744e63fa47acc19670d32f47.tar.gz
src-395770967c3664ec744e63fa47acc19670d32f47.zip
Import ACPICA 20210604vendor/acpica/20210604
Diffstat (limited to 'source/compiler')
-rw-r--r--source/compiler/aslcompiler.h4
-rw-r--r--source/compiler/aslmessages.c6
-rw-r--r--source/compiler/aslmessages.h4
-rw-r--r--source/compiler/aslutils.c40
-rw-r--r--source/compiler/asluuid.c47
-rw-r--r--source/compiler/dtcompiler.h16
-rw-r--r--source/compiler/dtfield.c4
-rw-r--r--source/compiler/dtio.c6
-rw-r--r--source/compiler/dttable1.c274
-rw-r--r--source/compiler/dttable2.c169
-rw-r--r--source/compiler/dttemplate.h212
-rw-r--r--source/compiler/dtutils.c19
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);