diff options
Diffstat (limited to 'source/compiler')
25 files changed, 959 insertions, 208 deletions
diff --git a/source/compiler/aslallocate.c b/source/compiler/aslallocate.c index 4007687b2326..8be711b2c017 100644 --- a/source/compiler/aslallocate.c +++ b/source/compiler/aslallocate.c @@ -153,7 +153,7 @@ /* * Local heap allocation wrappers. See aslcache.c for allocation from local - * cache alloctions + * cache allocations */ diff --git a/source/compiler/aslascii.c b/source/compiler/aslascii.c index d02ca80cb815..0e8c4d4e0f40 100644 --- a/source/compiler/aslascii.c +++ b/source/compiler/aslascii.c @@ -184,7 +184,7 @@ FlConsumeNewComment ( * not handle comment delimiters within string literals. However, * on the rare chance this happens and an invalid character is * missed, the parser will catch the error by failing in some - * spectactular manner. + * spectacular manner. * ******************************************************************************/ @@ -216,7 +216,7 @@ FlIsFileAsciiSource ( while (fread (&Byte, 1, 1, Handle) == 1) { - /* Ignore comment fields (allow non-ascii within) */ + /* Ignore comment fields (allow non-ASCII within) */ if (OpeningComment) { diff --git a/source/compiler/aslcompiler.h b/source/compiler/aslcompiler.h index 3cd56d1f36b8..e48e4674c1e5 100644 --- a/source/compiler/aslcompiler.h +++ b/source/compiler/aslcompiler.h @@ -1539,6 +1539,10 @@ RsDoUartSerialBusDescriptor ( ASL_RESOURCE_INFO *Info); ASL_RESOURCE_NODE * +RsDoCsi2SerialBusDescriptor ( + ASL_RESOURCE_INFO *Info); + +ASL_RESOURCE_NODE * RsDoPinFunctionDescriptor ( ASL_RESOURCE_INFO *Info); diff --git a/source/compiler/aslcompiler.l b/source/compiler/aslcompiler.l index 629b99727366..e0985362fb94 100644 --- a/source/compiler/aslcompiler.l +++ b/source/compiler/aslcompiler.l @@ -434,6 +434,7 @@ NamePathTail [.]{NameSeg} "ResourceTemplate" { count (1); return (PARSEOP_RESOURCETEMPLATE); } "RawDataBuffer" { count (1); return (PARSEOP_DATABUFFER); } +"Csi2Bus" { count (1); return (PARSEOP_CSI2_SERIALBUS); } "DMA" { count (1); return (PARSEOP_DMA); } "DWordIO" { count (1); return (PARSEOP_DWORDIO); } "DWordMemory" { count (1); return (PARSEOP_DWORDMEMORY); } diff --git a/source/compiler/aslerror.c b/source/compiler/aslerror.c index 6c684f2f2b53..d73d7de903a1 100644 --- a/source/compiler/aslerror.c +++ b/source/compiler/aslerror.c @@ -1125,7 +1125,7 @@ void AslCheckExpectedExceptions ( void) { - UINT8 i; + UINT32 i; ASL_EXPECTED_MSG_NODE *Current = AslGbl_ExpectedErrorCodeList; ASL_LOCATION_NODE *LocationNode; @@ -1188,7 +1188,7 @@ AslLogExpectedException ( if (MessageId > 6999) { - printf ("\"%s\" is not a valid warning/remark/erro ID\n", + printf ("\"%s\" is not a valid warning/remark/error ID\n", MessageIdString); return (AE_BAD_PARAMETER); } @@ -1336,7 +1336,7 @@ AslElevateException ( if (MessageId > 6999) { - printf ("\"%s\" is not a valid warning/remark/erro ID\n", + printf ("\"%s\" is not a valid warning/remark/error ID\n", MessageIdString); return (AE_BAD_PARAMETER); } diff --git a/source/compiler/aslhelpers.y b/source/compiler/aslhelpers.y index 0b3029046931..abb729c33320 100644 --- a/source/compiler/aslhelpers.y +++ b/source/compiler/aslhelpers.y @@ -360,6 +360,11 @@ OptionalSlaveMode | ',' SlaveModeKeyword {$$ = $2;} ; +OptionalSlaveMode_First + : {$$ = NULL;} + | SlaveModeKeyword {$$ = $1;} + ; + OptionalShareType : {$$ = NULL;} | ',' {$$ = NULL;} diff --git a/source/compiler/aslmap.c b/source/compiler/aslmap.c index ed27a155c809..7b591bc6e8fa 100644 --- a/source/compiler/aslmap.c +++ b/source/compiler/aslmap.c @@ -346,6 +346,7 @@ const ASL_MAPPING_ENTRY AslKeywordMapping [] = /* FUNCTION */ OP_TABLE_ENTRY (AML_METHOD_OP, 0, OP_AML_PACKAGE, 0), /* GPIOINT */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), /* GPIOIO */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), +/* CSI2SERIALBUS */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), /* I2CSERIALBUS */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), /* I2CSERIALBUSV2 */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), /* IF */ OP_TABLE_ENTRY (AML_IF_OP, 0, OP_AML_PACKAGE, 0), diff --git a/source/compiler/aslmessages.c b/source/compiler/aslmessages.c index 87ebc48e4394..c969764508c0 100644 --- a/source/compiler/aslmessages.c +++ b/source/compiler/aslmessages.c @@ -384,7 +384,8 @@ const char *AslCompilerMsgs [] = /* ASL_MSG_EXTERNAL_FOUND_HERE */ "External declaration below ", /* ASL_MSG_LOWER_CASE_NAMESEG */ "At least one lower case letter found in NameSeg, ASL is case insensitive - converting to upper case", /* ASL_MSG_LOWER_CASE_NAMEPATH */ "At least one lower case letter found in NamePath, ASL is case insensitive - converting to upper case", -/* ASL_MSG_UUID_NOT_FOUND */ "Unknown UUID string" +/* ASL_MSG_UUID_NOT_FOUND */ "Unknown UUID string", +/* ASL_MSG_LEGACY_DDB_TYPE */ "DDBHandleObj has been deprecated along with the Unload operator. DDBHandlObj objects are only used in Unload" }; /* Table compiler */ diff --git a/source/compiler/aslmessages.h b/source/compiler/aslmessages.h index a4842cdf2166..1d9f7becb12d 100644 --- a/source/compiler/aslmessages.h +++ b/source/compiler/aslmessages.h @@ -389,6 +389,7 @@ typedef enum ASL_MSG_LOWER_CASE_NAMESEG, ASL_MSG_LOWER_CASE_NAMEPATH, ASL_MSG_UUID_NOT_FOUND, + ASL_MSG_LEGACY_DDB_TYPE, /* These messages are used by the Data Table compiler only */ diff --git a/source/compiler/aslnamesp.c b/source/compiler/aslnamesp.c index 7dc9ed7e5152..6f9bb65a4d6c 100644 --- a/source/compiler/aslnamesp.c +++ b/source/compiler/aslnamesp.c @@ -519,7 +519,8 @@ NsDoOneNamespaceObject ( * * RETURN: Status * - * DESCRIPTION: Print the full pathname and addtional info for a namespace node. + * DESCRIPTION: Print the full pathname and additional info for a namespace + * node. * ******************************************************************************/ diff --git a/source/compiler/aslopcodes.c b/source/compiler/aslopcodes.c index f5cb02146066..2f2c77446c22 100644 --- a/source/compiler/aslopcodes.c +++ b/source/compiler/aslopcodes.c @@ -676,7 +676,7 @@ OpcDoUnicode ( * Bits 4-0 - 3rd character of mfg code * Byte 2: Bits 7-4 - 1st hex digit of product number * Bits 3-0 - 2nd hex digit of product number - * Byte 3: Bits 7-4 - 3st hex digit of product number + * Byte 3: Bits 7-4 - 3rd hex digit of product number * Bits 3-0 - Hex digit of the revision number * ******************************************************************************/ diff --git a/source/compiler/asloperands.c b/source/compiler/asloperands.c index bd4a4d8579fd..ae3b918dffda 100644 --- a/source/compiler/asloperands.c +++ b/source/compiler/asloperands.c @@ -1090,7 +1090,7 @@ OpnDoDefinitionBlock ( * Use the definition block file parameter instead of the input * filename. Since all files were opened previously, remove the * existing file and open a new file with the name of this - * definiton block parameter. Since AML code generation has yet + * definition block parameter. Since AML code generation has yet * to happen, the previous file can be removed without any impacts. */ FlCloseFile (ASL_FILE_AML_OUTPUT); diff --git a/source/compiler/aslparser.y b/source/compiler/aslparser.y index c91acedf9f38..0a6fb64d62d8 100644 --- a/source/compiler/aslparser.y +++ b/source/compiler/aslparser.y @@ -208,7 +208,7 @@ AslLocalAllocate ( * These shift/reduce conflicts are expected. There should be zero * reduce/reduce conflicts. */ -%expect 124 +%expect 127 /*! [Begin] no source code translation */ diff --git a/source/compiler/aslprintf.c b/source/compiler/aslprintf.c index 62d411e16c59..04f2d31eaee5 100644 --- a/source/compiler/aslprintf.c +++ b/source/compiler/aslprintf.c @@ -352,7 +352,7 @@ OpcParsePrintf ( /* * Append an empty string if the first argument is - * not a string. This will implicitly conver the 2nd + * not a string. This will implicitly convert the 2nd * concat source to a string per the ACPI specification. */ if (!Op->Asl.Child) diff --git a/source/compiler/aslresource.c b/source/compiler/aslresource.c index 434a74c68843..a2d855684d6b 100644 --- a/source/compiler/aslresource.c +++ b/source/compiler/aslresource.c @@ -990,6 +990,11 @@ RsDoOneResourceDescriptor ( Rnode = RsDoUartSerialBusDescriptor (Info); break; + case PARSEOP_CSI2_SERIALBUS: + + Rnode = RsDoCsi2SerialBusDescriptor (Info); + break; + case PARSEOP_PINCONFIG: Rnode = RsDoPinConfigDescriptor (Info); diff --git a/source/compiler/aslresources.y b/source/compiler/aslresources.y index 00a0958b3a93..86c8981f79b6 100644 --- a/source/compiler/aslresources.y +++ b/source/compiler/aslresources.y @@ -190,7 +190,8 @@ ResourceMacroList ; ResourceMacroTerm - : DMATerm {} + : Csi2SerialBusTerm {} + | DMATerm {} | DWordIOTerm {} | DWordMemoryTerm {} | DWordSpaceTerm {} @@ -233,6 +234,23 @@ ResourceMacroTerm | WordSpaceTerm {} ; +Csi2SerialBusTerm + : PARSEOP_CSI2_SERIALBUS + PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_CSI2_SERIALBUS);} + OptionalSlaveMode_First {UtCheckIntegerRange ($4, 0x00, 0x01);} /* 04: SlaveMode */ + ',' ByteConstExpr {UtCheckIntegerRange ($7, 0x00, 0x03);} /* 07: PhyType */ + OptionalByteConstExpr {UtCheckIntegerRange ($9, 0x00, 0xFC);} /* 09: LocalPortInstance */ + ',' StringData /* 12: ResourceSource */ + ',' ByteConstExpr /* 14: ResourceSourceIndex */ + OptionalResourceType /* 15; ResourceType (ResourceUsage) */ + OptionalNameString /* 16: DescriptorName */ + OptionalBuffer_Last /* 17: VendorData */ + PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,8, + $4,$7,$9,$12,$14,$15,$16,$17);} + | PARSEOP_CSI2_SERIALBUS + PARSEOP_OPEN_PAREN + error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;} + DMATerm : PARSEOP_DMA PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_DMA);} diff --git a/source/compiler/aslrestype2s.c b/source/compiler/aslrestype2s.c index 8539edea8c9e..607aca8be350 100644 --- a/source/compiler/aslrestype2s.c +++ b/source/compiler/aslrestype2s.c @@ -1389,6 +1389,142 @@ RsDoUartSerialBusDescriptor ( /******************************************************************************* * + * FUNCTION: RsDoCsi2SerialBusDescriptor + * + * PARAMETERS: Info - Parse Op and resource template offset + * + * RETURN: Completed resource node + * + * DESCRIPTION: Construct a long "Csi2SerialBus" descriptor + * + ******************************************************************************/ + +ASL_RESOURCE_NODE * +RsDoCsi2SerialBusDescriptor ( + ASL_RESOURCE_INFO *Info) +{ + AML_RESOURCE *Descriptor; + ACPI_PARSE_OBJECT *InitializerOp; + ASL_RESOURCE_NODE *Rnode; + char *ResourceSource = NULL; + UINT8 *VendorData = NULL; + UINT16 ResSourceLength; + UINT16 VendorLength; + UINT16 DescriptorSize; + UINT32 CurrentByteOffset; + UINT32 i; + + + InitializerOp = Info->DescriptorTypeOp->Asl.Child; + CurrentByteOffset = Info->CurrentByteOffset; + + /* + * Calculate lengths for fields that have variable length: + * 1) Resource Source string + * 2) Vendor Data buffer + */ + ResSourceLength = RsGetStringDataLength (InitializerOp); + VendorLength = RsGetBufferDataLength (InitializerOp); + + DescriptorSize = ACPI_AML_SIZE_LARGE (AML_RESOURCE_CSI2_SERIALBUS) + + ResSourceLength + VendorLength; + + /* Allocate the local resource node and initialize */ + + Rnode = RsAllocateResourceNode (DescriptorSize + + sizeof (AML_RESOURCE_LARGE_HEADER)); + + Descriptor = Rnode->Buffer; + Descriptor->Csi2SerialBus.ResourceLength = DescriptorSize; + Descriptor->Csi2SerialBus.DescriptorType = ACPI_RESOURCE_NAME_SERIAL_BUS; + Descriptor->Csi2SerialBus.RevisionId = AML_RESOURCE_CSI2_REVISION; + Descriptor->Csi2SerialBus.TypeRevisionId = AML_RESOURCE_CSI2_TYPE_REVISION; + Descriptor->Csi2SerialBus.Type = AML_RESOURCE_CSI2_SERIALBUSTYPE; + Descriptor->Csi2SerialBus.TypeDataLength = AML_RESOURCE_CSI2_MIN_DATA_LEN + VendorLength; + + /* Build pointers to optional areas */ + + VendorData = ACPI_ADD_PTR (UINT8, Descriptor, sizeof (AML_RESOURCE_CSI2_SERIALBUS)); + ResourceSource = ACPI_ADD_PTR (char, VendorData, VendorLength); + + /* Process all child initialization nodes */ + + for (i = 0; InitializerOp; i++) + { + switch (i) + { + case 0: /* Slave Mode [Flag] (_SLV) */ + + RsSetFlagBits (&Descriptor->Csi2SerialBus.Flags, InitializerOp, 0, 0); + RsCreateBitField (InitializerOp, ACPI_RESTAG_SLAVEMODE, + CurrentByteOffset + ASL_RESDESC_OFFSET (I2cSerialBus.Flags), 0); + break; + + case 1: /* Phy Type [Flag] (_PHY) */ + + RsSetFlagBits16 ((UINT16 *) &Descriptor->Csi2SerialBus.TypeSpecificFlags, InitializerOp, 0, 0); + RsCreateBitField (InitializerOp, ACPI_RESTAG_PHYTYPE, + CurrentByteOffset + ASL_RESDESC_OFFSET (Csi2SerialBus.TypeSpecificFlags), 0); + break; + + case 2: /* Local Port Instance [Integer] (_PRT) */ + + RsSetFlagBits16 ((UINT16 *) &Descriptor->Csi2SerialBus.TypeSpecificFlags, InitializerOp, 0, 0); + RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_LOCALPORT, + CurrentByteOffset + ASL_RESDESC_OFFSET (Csi2SerialBus.TypeSpecificFlags), 2, 6); + break; + + case 3: /* ResSource [Optional Field - STRING] */ + + if (ResSourceLength) + { + /* Copy string to the descriptor */ + + strcpy (ResourceSource, + InitializerOp->Asl.Value.String); + } + break; + + case 4: /* Resource Index */ + + if (InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) + { + Descriptor->Csi2SerialBus.ResSourceIndex = + (UINT8) InitializerOp->Asl.Value.Integer; + } + break; + + case 5: /* Resource Usage (consumer/producer) */ + + RsSetFlagBits (&Descriptor->Csi2SerialBus.Flags, InitializerOp, 1, 1); + break; + + case 6: /* Resource Tag (Descriptor Name) */ + + UtAttachNamepathToOwner (Info->DescriptorTypeOp, InitializerOp); + break; + + case 7: /* Vendor Data (Optional - Buffer of BYTEs) (_VEN) */ + + RsGetVendorData (InitializerOp, VendorData, + CurrentByteOffset + sizeof (AML_RESOURCE_CSI2_SERIALBUS)); + break; + + default: /* Ignore any extra nodes */ + + break; + } + + InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); + } + + MpSaveSerialInfo (Info->MappingOp, Descriptor, ResourceSource); + return (Rnode); +} + + +/******************************************************************************* + * * FUNCTION: RsDoPinFunctionDescriptor * * PARAMETERS: Info - Parse Op and resource template offset diff --git a/source/compiler/asltokens.y b/source/compiler/asltokens.y index 788f4b8ca084..5e205e01de3c 100644 --- a/source/compiler/asltokens.y +++ b/source/compiler/asltokens.y @@ -283,6 +283,7 @@ NoEcho(' %token <i> PARSEOP_FUNCTION %token <i> PARSEOP_GPIO_INT %token <i> PARSEOP_GPIO_IO +%token <i> PARSEOP_CSI2_SERIALBUS %token <i> PARSEOP_I2C_SERIALBUS %token <i> PARSEOP_I2C_SERIALBUS_V2 %token <i> PARSEOP_IF diff --git a/source/compiler/asltransform.c b/source/compiler/asltransform.c index dcab8b39c40a..91655420fee8 100644 --- a/source/compiler/asltransform.c +++ b/source/compiler/asltransform.c @@ -541,6 +541,11 @@ TrTransformSubtree ( AslError (ASL_WARNING, ASL_MSG_LEGACY_PROCESSOR_OP, Op, Op->Asl.ExternalName); break; + case PARSEOP_OBJECTTYPE_DDB: + + AslError (ASL_WARNING, ASL_MSG_LEGACY_DDB_TYPE, Op, Op->Asl.ExternalName); + break; + default: /* Nothing to do here for other opcodes */ diff --git a/source/compiler/asltypes.y b/source/compiler/asltypes.y index b68ca665b38b..aaa732f4dc45 100644 --- a/source/compiler/asltypes.y +++ b/source/compiler/asltypes.y @@ -410,6 +410,7 @@ NoEcho(' /* Resource Descriptors */ %type <n> ConnectionTerm +%type <n> Csi2SerialBusTerm %type <n> DMATerm %type <n> DWordIOTerm %type <n> DWordMemoryTerm @@ -501,6 +502,7 @@ NoEcho(' %type <n> OptionalShareType %type <n> OptionalShareType_First %type <n> OptionalSlaveMode +%type <n> OptionalSlaveMode_First %type <n> OptionalStopBits %type <n> OptionalStringData %type <n> OptionalSyncLevel diff --git a/source/compiler/dtcompiler.h b/source/compiler/dtcompiler.h index 7bc403ebb4b9..f2d006440d8e 100644 --- a/source/compiler/dtcompiler.h +++ b/source/compiler/dtcompiler.h @@ -574,6 +574,10 @@ DtCompileCpep ( void **PFieldList); ACPI_STATUS +DtCompileCedt ( + void **PFieldList); + +ACPI_STATUS DtCompileCsrt ( void **PFieldList); @@ -658,6 +662,10 @@ DtCompilePdtt ( void **PFieldList); ACPI_STATUS +DtCompilePhat ( + void **PFieldList); + +ACPI_STATUS DtCompilePmtt ( void **PFieldList); @@ -706,6 +714,10 @@ DtCompileUefi ( void **PFieldList); ACPI_STATUS +DtCompileViot ( + void **PFieldList); + +ACPI_STATUS DtCompileWdat ( void **PFieldList); @@ -733,6 +745,7 @@ extern const unsigned char TemplateAsf[]; extern const unsigned char TemplateBoot[]; extern const unsigned char TemplateBert[]; extern const unsigned char TemplateBgrt[]; +extern const unsigned char TemplateCedt[]; extern const unsigned char TemplateCpep[]; extern const unsigned char TemplateCsrt[]; extern const unsigned char TemplateDbg2[]; @@ -760,6 +773,7 @@ extern const unsigned char TemplateMsdm[]; extern const unsigned char TemplateNfit[]; extern const unsigned char TemplatePcct[]; extern const unsigned char TemplatePdtt[]; +extern const unsigned char TemplatePhat[]; extern const unsigned char TemplatePmtt[]; extern const unsigned char TemplatePptt[]; extern const unsigned char TemplateRasf[]; @@ -777,6 +791,7 @@ extern const unsigned char TemplateStao[]; extern const unsigned char TemplateTcpa[]; extern const unsigned char TemplateTpm2[]; extern const unsigned char TemplateUefi[]; +extern const unsigned char TemplateViot[]; extern const unsigned char TemplateWaet[]; extern const unsigned char TemplateWdat[]; extern const unsigned char TemplateWddt[]; diff --git a/source/compiler/dttable1.c b/source/compiler/dttable1.c index 286ecaa7fee8..458a71743cf8 100644 --- a/source/compiler/dttable1.c +++ b/source/compiler/dttable1.c @@ -344,6 +344,80 @@ DtCompileAsf ( /****************************************************************************** * + * FUNCTION: DtCompileCedt + * + * PARAMETERS: List - Current field list pointer + * + * RETURN: Status + * + * DESCRIPTION: Compile CEDT. + * + *****************************************************************************/ + +ACPI_STATUS +DtCompileCedt ( + void **List) +{ + ACPI_STATUS Status; + DT_SUBTABLE *Subtable; + DT_SUBTABLE *ParentTable; + DT_FIELD **PFieldList = (DT_FIELD **) List; + ACPI_CEDT_HEADER *CedtHeader; + DT_FIELD *SubtableStart; + + + /* Walk the parse tree */ + + while (*PFieldList) + { + SubtableStart = *PFieldList; + + /* CEDT Header */ + + Status = DtCompileTable (PFieldList, AcpiDmTableInfoCedtHdr, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + DtPushSubtable (Subtable); + + CedtHeader = ACPI_CAST_PTR (ACPI_CEDT_HEADER, Subtable->Buffer); + + switch (CedtHeader->Type) + { + case ACPI_CEDT_TYPE_CHBS: + + break; + + default: + + DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "CEDT"); + return (AE_ERROR); + } + + /* CEDT Subtable */ + + Status = DtCompileTable (PFieldList, AcpiDmTableInfoCedt0, &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + DtPopSubtable (); + } + + return (AE_OK); +} + + +/****************************************************************************** + * * FUNCTION: DtCompileCpep * * PARAMETERS: List - Current field list pointer @@ -1582,10 +1656,12 @@ DtCompileIort ( DT_SUBTABLE *ParentTable; DT_FIELD **PFieldList = (DT_FIELD **) List; DT_FIELD *SubtableStart; + ACPI_TABLE_HEADER *Table; ACPI_TABLE_IORT *Iort; ACPI_IORT_NODE *IortNode; ACPI_IORT_ITS_GROUP *IortItsGroup; ACPI_IORT_SMMU *IortSmmu; + ACPI_IORT_RMR *IortRmr; UINT32 NodeNumber; UINT32 NodeLength; UINT32 IdMappingNumber; @@ -1593,6 +1669,8 @@ DtCompileIort ( UINT32 ContextIrptNumber; UINT32 PmuIrptNumber; UINT32 PaddingLength; + UINT8 Revision; + UINT32 RmrCount; ParentTable = DtPeekSubtable (); @@ -1605,6 +1683,17 @@ DtCompileIort ( } DtInsertSubtable (ParentTable, Subtable); + Table = ACPI_CAST_PTR (ACPI_TABLE_HEADER, ParentTable->Buffer); + Revision = Table->Revision; + + /* Both IORT Rev E and E.a have known issues and are not supported */ + + if (Revision == 1 || Revision == 2) + { + DtError (ASL_ERROR, ASL_MSG_UNSUPPORTED, NULL, "IORT table revision"); + return (AE_ERROR); + } + /* * Using ACPI_SUB_PTR, We needn't define a separate structure. Care * should be taken to avoid accessing ACPI_TABLE_HEADER fields. @@ -1645,8 +1734,17 @@ DtCompileIort ( while (*PFieldList) { SubtableStart = *PFieldList; - Status = DtCompileTable (PFieldList, AcpiDmTableInfoIortHdr, - &Subtable); + if (Revision == 0) + { + Status = DtCompileTable (PFieldList, AcpiDmTableInfoIortHdr, + &Subtable); + } + else if (Revision >= 3) + { + Status = DtCompileTable (PFieldList, AcpiDmTableInfoIortHdr3, + &Subtable); + } + if (ACPI_FAILURE (Status)) { return (Status); @@ -1864,7 +1962,46 @@ DtCompileIort ( NodeLength += Subtable->Length; break; - default: + case ACPI_IORT_NODE_RMR: + + Status = DtCompileTable (PFieldList, AcpiDmTableInfoIort6, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + DtInsertSubtable (ParentTable, Subtable); + IortRmr = ACPI_CAST_PTR (ACPI_IORT_RMR, Subtable->Buffer); + NodeLength += Subtable->Length; + + /* Compile RMR Descriptors */ + + RmrCount = 0; + IortRmr->RmrOffset = NodeLength; + while (*PFieldList) + { + Status = DtCompileTable (PFieldList, AcpiDmTableInfoIort6a, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + if (!Subtable) + { + break; + } + + DtInsertSubtable (ParentTable, Subtable); + NodeLength += sizeof (ACPI_IORT_RMR_DESC); + RmrCount++; + } + + IortRmr->RmrCount = RmrCount; + break; + + default: DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "IORT"); return (AE_ERROR); diff --git a/source/compiler/dttable2.c b/source/compiler/dttable2.c index 732635bf4751..f6efcf3d940b 100644 --- a/source/compiler/dttable2.c +++ b/source/compiler/dttable2.c @@ -366,6 +366,11 @@ DtCompileMadt ( InfoTable = AcpiDmTableInfoMadt15; break; + case ACPI_MADT_TYPE_MULTIPROC_WAKEUP: + + InfoTable = AcpiDmTableInfoMadt16; + break; + default: DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "MADT"); @@ -858,6 +863,11 @@ DtCompilePcct ( InfoTable = AcpiDmTableInfoPcct4; break; + case ACPI_PCCT_TYPE_HW_REG_COMM_SUBSPACE: + + InfoTable = AcpiDmTableInfoPcct5; + break; + default: DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "PCCT"); @@ -941,6 +951,142 @@ DtCompilePdtt ( /****************************************************************************** * + * FUNCTION: DtCompilePhat + * + * PARAMETERS: List - Current field list pointer + * + * RETURN: Status + * + * DESCRIPTION: Compile Phat. + * + *****************************************************************************/ + +ACPI_STATUS +DtCompilePhat ( + void **List) +{ + ACPI_STATUS Status = AE_OK; + DT_SUBTABLE *Subtable; + DT_SUBTABLE *ParentTable; + DT_FIELD **PFieldList = (DT_FIELD **) List; + ACPI_PHAT_HEADER *PhatHeader; + ACPI_DMTABLE_INFO *Info; + ACPI_PHAT_VERSION_DATA *VersionData; + UINT32 RecordCount; + + + /* The table consist of subtables */ + + while (*PFieldList) + { + Status = DtCompileTable (PFieldList, AcpiDmTableInfoPhatHdr, &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + DtPushSubtable (Subtable); + + PhatHeader = ACPI_CAST_PTR (ACPI_PHAT_HEADER, Subtable->Buffer); + + switch (PhatHeader->Type) + { + case ACPI_PHAT_TYPE_FW_VERSION_DATA: + + Info = AcpiDmTableInfoPhat0; + PhatHeader->Length = sizeof (ACPI_PHAT_VERSION_DATA); + break; + + case ACPI_PHAT_TYPE_FW_HEALTH_DATA: + + Info = AcpiDmTableInfoPhat1; + PhatHeader->Length = sizeof (ACPI_PHAT_HEALTH_DATA); + break; + + default: + + DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, *PFieldList, "PHAT"); + return (AE_ERROR); + + break; + } + + Status = DtCompileTable (PFieldList, Info, &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + + switch (PhatHeader->Type) + { + case ACPI_PHAT_TYPE_FW_VERSION_DATA: + + VersionData = ACPI_CAST_PTR (ACPI_PHAT_VERSION_DATA, + (Subtable->Buffer - sizeof (ACPI_PHAT_HEADER))); + RecordCount = VersionData->ElementCount; + + while (RecordCount) + { + Status = DtCompileTable (PFieldList, AcpiDmTableInfoPhat0a, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + + RecordCount--; + PhatHeader->Length += sizeof (ACPI_PHAT_VERSION_ELEMENT); + } + break; + + case ACPI_PHAT_TYPE_FW_HEALTH_DATA: + + /* Compile device path */ + + Status = DtCompileTable (PFieldList, AcpiDmTableInfoPhat1a, &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + + PhatHeader->Length += (UINT16) Subtable->Length; + + /* Compile vendor specific data */ + + Status = DtCompileTable (PFieldList, AcpiDmTableInfoPhat1b, &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + + PhatHeader->Length += (UINT16) Subtable->Length; + + break; + + default: + + DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, *PFieldList, "PHAT"); + return (AE_ERROR); + } + } + + return (Status); +} + + +/****************************************************************************** + * * FUNCTION: DtCompilePmtt * * PARAMETERS: List - Current field list pointer @@ -960,10 +1106,7 @@ DtCompilePmtt ( DT_SUBTABLE *ParentTable; DT_FIELD **PFieldList = (DT_FIELD **) List; DT_FIELD *SubtableStart; - ACPI_PMTT_HEADER *PmttHeader; - ACPI_PMTT_CONTROLLER *PmttController; - UINT16 DomainCount; - UINT8 PrevType = ACPI_PMTT_TYPE_SOCKET; + UINT16 Type; /* Main table */ @@ -978,41 +1121,21 @@ DtCompilePmtt ( DtInsertSubtable (ParentTable, Subtable); DtPushSubtable (Subtable); + /* Subtables */ + while (*PFieldList) { SubtableStart = *PFieldList; - Status = DtCompileTable (PFieldList, AcpiDmTableInfoPmttHdr, - &Subtable); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - PmttHeader = ACPI_CAST_PTR (ACPI_PMTT_HEADER, Subtable->Buffer); - while (PrevType >= PmttHeader->Type) - { - DtPopSubtable (); - - if (PrevType == ACPI_PMTT_TYPE_SOCKET) - { - break; - } - - PrevType--; - } + DtCompileInteger ((UINT8 *) &Type, *PFieldList, 2, 0); - PrevType = PmttHeader->Type; - - ParentTable = DtPeekSubtable (); - DtInsertSubtable (ParentTable, Subtable); - DtPushSubtable (Subtable); - - switch (PmttHeader->Type) + switch (Type) { case ACPI_PMTT_TYPE_SOCKET: /* Subtable: Socket Structure */ + DbgPrint (ASL_DEBUG_OUTPUT, "Compile PMTT_TYPE_SOCKET (0)\n"); + Status = DtCompileTable (PFieldList, AcpiDmTableInfoPmtt0, &Subtable); if (ACPI_FAILURE (Status)) @@ -1020,14 +1143,14 @@ DtCompilePmtt ( return (Status); } - ParentTable = DtPeekSubtable (); - DtInsertSubtable (ParentTable, Subtable); break; case ACPI_PMTT_TYPE_CONTROLLER: /* Subtable: Memory Controller Structure */ + DbgPrint (ASL_DEBUG_OUTPUT, "Compile PMTT_TYPE_CONTROLLER (1)\n"); + Status = DtCompileTable (PFieldList, AcpiDmTableInfoPmtt1, &Subtable); if (ACPI_FAILURE (Status)) @@ -1035,40 +1158,34 @@ DtCompilePmtt ( return (Status); } - ParentTable = DtPeekSubtable (); - DtInsertSubtable (ParentTable, Subtable); + break; - PmttController = ACPI_CAST_PTR (ACPI_PMTT_CONTROLLER, - (Subtable->Buffer - sizeof (ACPI_PMTT_HEADER))); - DomainCount = PmttController->DomainCount; + case ACPI_PMTT_TYPE_DIMM: - while (DomainCount) - { - Status = DtCompileTable (PFieldList, AcpiDmTableInfoPmtt1a, - &Subtable); - if (ACPI_FAILURE (Status)) - { - return (Status); - } + /* Subtable: Physical Component (DIMM) Structure */ - DtInsertSubtable (ParentTable, Subtable); - DomainCount--; + DbgPrint (ASL_DEBUG_OUTPUT, "Compile PMTT_TYPE_DIMM (2)\n"); + Status = DtCompileTable (PFieldList, AcpiDmTableInfoPmtt2, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); } + break; - case ACPI_PMTT_TYPE_DIMM: + case ACPI_PMTT_TYPE_VENDOR: - /* Subtable: Physical Component Structure */ + /* Subtable: Vendor-specific Structure */ - Status = DtCompileTable (PFieldList, AcpiDmTableInfoPmtt2, + DbgPrint (ASL_DEBUG_OUTPUT, "Compile PMTT_TYPE_VENDOR(FF)\n"); + Status = DtCompileTable (PFieldList, AcpiDmTableInfoPmttVendor, &Subtable); if (ACPI_FAILURE (Status)) { return (Status); } - ParentTable = DtPeekSubtable (); - DtInsertSubtable (ParentTable, Subtable); break; default: @@ -1076,6 +1193,8 @@ DtCompilePmtt ( DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "PMTT"); return (AE_ERROR); } + + DtInsertSubtable (ParentTable, Subtable); } return (Status); @@ -1106,6 +1225,7 @@ DtCompilePptt ( ACPI_DMTABLE_INFO *InfoTable; DT_FIELD **PFieldList = (DT_FIELD **) List; DT_FIELD *SubtableStart; + ACPI_TABLE_HEADER *PpttAcpiHeader; ParentTable = DtPeekSubtable (); @@ -1191,6 +1311,20 @@ DtCompilePptt ( } break; + case ACPI_PPTT_TYPE_CACHE: + + PpttAcpiHeader = ACPI_CAST_PTR (ACPI_TABLE_HEADER, + AslGbl_RootTable->Buffer); + if (PpttAcpiHeader->Revision < 3) + { + break; + } + Status = DtCompileTable (PFieldList, AcpiDmTableInfoPptt1a, + &Subtable); + DtInsertSubtable (ParentTable, Subtable); + PpttHeader->Length += (UINT8)(Subtable->Length); + break; + default: break; @@ -1336,16 +1470,20 @@ ACPI_STATUS DtCompileSdev ( void **List) { - ACPI_STATUS Status; - ACPI_SDEV_HEADER *SdevHeader; - DT_SUBTABLE *Subtable; - DT_SUBTABLE *ParentTable; - ACPI_DMTABLE_INFO *InfoTable; - DT_FIELD **PFieldList = (DT_FIELD **) List; - DT_FIELD *SubtableStart; - ACPI_SDEV_PCIE *Pcie = NULL; - ACPI_SDEV_NAMESPACE *Namesp = NULL; - UINT32 EntryCount; + ACPI_STATUS Status; + ACPI_SDEV_HEADER *SdevHeader; + ACPI_SDEV_HEADER *SecureComponentHeader; + DT_SUBTABLE *Subtable; + DT_SUBTABLE *ParentTable; + ACPI_DMTABLE_INFO *InfoTable; + ACPI_DMTABLE_INFO *SecureComponentInfoTable = NULL; + DT_FIELD **PFieldList = (DT_FIELD **) List; + DT_FIELD *SubtableStart; + ACPI_SDEV_PCIE *Pcie = NULL; + ACPI_SDEV_NAMESPACE *Namesp = NULL; + UINT32 EntryCount; + ACPI_SDEV_SECURE_COMPONENT *SecureComponent = NULL; + UINT16 ComponentLength = 0; /* Subtables */ @@ -1375,6 +1513,8 @@ DtCompileSdev ( InfoTable = AcpiDmTableInfoSdev0; Namesp = ACPI_CAST_PTR (ACPI_SDEV_NAMESPACE, Subtable->Buffer); + SecureComponent = ACPI_CAST_PTR (ACPI_SDEV_SECURE_COMPONENT, + ACPI_ADD_PTR (UINT8, Subtable->Buffer, sizeof(ACPI_SDEV_NAMESPACE))); break; case ACPI_SDEV_TYPE_PCIE_ENDPOINT_DEVICE: @@ -1406,6 +1546,86 @@ DtCompileSdev ( { case ACPI_SDEV_TYPE_NAMESPACE_DEVICE: + /* + * Device Id Offset will be be calculated differently depending on + * the presence of secure access components. + */ + Namesp->DeviceIdOffset = 0; + ComponentLength = 0; + + /* If the secure access component exists, get the structures */ + + if (SdevHeader->Flags & ACPI_SDEV_SECURE_COMPONENTS_PRESENT) + { + Status = DtCompileTable (PFieldList, AcpiDmTableInfoSdev0b, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + + Namesp->DeviceIdOffset += sizeof (ACPI_SDEV_SECURE_COMPONENT); + + /* Compile a secure access component header */ + + Status = DtCompileTable (PFieldList, AcpiDmTableInfoSdevSecCompHdr, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + + /* Compile the secure access component */ + + SecureComponentHeader = ACPI_CAST_PTR (ACPI_SDEV_HEADER, Subtable->Buffer); + switch (SecureComponentHeader->Type) + { + case ACPI_SDEV_TYPE_ID_COMPONENT: + + SecureComponentInfoTable = AcpiDmTableInfoSdevSecCompId; + Namesp->DeviceIdOffset += sizeof (ACPI_SDEV_ID_COMPONENT); + ComponentLength = sizeof (ACPI_SDEV_ID_COMPONENT); + break; + + case ACPI_SDEV_TYPE_MEM_COMPONENT: + + SecureComponentInfoTable = AcpiDmTableInfoSdevSecCompMem; + Namesp->DeviceIdOffset += sizeof (ACPI_SDEV_MEM_COMPONENT); + ComponentLength = sizeof (ACPI_SDEV_MEM_COMPONENT); + break; + + default: + + /* Any other secure component types are undefined */ + + return (AE_ERROR); + } + + Status = DtCompileTable (PFieldList, SecureComponentInfoTable, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + + SecureComponent->SecureComponentOffset = + sizeof (ACPI_SDEV_NAMESPACE) + sizeof (ACPI_SDEV_SECURE_COMPONENT); + SecureComponent->SecureComponentLength = ComponentLength; + + + /* + * Add the secure component to the subtable to be added for the + * the namespace subtable's length + */ + ComponentLength += sizeof (ACPI_SDEV_SECURE_COMPONENT); + } + /* Append DeviceId namespace string */ Status = DtCompileTable (PFieldList, AcpiDmTableInfoSdev0a, @@ -1423,7 +1643,8 @@ DtCompileSdev ( ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); - Namesp->DeviceIdOffset = sizeof (ACPI_SDEV_NAMESPACE); + Namesp->DeviceIdOffset += sizeof (ACPI_SDEV_NAMESPACE); + Namesp->DeviceIdLength = (UINT16) Subtable->Length; /* Append Vendor data */ @@ -1453,7 +1674,7 @@ DtCompileSdev ( /* Final size of entire namespace structure */ SdevHeader->Length = (UINT16)(sizeof(ACPI_SDEV_NAMESPACE) + - Subtable->Length + Namesp->DeviceIdLength); + Subtable->Length + Namesp->DeviceIdLength) + ComponentLength; } } @@ -2139,6 +2360,111 @@ DtCompileUefi ( /****************************************************************************** * + * FUNCTION: DtCompileViot + * + * PARAMETERS: List - Current field list pointer + * + * RETURN: Status + * + * DESCRIPTION: Compile VIOT. + * + *****************************************************************************/ + +ACPI_STATUS +DtCompileViot ( + void **List) +{ + ACPI_STATUS Status; + DT_SUBTABLE *Subtable; + DT_SUBTABLE *ParentTable; + DT_FIELD **PFieldList = (DT_FIELD **) List; + DT_FIELD *SubtableStart; + ACPI_TABLE_VIOT *Viot; + ACPI_VIOT_HEADER *ViotHeader; + ACPI_DMTABLE_INFO *InfoTable; + UINT16 NodeCount; + + ParentTable = DtPeekSubtable (); + + Status = DtCompileTable (PFieldList, AcpiDmTableInfoViot, &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + DtInsertSubtable (ParentTable, Subtable); + + /* + * Using ACPI_SUB_PTR, We needn't define a separate structure. Care + * should be taken to avoid accessing ACPI_TABLE_HEADER fields. + */ + Viot = ACPI_SUB_PTR (ACPI_TABLE_VIOT, Subtable->Buffer, + sizeof (ACPI_TABLE_HEADER)); + + Viot->NodeOffset = sizeof (ACPI_TABLE_VIOT); + + NodeCount = 0; + while (*PFieldList) { + SubtableStart = *PFieldList; + Status = DtCompileTable (PFieldList, AcpiDmTableInfoViotHeader, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + DtPushSubtable (Subtable); + + ViotHeader = ACPI_CAST_PTR (ACPI_VIOT_HEADER, Subtable->Buffer); + + switch (ViotHeader->Type) + { + case ACPI_VIOT_NODE_PCI_RANGE: + + InfoTable = AcpiDmTableInfoViot1; + break; + + case ACPI_VIOT_NODE_MMIO: + + InfoTable = AcpiDmTableInfoViot2; + break; + + case ACPI_VIOT_NODE_VIRTIO_IOMMU_PCI: + + InfoTable = AcpiDmTableInfoViot3; + break; + + case ACPI_VIOT_NODE_VIRTIO_IOMMU_MMIO: + + InfoTable = AcpiDmTableInfoViot4; + break; + + default: + + DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "VIOT"); + return (AE_ERROR); + } + + Status = DtCompileTable (PFieldList, InfoTable, &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + DtPopSubtable (); + NodeCount++; + } + + Viot->NodeCount = NodeCount; + return (AE_OK); +} + + +/****************************************************************************** + * * FUNCTION: DtCompileWdat * * PARAMETERS: List - Current field list pointer diff --git a/source/compiler/dttemplate.h b/source/compiler/dttemplate.h index ddbcce8ae066..fbe68ec9f8f1 100644 --- a/source/compiler/dttemplate.h +++ b/source/compiler/dttemplate.h @@ -204,6 +204,27 @@ const unsigned char TemplateBoot[] = 0x28,0x05,0x10,0x20,0x00,0x00,0x00,0x00 /* 00000020 "(.. ...." */ }; +const unsigned char TemplateCedt[] = +{ + 0x43,0x45,0x44,0x54,0x84,0x00,0x00,0x00, /* 00000000 "CEDT...." */ + 0x01,0x8B,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ + 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ + 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ + 0x05,0x01,0x21,0x20,0x00,0x00,0x20,0x00, /* 00000020 "..! .. ." */ + 0x33,0x33,0xCD,0xAB,0x01,0x00,0x00,0x00, /* 00000028 "33......" */ + 0x00,0x00,0x00,0x00,0x00,0x21,0x43,0xD5, /* 00000030 ".....!C." */ + 0x00,0x00,0x00,0x00,0x45,0x23,0x01,0x00, /* 00000038 "....E#.." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00, /* 00000040 "...... ." */ + 0x44,0x44,0xCD,0xAB,0x01,0x00,0x00,0x00, /* 00000048 "DD......" */ + 0x00,0x00,0x00,0x00,0x00,0x21,0x43,0xA5, /* 00000050 ".....!C." */ + 0x00,0x00,0x00,0x00,0x45,0x23,0xB1,0x00, /* 00000058 "....E#.." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00, /* 00000060 "...... ." */ + 0x55,0x55,0xCD,0xAB,0x01,0x00,0x00,0x00, /* 00000068 "UU......" */ + 0x00,0x00,0x00,0x00,0x00,0x21,0x43,0xB5, /* 00000070 ".....!C." */ + 0x00,0x00,0x00,0x00,0x45,0x23,0xB1,0x00, /* 00000078 "....E#.." */ + 0x00,0x00,0x00,0x00 /* 00000080 "...." */ +}; + const unsigned char TemplateCpep[] = { 0x43,0x50,0x45,0x50,0x34,0x00,0x00,0x00, /* 00000000 "CPEP4..." */ @@ -697,39 +718,39 @@ const unsigned char TemplateHpet[] = const unsigned char TemplateIort[] = { - 0x49,0x4F,0x52,0x54,0xF8,0x01,0x00,0x00, /* 00000000 "IORT...." */ - 0x00,0x72,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 ".rINTEL " */ + 0x49,0x4F,0x52,0x54,0x3C,0x02,0x00,0x00, /* 00000000 "IORT<..." */ + 0x03,0xF1,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ 0x54,0x65,0x6D,0x70,0x6C,0x61,0x74,0x65, /* 00000010 "Template" */ 0x00,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ - 0x13,0x03,0x18,0x20,0x06,0x00,0x00,0x00, /* 00000020 "... ...." */ + 0x05,0x01,0x21,0x20,0x07,0x00,0x00,0x00, /* 00000020 "..! ...." */ 0x34,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000028 "4......." */ - 0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00, /* 00000030 "........" */ + 0x49,0x4F,0x52,0x54,0x00,0x18,0x00,0x01, /* 00000030 "IORT...." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000038 "........" */ 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000040 "........" */ - 0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00, /* 00000048 "........" */ + 0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x04, /* 00000048 "........" */ 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000050 "........" */ 0x6C,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000058 "l......." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000060 "........" */ 0x00,0x5C,0x5F,0x53,0x42,0x2E,0x50,0x43, /* 00000068 ".\_SB.PC" */ 0x49,0x30,0x2E,0x44,0x45,0x56,0x30,0x00, /* 00000070 "I0.DEV0." */ - 0x00,0x00,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 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000090 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000098 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000A0 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000A8 "........" */ + 0x49,0x4F,0x52,0x54,0x3C,0x02,0x00,0x00, /* 00000078 "IORT<..." */ + 0x03,0xF2,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000080 "..INTEL " */ + 0x54,0x65,0x6D,0x70,0x6C,0x61,0x74,0x65, /* 00000088 "Template" */ + 0x00,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000090 "....INTL" */ + 0x05,0x01,0x21,0x20,0x07,0x00,0x00,0x00, /* 00000098 "..! ...." */ + 0x34,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000A0 "4......." */ + 0x49,0x4F,0x52,0x54,0x00,0x18,0x00,0x01, /* 000000A8 "IORT...." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000B0 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000B8 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000C0 "........" */ - 0x00,0x00,0x00,0x00,0x02,0x38,0x00,0x00, /* 000000C8 ".....8.." */ + 0x00,0x00,0x00,0x00,0x02,0x38,0x00,0x03, /* 000000C8 ".....8.." */ 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 000000D0 "........" */ 0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000D8 "$......." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000E0 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000E8 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000F0 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000F8 "........" */ - 0x00,0x00,0x00,0x00,0x03,0x60,0x00,0x01, /* 00000100 ".....`.." */ + 0x00,0x00,0x00,0x00,0x03,0x60,0x00,0x03, /* 00000100 ".....`.." */ 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000108 "........" */ 0x4C,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000110 "L......." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000118 "........" */ @@ -741,7 +762,7 @@ const unsigned char TemplateIort[] = 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000148 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000150 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000158 "........" */ - 0x00,0x00,0x00,0x00,0x04,0x58,0x00,0x01, /* 00000160 ".....X.." */ + 0x00,0x00,0x00,0x00,0x04,0x58,0x00,0x04, /* 00000160 ".....X.." */ 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000168 "........" */ 0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000170 "D......." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000178 "........" */ @@ -752,14 +773,23 @@ const unsigned char TemplateIort[] = 0x00,0x00,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 "........" */ - 0x00,0x00,0x00,0x00,0x05,0x3C,0x00,0x01, /* 000001B8 ".....<.." */ + 0x00,0x00,0x00,0x00,0x05,0x3C,0x00,0x02, /* 000001B8 ".....<.." */ 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 000001C0 "........" */ 0x28,0x00,0x00,0x00,0x00,0x00,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,0x00,0x00,0x00,0x00, /* 000001E0 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001E8 "........" */ - 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00 /* 000001F0 "........" */ + 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 000001F0 "........" */ + 0x06,0x44,0x00,0x01,0x00,0x00,0x00,0x00, /* 000001F8 ".D......" */ + 0x01,0x00,0x00,0x00,0x30,0x00,0x00,0x00, /* 00000200 "....0..." */ + 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000208 "........" */ + 0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000210 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000218 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000220 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000228 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000230 "........" */ + 0x01,0x00,0x00,0x00 /* 00000238 "...." */ }; const unsigned char TemplateIvrs[] = @@ -817,11 +847,11 @@ const unsigned char TemplateLpit[] = const unsigned char TemplateMadt[] = { - 0x41,0x50,0x49,0x43,0x5A,0x01,0x00,0x00, /* 00000000 "APICZ..." */ - 0x05,0xEF,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ + 0x41,0x50,0x49,0x43,0x6A,0x01,0x00,0x00, /* 00000000 "APICj..." */ + 0x05,0x9D,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" */ - 0x08,0x01,0x19,0x20,0x00,0x00,0x00,0x00, /* 00000020 "... ...." */ + 0x13,0x11,0x20,0x20,0x00,0x00,0x00,0x00, /* 00000020 ".. ...." */ 0x01,0x00,0x00,0x00,0x00,0x08,0x00,0x00, /* 00000028 "........" */ 0x01,0x00,0x00,0x00,0x01,0x0C,0x01,0x00, /* 00000030 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000038 "........" */ @@ -860,7 +890,9 @@ const unsigned char TemplateMadt[] = 0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x14, /* 00000140 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000148 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000150 "........" */ - 0x00,0x00 /* 00000158 ".." */ + 0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00, /* 00000158 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000160 "........" */ + 0x00,0x00 /* 00000168 ".." */ }; const unsigned char TemplateMcfg[] = @@ -956,91 +988,92 @@ const unsigned char TemplateMsct[] = const unsigned char TemplateNfit[] = { - 0x4E,0x46,0x49,0x54,0x80,0x01,0x00,0x00, /* 00000000 "NFIT...." */ - 0x01,0x07,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ + 0x4E,0x46,0x49,0x54,0x88,0x01,0x00,0x00, /* 00000000 "NFIT...." */ + 0x01,0x81,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" */ - 0x29,0x09,0x17,0x20,0x00,0x00,0x00,0x00, /* 00000020 ").. ...." */ - 0x00,0x00,0x38,0x00,0x01,0x00,0x00,0x00, /* 00000028 "..8....." */ + 0x13,0x11,0x20,0x20,0x00,0x00,0x00,0x00, /* 00000020 ".. ...." */ + 0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x00, /* 00000028 "..@....." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000030 "........" */ 0x30,0x05,0xAF,0x91,0x86,0x5D,0x0E,0x47, /* 00000038 "0....].G" */ 0xA6,0xB0,0x0A,0x2D,0xB9,0x40,0x82,0x49, /* 00000040 "...-.@.I" */ 0x00,0x00,0x00,0x7C,0x03,0x00,0x00,0x00, /* 00000048 "...|...." */ 0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00, /* 00000050 "........" */ 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000058 "........" */ - 0x01,0x00,0x30,0x00,0x01,0x00,0x00,0x00, /* 00000060 "..0....." */ - 0x04,0x00,0x00,0x00,0x01,0x00,0x01,0x00, /* 00000068 "........" */ - 0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00, /* 00000070 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000078 "........" */ - 0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00, /* 00000080 "........" */ - 0x01,0x00,0x03,0x00,0x2A,0x00,0x00,0x00, /* 00000088 "....*..." */ - 0x02,0x00,0x20,0x00,0x01,0x00,0x00,0x00, /* 00000090 ".. ....." */ - 0x04,0x00,0x00,0x00,0x00,0x01,0x00,0x00, /* 00000098 "........" */ - 0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00, /* 000000A0 "........" */ - 0x06,0x00,0x00,0x00,0x09,0x00,0x00,0x00, /* 000000A8 "........" */ - 0x03,0x00,0x28,0x00,0x00,0x00,0x00,0x00, /* 000000B0 "..(....." */ - 0xB4,0x13,0x5D,0x40,0x91,0x0B,0x29,0x93, /* 000000B8 "..]@..)." */ - 0x67,0xE8,0x23,0x4C,0x00,0x00,0x00,0x88, /* 000000C0 "g.#L...." */ - 0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77, /* 000000C8 ".."3DUfw" */ - 0x88,0x99,0xAA,0xBB,0xCC,0xDD,0xEE,0xFF, /* 000000D0 "........" */ - 0x04,0x00,0x50,0x00,0x01,0x00,0x86,0x80, /* 000000D8 "..P....." */ - 0x17,0x20,0x01,0x00,0x86,0x80,0x17,0x20, /* 000000E0 ". ..... " */ - 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000E8 "........" */ - 0x89,0x00,0x54,0x76,0x01,0x03,0x00,0x01, /* 000000F0 "..Tv...." */ - 0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000F8 ". ......" */ - 0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00, /* 00000100 "........" */ - 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000108 "........" */ - 0x00,0x10,0x80,0x00,0x00,0x00,0x00,0x00, /* 00000110 "........" */ - 0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000118 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000120 "........" */ - 0x05,0x00,0x28,0x00,0x01,0x00,0x00,0x01, /* 00000128 "..(....." */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000130 "........" */ - 0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000138 ". ......" */ - 0x00,0x00,0x00,0xE0,0x0F,0x00,0x00,0x00, /* 00000140 "........" */ - 0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00, /* 00000148 "........" */ - 0x06,0x00,0x20,0x00,0x01,0x00,0x00,0x00, /* 00000150 ".. ....." */ - 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000158 "........" */ - 0x00,0x00,0x00,0x18,0x04,0x00,0x00,0x00, /* 00000160 "........" */ - 0x00,0x00,0x00,0x18,0x06,0x00,0x00,0x00, /* 00000168 "........" */ - 0x07,0x00,0x10,0x00,0x00,0x00,0x00,0x00, /* 00000170 "........" */ - 0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00 /* 00000178 "........" */ + 0x00,0xEF,0xCD,0xAB,0x78,0x56,0x34,0x12, /* 00000060 "....xV4." */ + 0x01,0x00,0x30,0x00,0x01,0x00,0x00,0x00, /* 00000068 "..0....." */ + 0x04,0x00,0x00,0x00,0x01,0x00,0x01,0x00, /* 00000070 "........" */ + 0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00, /* 00000078 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000080 "........" */ + 0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00, /* 00000088 "........" */ + 0x01,0x00,0x03,0x00,0x2A,0x00,0x00,0x00, /* 00000090 "....*..." */ + 0x02,0x00,0x20,0x00,0x01,0x00,0x00,0x00, /* 00000098 ".. ....." */ + 0x04,0x00,0x00,0x00,0x00,0x01,0x00,0x00, /* 000000A0 "........" */ + 0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00, /* 000000A8 "........" */ + 0x06,0x00,0x00,0x00,0x09,0x00,0x00,0x00, /* 000000B0 "........" */ + 0x03,0x00,0x28,0x00,0x00,0x00,0x00,0x00, /* 000000B8 "..(....." */ + 0xB4,0x13,0x5D,0x40,0x91,0x0B,0x29,0x93, /* 000000C0 "..]@..)." */ + 0x67,0xE8,0x23,0x4C,0x00,0x00,0x00,0x88, /* 000000C8 "g.#L...." */ + 0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77, /* 000000D0 ".."3DUfw" */ + 0x88,0x99,0xAA,0xBB,0xCC,0xDD,0xEE,0xFF, /* 000000D8 "........" */ + 0x04,0x00,0x50,0x00,0x01,0x00,0x86,0x80, /* 000000E0 "..P....." */ + 0x17,0x20,0x01,0x00,0x86,0x80,0x17,0x20, /* 000000E8 ". ..... " */ + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000F0 "........" */ + 0x89,0x00,0x54,0x76,0x01,0x03,0x00,0x01, /* 000000F8 "..Tv...." */ + 0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000100 ". ......" */ + 0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00, /* 00000108 "........" */ + 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000110 "........" */ + 0x00,0x10,0x80,0x00,0x00,0x00,0x00,0x00, /* 00000118 "........" */ + 0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000120 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000128 "........" */ + 0x05,0x00,0x28,0x00,0x01,0x00,0x00,0x01, /* 00000130 "..(....." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000138 "........" */ + 0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000140 ". ......" */ + 0x00,0x00,0x00,0xE0,0x0F,0x00,0x00,0x00, /* 00000148 "........" */ + 0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00, /* 00000150 "........" */ + 0x06,0x00,0x20,0x00,0x01,0x00,0x00,0x00, /* 00000158 ".. ....." */ + 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000160 "........" */ + 0x00,0x00,0x00,0x18,0x04,0x00,0x00,0x00, /* 00000168 "........" */ + 0x00,0x00,0x00,0x18,0x06,0x00,0x00,0x00, /* 00000170 "........" */ + 0x07,0x00,0x10,0x00,0x00,0x00,0x00,0x00, /* 00000178 "........" */ + 0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00 /* 00000180 "........" */ }; const unsigned char TemplatePcct[] = { - 0x50,0x43,0x43,0x54,0x4e,0x02,0x00,0x00, /* 00000000 "PCCTN..." */ - 0x01,0x47,0x49,0x4e,0x54,0x45,0x4c,0x20, /* 00000008 ".GINTEL " */ - 0x54,0x65,0x6d,0x70,0x6c,0x61,0x74,0x65, /* 00000010 "Template" */ - 0x01,0x00,0x00,0x00,0x49,0x4e,0x54,0x4c, /* 00000018 "....INTL" */ - 0x03,0x03,0x17,0x20,0x01,0x00,0x00,0x00, /* 00000020 "... ...." */ + 0x50,0x43,0x43,0x54,0xAE,0x02,0x00,0x00, /* 00000000 "PCCT...." */ + 0x01,0xE6,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" */ + 0x25,0x09,0x20,0x20,0x01,0x00,0x00,0x00, /* 00000020 "%. ...." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000028 "........" */ - 0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000030 ".>......" */ + 0x00,0x3E,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000030 ".>......" */ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, /* 00000038 "........" */ 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22, /* 00000040 """""""""" */ 0x01,0x32,0x00,0x03,0x33,0x33,0x33,0x33, /* 00000048 ".2..3333" */ 0x33,0x33,0x33,0x33,0x44,0x44,0x44,0x44, /* 00000050 "3333DDDD" */ 0x44,0x44,0x44,0x44,0x55,0x55,0x55,0x55, /* 00000058 "DDDDUUUU" */ 0x55,0x55,0x55,0x55,0x66,0x66,0x66,0x66, /* 00000060 "UUUUffff" */ - 0x77,0x77,0x77,0x77,0x88,0x88,0x01,0x3e, /* 00000068 "wwww...>" */ + 0x77,0x77,0x77,0x77,0x88,0x88,0x01,0x3E, /* 00000068 "wwww...>" */ 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000070 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000078 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x32, /* 00000080 ".......2" */ 0x00,0x03,0x44,0x44,0x44,0x44,0x44,0x44, /* 00000088 "..DDDDDD" */ 0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44, /* 00000090 "DDDDDDDD" */ 0x44,0x44,0x55,0x55,0x55,0x55,0x55,0x55, /* 00000098 "DDUUUUUU" */ - 0x55,0x55,0x66,0x66,0x66,0x66,0x77,0x77, /* 000000a0 "UUffffww" */ - 0x77,0x77,0x88,0x88,0x02,0x5a,0x01,0x00, /* 000000a8 "ww...Z.." */ - 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00, /* 000000b0 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000b8 "........" */ - 0x00,0x00,0x00,0x00,0x01,0x32,0x00,0x03, /* 000000c0 ".....2.." */ - 0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44, /* 000000c8 "DDDDDDDD" */ - 0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44, /* 000000d0 "DDDDDDDD" */ - 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, /* 000000d8 "UUUUUUUU" */ - 0x66,0x66,0x66,0x66,0x77,0x77,0x77,0x77, /* 000000e0 "ffffwwww" */ - 0x88,0x88,0x01,0x32,0x00,0x03,0x33,0x33, /* 000000e8 "...2..33" */ - 0x33,0x33,0x33,0x33,0x33,0x33,0x44,0x44, /* 000000f0 "333333DD" */ - 0x44,0x44,0x44,0x44,0x44,0x44,0x55,0x55, /* 000000f8 "DDDDDDUU" */ - 0x55,0x55,0x55,0x55,0x55,0x55,0x03,0xa4, /* 00000100 "UUUUUU.." */ + 0x55,0x55,0x66,0x66,0x66,0x66,0x77,0x77, /* 000000A0 "UUffffww" */ + 0x77,0x77,0x88,0x88,0x02,0x5A,0x01,0x00, /* 000000A8 "ww...Z.." */ + 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00, /* 000000B0 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000B8 "........" */ + 0x00,0x00,0x00,0x00,0x01,0x32,0x00,0x03, /* 000000C0 ".....2.." */ + 0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44, /* 000000C8 "DDDDDDDD" */ + 0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44, /* 000000D0 "DDDDDDDD" */ + 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, /* 000000D8 "UUUUUUUU" */ + 0x66,0x66,0x66,0x66,0x77,0x77,0x77,0x77, /* 000000E0 "ffffwwww" */ + 0x88,0x88,0x01,0x32,0x00,0x03,0x33,0x33, /* 000000E8 "...2..33" */ + 0x33,0x33,0x33,0x33,0x33,0x33,0x44,0x44, /* 000000F0 "333333DD" */ + 0x44,0x44,0x44,0x44,0x44,0x44,0x55,0x55, /* 000000F8 "DDDDDDUU" */ + 0x55,0x55,0x55,0x55,0x55,0x55,0x03,0xA4, /* 00000100 "UUUUUU.." */ 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000108 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000110 "........" */ 0x00,0x00,0x01,0x32,0x00,0x03,0x33,0x33, /* 00000118 "...2..33" */ @@ -1060,18 +1093,18 @@ const unsigned char TemplatePcct[] = 0x33,0x33,0x33,0x33,0x33,0x33,0x44,0x44, /* 00000188 "333333DD" */ 0x44,0x44,0x44,0x44,0x44,0x44,0x01,0x32, /* 00000190 "DDDDDD.2" */ 0x00,0x03,0x33,0x33,0x33,0x33,0x33,0x33, /* 00000198 "..333333" */ - 0x33,0x33,0x55,0x55,0x55,0x55,0x55,0x55, /* 000001a0 "33UUUUUU" */ - 0x55,0x55,0x04,0xa4,0x01,0x00,0x00,0x00, /* 000001a8 "UU......" */ - 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001b0 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x32, /* 000001b8 ".......2" */ - 0x00,0x03,0x33,0x33,0x33,0x33,0x33,0x33, /* 000001c0 "..333333" */ - 0x33,0x33,0x44,0x44,0x44,0x44,0x44,0x44, /* 000001c8 "33DDDDDD" */ - 0x44,0x44,0x55,0x55,0x55,0x55,0x55,0x55, /* 000001d0 "DDUUUUUU" */ - 0x55,0x55,0x66,0x66,0x66,0x66,0x77,0x77, /* 000001d8 "UUffffww" */ - 0x77,0x77,0x88,0x88,0x88,0x88,0x01,0x32, /* 000001e0 "ww.....2" */ - 0x00,0x03,0x33,0x33,0x33,0x33,0x33,0x33, /* 000001e8 "..333333" */ - 0x33,0x33,0x99,0x99,0x99,0x99,0x99,0x99, /* 000001f0 "33......" */ - 0x99,0x99,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001f8 "........" */ + 0x33,0x33,0x55,0x55,0x55,0x55,0x55,0x55, /* 000001A0 "33UUUUUU" */ + 0x55,0x55,0x04,0xA4,0x01,0x00,0x00,0x00, /* 000001A8 "UU......" */ + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001B0 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x32, /* 000001B8 ".......2" */ + 0x00,0x03,0x33,0x33,0x33,0x33,0x33,0x33, /* 000001C0 "..333333" */ + 0x33,0x33,0x44,0x44,0x44,0x44,0x44,0x44, /* 000001C8 "33DDDDDD" */ + 0x44,0x44,0x55,0x55,0x55,0x55,0x55,0x55, /* 000001D0 "DDUUUUUU" */ + 0x55,0x55,0x66,0x66,0x66,0x66,0x77,0x77, /* 000001D8 "UUffffww" */ + 0x77,0x77,0x88,0x88,0x88,0x88,0x01,0x32, /* 000001E0 "ww.....2" */ + 0x00,0x03,0x33,0x33,0x33,0x33,0x33,0x33, /* 000001E8 "..333333" */ + 0x33,0x33,0x99,0x99,0x99,0x99,0x99,0x99, /* 000001F0 "33......" */ + 0x99,0x99,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001F8 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000200 "........" */ 0x00,0x00,0x01,0x32,0x00,0x03,0x33,0x33, /* 00000208 "...2..33" */ 0x33,0x33,0x33,0x33,0x33,0x33,0x22,0x22, /* 00000210 "333333""" */ @@ -1081,7 +1114,19 @@ const unsigned char TemplatePcct[] = 0x33,0x33,0x44,0x44,0x44,0x44,0x44,0x44, /* 00000230 "33DDDDDD" */ 0x44,0x44,0x01,0x32,0x00,0x03,0x33,0x33, /* 00000238 "DD.2..33" */ 0x33,0x33,0x33,0x33,0x33,0x33,0x55,0x55, /* 00000240 "333333UU" */ - 0x55,0x55,0x55,0x55,0x55,0x55 /* 00000248 "UUUUUU| */ + 0x55,0x55,0x55,0x55,0x55,0x55,0x05,0x60, /* 00000248 "UUUUUU.`" */ + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000250 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000258 "........" */ + 0x00,0x00,0x01,0x32,0x00,0x03,0x33,0x33, /* 00000260 "...2..33" */ + 0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33, /* 00000268 "33333333" */ + 0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33, /* 00000270 "33333333" */ + 0x33,0x33,0x33,0x33,0x33,0x33,0x01,0x32, /* 00000278 "333333.2" */ + 0x00,0x03,0x33,0x33,0x33,0x33,0x33,0x33, /* 00000280 "..333333" */ + 0x33,0x33,0x44,0x44,0x44,0x44,0x44,0x44, /* 00000288 "33DDDDDD" */ + 0x44,0x44,0x01,0x32,0x00,0x03,0x33,0x33, /* 00000290 "DD.2..33" */ + 0x33,0x33,0x33,0x33,0x33,0x33,0x55,0x55, /* 00000298 "333333UU" */ + 0x55,0x55,0x55,0x55,0x55,0x55,0x03,0x00, /* 000002A0 "UUUUUU.." */ + 0x00,0x00,0x05,0x00,0x00,0x00 /* 000002A8 "......" */ }; const unsigned char TemplatePdtt[] = @@ -1095,31 +1140,50 @@ const unsigned char TemplatePdtt[] = 0xCC,0x01,0xDD,0x00 /* 00000030 "...." */ }; +const unsigned char TemplatePhat [] = +{ + 0x50,0x48,0x41,0x54,0x6F,0x00,0x00,0x00, /* 00000000 "PHATo..." */ + 0x01,0xC7,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" */ + 0x05,0x01,0x21,0x20,0x00,0x00,0x28,0x00, /* 00000020 "..! ..(." */ + 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000028 "........" */ + 0x30,0x05,0xAF,0x91,0x86,0x5D,0x0E,0x47, /* 00000030 "0....].G" */ + 0xA6,0xB0,0x0A,0x2D,0xB9,0x40,0x82,0x49, /* 00000038 "...-.@.I" */ + 0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x01, /* 00000040 "........" */ + 0x0C,0x0B,0x0A,0x09,0x01,0x00,0x23,0x00, /* 00000048 "......#." */ + 0x00,0x00,0x00,0x00,0x30,0x05,0xAF,0x91, /* 00000050 "....0..." */ + 0x86,0x5D,0x0E,0x47,0xA6,0xB0,0x0A,0x2D, /* 00000058 ".].G...-" */ + 0xB9,0x40,0x82,0x49,0x00,0x00,0x00,0x00, /* 00000060 ".@.I...." */ + 0x61,0x73,0x64,0x66,0x00,0xFF,0x11 /* 00000068 "asdf..." */ +}; + const unsigned char TemplatePmtt[] = { - 0x50,0x4D,0x54,0x54,0xB4,0x00,0x00,0x00, /* 00000000 "PMTT...." */ - 0x01,0x3A,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 ".:INTEL " */ + 0x50,0x4D,0x54,0x54,0xBB,0x00,0x00,0x00, /* 00000000 "PMTT...." */ + 0x02,0x2E,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ - 0x26,0x08,0x11,0x20,0x00,0x00,0x00,0x00, /* 00000020 "&.. ...." */ - 0x00,0x00,0x80,0x00,0x01,0x00,0x00,0x00, /* 00000028 "........" */ - 0x00,0x00,0x00,0x00,0x01,0x00,0x54,0x00, /* 00000030 "......T." */ - 0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000038 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000040 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000048 "........" */ - 0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00, /* 00000050 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000058 "........" */ - 0x02,0x00,0x14,0x00,0x02,0x00,0x00,0x00, /* 00000060 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000068 "........" */ - 0x00,0x00,0x00,0x00,0x02,0x00,0x14,0x00, /* 00000070 "........" */ - 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000078 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000080 "........" */ - 0x01,0x00,0x20,0x00,0x01,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,0x00,0x00,0x00,0x00, /* 000000A0 "........" */ - 0x00,0x00,0x0C,0x00,0x01,0x00,0x00,0x00, /* 000000A8 "........" */ - 0x00,0x00,0x00,0x00 /* 000000B0 "...." */ + 0x05,0x01,0x21,0x20,0x08,0x00,0x00,0x00, /* 00000020 "..! ...." */ + 0x00,0x00,0x10,0x00,0x0D,0x00,0x00,0x00, /* 00000028 "........" */ + 0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000030 "........" */ + 0x01,0x00,0x10,0x00,0x04,0x00,0x00,0x00, /* 00000038 "........" */ + 0x02,0x00,0x00,0x00,0x44,0x44,0x00,0x00, /* 00000040 "....DD.." */ + 0x02,0x00,0x10,0x00,0x04,0x00,0x00,0x00, /* 00000048 "........" */ + 0x01,0x00,0x00,0x00,0x78,0x56,0x34,0x12, /* 00000050 "....xV4." */ + 0xFF,0x00,0x23,0x00,0x0D,0x00,0x00,0x00, /* 00000058 "..#....." */ + 0x03,0x00,0x00,0x00,0x03,0x02,0x01,0x00, /* 00000060 "........" */ + 0x08,0x04,0x07,0x06,0x08,0x09,0x0A,0x0B, /* 00000068 "........" */ + 0x0C,0x0D,0x0E,0x0F,0x55,0x66,0x77,0x88, /* 00000070 "....Ufw." */ + 0x11,0xAA,0xBB,0x00,0x00,0x10,0x00,0x0D, /* 00000078 "........" */ + 0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01, /* 00000080 "........" */ + 0x00,0x00,0x00,0x01,0x00,0x10,0x00,0x00, /* 00000088 "........" */ + 0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00, /* 00000090 "........" */ + 0x00,0x00,0x00,0x02,0x00,0x10,0x00,0x04, /* 00000098 "........" */ + 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x78, /* 000000A0 ".......x" */ + 0x56,0x34,0x12,0x02,0x00,0x10,0x00,0x04, /* 000000A8 "V4......" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78, /* 000000B0 ".......x" */ + 0x56,0x34,0x12 /* 000000B8 "V4." */ }; const unsigned char TemplatePptt[] = @@ -1205,21 +1269,24 @@ const unsigned char TemplateSdei[] = const unsigned char TemplateSdev[] = { - 0x53,0x44,0x45,0x56,0x72,0x00,0x00,0x00, /* 00000000 "SDEVr..." */ - 0x01,0x2F,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "./INTEL " */ + 0x53,0x44,0x45,0x56,0x89,0x00,0x00,0x00, /* 00000000 "SDEV...." */ + 0x01,0x6E,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 ".nINTEL " */ 0x54,0x65,0x6D,0x70,0x6C,0x61,0x74,0x65, /* 00000010 "Template" */ 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ - 0x31,0x08,0x17,0x20,0x00,0x01,0x2A,0x00, /* 00000020 "1.. ..*." */ - 0x0C,0x00,0x16,0x00,0x22,0x00,0x08,0x00, /* 00000028 "...."..." */ - 0x5C,0x5C,0x5F,0x53,0x42,0x5F,0x2E,0x50, /* 00000030 "\\_SB_.P" */ - 0x43,0x49,0x30,0x2E,0x55,0x53,0x42,0x31, /* 00000038 "CI0.USB1" */ - 0x2E,0x53,0x55,0x42,0x31,0x00,0x00,0x11, /* 00000040 ".SUB1..." */ - 0x22,0x33,0x44,0x55,0x66,0x77,0x01,0x01, /* 00000048 ""3DUfw.." */ - 0x24,0x00,0x10,0x00,0x20,0x00,0x10,0x00, /* 00000050 "$... ..." */ - 0x04,0x00,0x14,0x00,0x10,0x00,0x11,0x22, /* 00000058 "......."" */ - 0x33,0x44,0xEE,0xDD,0xCC,0xBB,0xAA,0x55, /* 00000060 "3D.....U" */ - 0x66,0x77,0x88,0x99,0xAA,0xBB,0xCC,0xDD, /* 00000068 "fw......" */ - 0xEE,0xFF /* 00000070 ".." */ + 0x05,0x01,0x21,0x20,0x00,0x03,0x41,0x00, /* 00000020 "..! ..A." */ + 0x23,0x00,0x16,0x00,0x39,0x00,0x08,0x00, /* 00000028 "#...9..." */ + 0x10,0x00,0x13,0x00,0x00,0x00,0x00,0x00, /* 00000030 "........" */ + 0x01,0x00,0x03,0x02,0x05,0x04,0x07,0x06, /* 00000038 "........" */ + 0x09,0x08,0x0A,0x0B,0x0C,0x0D,0x0E,0x5C, /* 00000040 ".......\" */ + 0x5C,0x5F,0x53,0x42,0x5F,0x2E,0x50,0x43, /* 00000048 "\_SB_.PC" */ + 0x49,0x30,0x2E,0x55,0x53,0x42,0x31,0x2E, /* 00000050 "I0.USB1." */ + 0x53,0x55,0x42,0x31,0x00,0x00,0x11,0x22, /* 00000058 "SUB1..."" */ + 0x33,0x44,0x55,0x66,0x77,0x01,0x01,0x24, /* 00000060 "3DUfw..$" */ + 0x00,0x10,0x00,0x20,0x00,0x10,0x00,0x04, /* 00000068 "... ...." */ + 0x00,0x14,0x00,0x10,0x00,0x11,0x22,0x33, /* 00000070 "......"3" */ + 0x44,0xEE,0xDD,0xCC,0xBB,0xAA,0x55,0x66, /* 00000078 "D.....Uf" */ + 0x77,0x88,0x99,0xAA,0xBB,0xCC,0xDD,0xEE, /* 00000080 "w......." */ + 0xFF /* 00000088 "." */ }; const unsigned char TemplateSlic[] = @@ -1450,6 +1517,26 @@ const unsigned char TemplateUefi[] = 0x0C,0x0D,0x0E,0x0F,0x00,0x00 /* 00000030 "......" */ }; +const unsigned char TemplateViot[] = +{ + 0x56,0x49,0x4F,0x54,0x80,0x00,0x00,0x00, /* 00000000 "VIOT...." */ + 0x00,0x52,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 ".RINTEL " */ + 0x54,0x65,0x6D,0x70,0x6C,0x61,0x74,0x65, /* 00000010 "Template" */ + 0x00,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ + 0x05,0x01,0x21,0x20,0x04,0x00,0x30,0x00, /* 00000020 "..! ..0." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000028 "........" */ + 0x01,0x00,0x18,0x00,0x00,0x00,0x00,0x00, /* 00000030 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF, /* 00000038 "........" */ + 0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000040 "`......." */ + 0x02,0x00,0x18,0x00,0x00,0x00,0x01,0x00, /* 00000048 "........" */ + 0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00, /* 00000050 "........" */ + 0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000058 "p......." */ + 0x03,0x00,0x10,0x00,0x00,0x00,0x00,0x00, /* 00000060 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000068 "........" */ + 0x04,0x00,0x10,0x00,0x00,0x00,0x00,0x00, /* 00000070 "........" */ + 0x00,0x00,0x00,0x1D,0x00,0x00,0x00,0x00 /* 00000078 "........" */ +}; + const unsigned char TemplateWaet[] = { 0x57,0x41,0x45,0x54,0x28,0x00,0x00,0x00, /* 00000000 "WAET(..." */ diff --git a/source/compiler/dtutils.c b/source/compiler/dtutils.c index a508b51c947b..d69ad2fbce33 100644 --- a/source/compiler/dtutils.c +++ b/source/compiler/dtutils.c @@ -438,6 +438,7 @@ DtGetFieldType ( case ACPI_DMT_BUF16: case ACPI_DMT_BUF128: case ACPI_DMT_PCI_PATH: + case ACPI_DMT_PMTT_VENDOR: Type = DT_FIELD_TYPE_BUFFER; break; @@ -573,6 +574,7 @@ DtGetFieldLength ( case ACPI_DMT_CHKSUM: case ACPI_DMT_SPACEID: case ACPI_DMT_ACCWIDTH: + case ACPI_DMT_CEDT: case ACPI_DMT_IVRS: case ACPI_DMT_GTDT: case ACPI_DMT_MADT: @@ -589,6 +591,7 @@ DtGetFieldLength ( case ACPI_DMT_ERSTACT: case ACPI_DMT_ERSTINST: case ACPI_DMT_DMAR_SCOPE: + case ACPI_DMT_VIOT: ByteLength = 1; break; @@ -599,6 +602,7 @@ DtGetFieldLength ( case ACPI_DMT_HMAT: case ACPI_DMT_NFIT: case ACPI_DMT_PCI_PATH: + case ACPI_DMT_PHAT: ByteLength = 2; break; @@ -673,6 +677,7 @@ DtGetFieldLength ( case ACPI_DMT_BUFFER: case ACPI_DMT_RAW_BUFFER: + case ACPI_DMT_PMTT_VENDOR: Value = DtGetFieldValue (Field); if (Value) |