diff options
Diffstat (limited to 'sys/contrib/dev/acpica/compiler/dttable2.c')
-rw-r--r-- | sys/contrib/dev/acpica/compiler/dttable2.c | 169 |
1 files changed, 169 insertions, 0 deletions
diff --git a/sys/contrib/dev/acpica/compiler/dttable2.c b/sys/contrib/dev/acpica/compiler/dttable2.c index 8d776c9d5526..c6638a0efa21 100644 --- a/sys/contrib/dev/acpica/compiler/dttable2.c +++ b/sys/contrib/dev/acpica/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 |