10d02842fSSascha Wildner /******************************************************************************
20d02842fSSascha Wildner  *
30d02842fSSascha Wildner  * Module Name: dtcompiler.h - header for data table compiler
40d02842fSSascha Wildner  *
50d02842fSSascha Wildner  *****************************************************************************/
60d02842fSSascha Wildner 
70d02842fSSascha Wildner /*
8fe7b5cb4SSascha Wildner  * Copyright (C) 2000 - 2015, Intel Corp.
90d02842fSSascha Wildner  * All rights reserved.
100d02842fSSascha Wildner  *
110d02842fSSascha Wildner  * Redistribution and use in source and binary forms, with or without
120d02842fSSascha Wildner  * modification, are permitted provided that the following conditions
130d02842fSSascha Wildner  * are met:
140d02842fSSascha Wildner  * 1. Redistributions of source code must retain the above copyright
150d02842fSSascha Wildner  *    notice, this list of conditions, and the following disclaimer,
160d02842fSSascha Wildner  *    without modification.
170d02842fSSascha Wildner  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
180d02842fSSascha Wildner  *    substantially similar to the "NO WARRANTY" disclaimer below
190d02842fSSascha Wildner  *    ("Disclaimer") and any redistribution must be conditioned upon
200d02842fSSascha Wildner  *    including a substantially similar Disclaimer requirement for further
210d02842fSSascha Wildner  *    binary redistribution.
220d02842fSSascha Wildner  * 3. Neither the names of the above-listed copyright holders nor the names
230d02842fSSascha Wildner  *    of any contributors may be used to endorse or promote products derived
240d02842fSSascha Wildner  *    from this software without specific prior written permission.
250d02842fSSascha Wildner  *
260d02842fSSascha Wildner  * Alternatively, this software may be distributed under the terms of the
270d02842fSSascha Wildner  * GNU General Public License ("GPL") version 2 as published by the Free
280d02842fSSascha Wildner  * Software Foundation.
290d02842fSSascha Wildner  *
300d02842fSSascha Wildner  * NO WARRANTY
310d02842fSSascha Wildner  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
320d02842fSSascha Wildner  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
330d02842fSSascha Wildner  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
340d02842fSSascha Wildner  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
350d02842fSSascha Wildner  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
360d02842fSSascha Wildner  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
370d02842fSSascha Wildner  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
380d02842fSSascha Wildner  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
390d02842fSSascha Wildner  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
400d02842fSSascha Wildner  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
410d02842fSSascha Wildner  * POSSIBILITY OF SUCH DAMAGES.
420d02842fSSascha Wildner  */
430d02842fSSascha Wildner 
440d02842fSSascha Wildner #define __DTCOMPILER_H__
450d02842fSSascha Wildner 
460d02842fSSascha Wildner #ifndef _DTCOMPILER
470d02842fSSascha Wildner #define _DTCOMPILER
480d02842fSSascha Wildner 
490d02842fSSascha Wildner #include <stdio.h>
500d02842fSSascha Wildner #include "acdisasm.h"
510d02842fSSascha Wildner 
520d02842fSSascha Wildner 
5379eafdd7SSascha Wildner #define ASL_FIELD_CACHE_SIZE            512
5479eafdd7SSascha Wildner #define ASL_SUBTABLE_CACHE_SIZE         128
5579eafdd7SSascha Wildner 
5679eafdd7SSascha Wildner 
570d02842fSSascha Wildner #undef DT_EXTERN
580d02842fSSascha Wildner 
590d02842fSSascha Wildner #ifdef _DECLARE_DT_GLOBALS
600d02842fSSascha Wildner #define DT_EXTERN
610d02842fSSascha Wildner #define DT_INIT_GLOBAL(a,b)         (a)=(b)
620d02842fSSascha Wildner #else
630d02842fSSascha Wildner #define DT_EXTERN                   extern
640d02842fSSascha Wildner #define DT_INIT_GLOBAL(a,b)         (a)
650d02842fSSascha Wildner #endif
660d02842fSSascha Wildner 
670d02842fSSascha Wildner 
680d02842fSSascha Wildner /* Types for individual fields (one per input line) */
690d02842fSSascha Wildner 
700d02842fSSascha Wildner #define DT_FIELD_TYPE_STRING            0
710d02842fSSascha Wildner #define DT_FIELD_TYPE_INTEGER           1
720d02842fSSascha Wildner #define DT_FIELD_TYPE_BUFFER            2
730d02842fSSascha Wildner #define DT_FIELD_TYPE_PCI_PATH          3
740d02842fSSascha Wildner #define DT_FIELD_TYPE_FLAG              4
750d02842fSSascha Wildner #define DT_FIELD_TYPE_FLAGS_INTEGER     5
760d02842fSSascha Wildner #define DT_FIELD_TYPE_INLINE_SUBTABLE   6
770d02842fSSascha Wildner #define DT_FIELD_TYPE_UUID              7
780d02842fSSascha Wildner #define DT_FIELD_TYPE_UNICODE           8
790d02842fSSascha Wildner #define DT_FIELD_TYPE_DEVICE_PATH       9
800d02842fSSascha Wildner #define DT_FIELD_TYPE_LABEL             10
810d02842fSSascha Wildner 
820d02842fSSascha Wildner 
830d02842fSSascha Wildner /*
840d02842fSSascha Wildner  * Structure used for each individual field within an ACPI table
850d02842fSSascha Wildner  */
860d02842fSSascha Wildner typedef struct dt_field
870d02842fSSascha Wildner {
880d02842fSSascha Wildner     char                    *Name;       /* Field name (from name : value) */
890d02842fSSascha Wildner     char                    *Value;      /* Field value (from name : value) */
905943f66cSSascha Wildner     UINT32                  StringLength;/* Length of Value */
910d02842fSSascha Wildner     struct dt_field         *Next;       /* Next field */
920d02842fSSascha Wildner     struct dt_field         *NextLabel;  /* If field is a label, next label */
930d02842fSSascha Wildner     UINT32                  Line;        /* Line number for this field */
940d02842fSSascha Wildner     UINT32                  ByteOffset;  /* Offset in source file for field */
950d02842fSSascha Wildner     UINT32                  NameColumn;  /* Start column for field name */
960d02842fSSascha Wildner     UINT32                  Column;      /* Start column for field value */
970d02842fSSascha Wildner     UINT32                  TableOffset; /* Binary offset within ACPI table */
980d02842fSSascha Wildner     UINT8                   Flags;
990d02842fSSascha Wildner 
1000d02842fSSascha Wildner } DT_FIELD;
1010d02842fSSascha Wildner 
1020d02842fSSascha Wildner /* Flags for above */
1030d02842fSSascha Wildner 
1040d02842fSSascha Wildner #define DT_FIELD_NOT_ALLOCATED      1
1050d02842fSSascha Wildner 
1060d02842fSSascha Wildner 
1070d02842fSSascha Wildner /*
1080d02842fSSascha Wildner  * Structure used for individual subtables within an ACPI table
1090d02842fSSascha Wildner  */
1100d02842fSSascha Wildner typedef struct dt_subtable
1110d02842fSSascha Wildner {
1120d02842fSSascha Wildner     struct dt_subtable      *Parent;
1130d02842fSSascha Wildner     struct dt_subtable      *Child;
1140d02842fSSascha Wildner     struct dt_subtable      *Peer;
1150d02842fSSascha Wildner     struct dt_subtable      *StackTop;
1160d02842fSSascha Wildner     UINT8                   *Buffer;
1170d02842fSSascha Wildner     UINT8                   *LengthField;
118896f2e3aSSascha Wildner     char                    *Name;
1190d02842fSSascha Wildner     UINT32                  Length;
1200d02842fSSascha Wildner     UINT32                  TotalLength;
1210d02842fSSascha Wildner     UINT32                  SizeOfLengthField;
1220d02842fSSascha Wildner     UINT16                  Depth;
1230d02842fSSascha Wildner     UINT8                   Flags;
1240d02842fSSascha Wildner 
1250d02842fSSascha Wildner } DT_SUBTABLE;
1260d02842fSSascha Wildner 
1270d02842fSSascha Wildner 
1280d02842fSSascha Wildner /*
1290d02842fSSascha Wildner  * Globals
1300d02842fSSascha Wildner  */
1310d02842fSSascha Wildner 
1320d02842fSSascha Wildner /* List of all field names and values from the input source */
1330d02842fSSascha Wildner 
1340d02842fSSascha Wildner DT_EXTERN DT_FIELD          DT_INIT_GLOBAL (*Gbl_FieldList, NULL);
1350d02842fSSascha Wildner 
1360d02842fSSascha Wildner /* List of all compiled tables and subtables */
1370d02842fSSascha Wildner 
1380d02842fSSascha Wildner DT_EXTERN DT_SUBTABLE       DT_INIT_GLOBAL (*Gbl_RootTable, NULL);
1390d02842fSSascha Wildner 
1400d02842fSSascha Wildner /* Stack for subtables */
1410d02842fSSascha Wildner 
1420d02842fSSascha Wildner DT_EXTERN DT_SUBTABLE       DT_INIT_GLOBAL (*Gbl_SubtableStack, NULL);
1430d02842fSSascha Wildner 
1440d02842fSSascha Wildner /* List for defined labels */
1450d02842fSSascha Wildner 
1460d02842fSSascha Wildner DT_EXTERN DT_FIELD          DT_INIT_GLOBAL (*Gbl_LabelList, NULL);
1470d02842fSSascha Wildner 
1480d02842fSSascha Wildner /* Current offset within the binary output table */
1490d02842fSSascha Wildner 
1500d02842fSSascha Wildner DT_EXTERN UINT32            DT_INIT_GLOBAL (Gbl_CurrentTableOffset, 0);
1510d02842fSSascha Wildner 
15279eafdd7SSascha Wildner /* Local caches */
15379eafdd7SSascha Wildner 
15479eafdd7SSascha Wildner DT_EXTERN UINT32            DT_INIT_GLOBAL (Gbl_SubtableCount, 0);
15579eafdd7SSascha Wildner DT_EXTERN ASL_CACHE_INFO    DT_INIT_GLOBAL (*Gbl_SubtableCacheList, NULL);
15679eafdd7SSascha Wildner DT_EXTERN DT_SUBTABLE       DT_INIT_GLOBAL (*Gbl_SubtableCacheNext, NULL);
15779eafdd7SSascha Wildner DT_EXTERN DT_SUBTABLE       DT_INIT_GLOBAL (*Gbl_SubtableCacheLast, NULL);
15879eafdd7SSascha Wildner 
15979eafdd7SSascha Wildner DT_EXTERN UINT32            DT_INIT_GLOBAL (Gbl_FieldCount, 0);
16079eafdd7SSascha Wildner DT_EXTERN ASL_CACHE_INFO    DT_INIT_GLOBAL (*Gbl_FieldCacheList, NULL);
16179eafdd7SSascha Wildner DT_EXTERN DT_FIELD          DT_INIT_GLOBAL (*Gbl_FieldCacheNext, NULL);
16279eafdd7SSascha Wildner DT_EXTERN DT_FIELD          DT_INIT_GLOBAL (*Gbl_FieldCacheLast, NULL);
16379eafdd7SSascha Wildner 
1640d02842fSSascha Wildner 
1650d02842fSSascha Wildner /* dtcompiler - main module */
1660d02842fSSascha Wildner 
1670d02842fSSascha Wildner ACPI_STATUS
1680d02842fSSascha Wildner DtCompileTable (
1690d02842fSSascha Wildner     DT_FIELD                **Field,
1700d02842fSSascha Wildner     ACPI_DMTABLE_INFO       *Info,
1710d02842fSSascha Wildner     DT_SUBTABLE             **RetSubtable,
1720d02842fSSascha Wildner     BOOLEAN                 Required);
1730d02842fSSascha Wildner 
174896f2e3aSSascha Wildner ACPI_STATUS
175*820c5b08SSascha Wildner DtCompileTwoSubtables (
176*820c5b08SSascha Wildner     void                    **List,
177*820c5b08SSascha Wildner     ACPI_DMTABLE_INFO       *TableInfo1,
178*820c5b08SSascha Wildner     ACPI_DMTABLE_INFO       *TableInfo2);
179*820c5b08SSascha Wildner 
180*820c5b08SSascha Wildner ACPI_STATUS
181896f2e3aSSascha Wildner DtCompilePadding (
182896f2e3aSSascha Wildner     UINT32                  Length,
183896f2e3aSSascha Wildner     DT_SUBTABLE             **RetSubtable);
184896f2e3aSSascha Wildner 
1850d02842fSSascha Wildner 
1860d02842fSSascha Wildner /* dtio - binary and text input/output */
1870d02842fSSascha Wildner 
1880d02842fSSascha Wildner UINT32
1890d02842fSSascha Wildner DtGetNextLine (
19025ca8c79SSascha Wildner     FILE                    *Handle,
19125ca8c79SSascha Wildner     UINT32                  Flags);
19225ca8c79SSascha Wildner 
19325ca8c79SSascha Wildner /* Flags for DtGetNextLine */
19425ca8c79SSascha Wildner 
19525ca8c79SSascha Wildner #define DT_ALLOW_MULTILINE_QUOTES   0x01
19625ca8c79SSascha Wildner 
1970d02842fSSascha Wildner 
1980d02842fSSascha Wildner DT_FIELD *
1990d02842fSSascha Wildner DtScanFile (
2000d02842fSSascha Wildner     FILE                    *Handle);
2010d02842fSSascha Wildner 
2020d02842fSSascha Wildner void
2030d02842fSSascha Wildner DtOutputBinary (
2040d02842fSSascha Wildner     DT_SUBTABLE             *RootTable);
2050d02842fSSascha Wildner 
2060d02842fSSascha Wildner void
2070d02842fSSascha Wildner DtDumpSubtableList (
2080d02842fSSascha Wildner     void);
2090d02842fSSascha Wildner 
2100d02842fSSascha Wildner void
2110d02842fSSascha Wildner DtDumpFieldList (
2120d02842fSSascha Wildner     DT_FIELD                *Field);
2130d02842fSSascha Wildner 
2140d02842fSSascha Wildner void
2150d02842fSSascha Wildner DtWriteFieldToListing (
2160d02842fSSascha Wildner     UINT8                   *Buffer,
2170d02842fSSascha Wildner     DT_FIELD                *Field,
2180d02842fSSascha Wildner     UINT32                  Length);
2190d02842fSSascha Wildner 
2200d02842fSSascha Wildner void
2210d02842fSSascha Wildner DtWriteTableToListing (
2220d02842fSSascha Wildner     void);
2230d02842fSSascha Wildner 
2240d02842fSSascha Wildner 
2250d02842fSSascha Wildner /* dtsubtable - compile subtables */
2260d02842fSSascha Wildner 
2270d02842fSSascha Wildner void
2280d02842fSSascha Wildner DtCreateSubtable (
2290d02842fSSascha Wildner     UINT8                   *Buffer,
2300d02842fSSascha Wildner     UINT32                  Length,
2310d02842fSSascha Wildner     DT_SUBTABLE             **RetSubtable);
2320d02842fSSascha Wildner 
2330d02842fSSascha Wildner UINT32
2340d02842fSSascha Wildner DtGetSubtableLength (
2350d02842fSSascha Wildner     DT_FIELD                *Field,
2360d02842fSSascha Wildner     ACPI_DMTABLE_INFO       *Info);
2370d02842fSSascha Wildner 
2380d02842fSSascha Wildner void
2390d02842fSSascha Wildner DtSetSubtableLength (
2400d02842fSSascha Wildner     DT_SUBTABLE             *Subtable);
2410d02842fSSascha Wildner 
2420d02842fSSascha Wildner void
2430d02842fSSascha Wildner DtPushSubtable (
2440d02842fSSascha Wildner     DT_SUBTABLE             *Subtable);
2450d02842fSSascha Wildner 
2460d02842fSSascha Wildner void
2470d02842fSSascha Wildner DtPopSubtable (
2480d02842fSSascha Wildner     void);
2490d02842fSSascha Wildner 
2500d02842fSSascha Wildner DT_SUBTABLE *
2510d02842fSSascha Wildner DtPeekSubtable (
2520d02842fSSascha Wildner     void);
2530d02842fSSascha Wildner 
2540d02842fSSascha Wildner void
2550d02842fSSascha Wildner DtInsertSubtable (
2560d02842fSSascha Wildner     DT_SUBTABLE             *ParentTable,
2570d02842fSSascha Wildner     DT_SUBTABLE             *Subtable);
2580d02842fSSascha Wildner 
2590d02842fSSascha Wildner DT_SUBTABLE *
2600d02842fSSascha Wildner DtGetNextSubtable (
2610d02842fSSascha Wildner     DT_SUBTABLE             *ParentTable,
2620d02842fSSascha Wildner     DT_SUBTABLE             *ChildTable);
2630d02842fSSascha Wildner 
2640d02842fSSascha Wildner DT_SUBTABLE *
2650d02842fSSascha Wildner DtGetParentSubtable (
2660d02842fSSascha Wildner     DT_SUBTABLE             *Subtable);
2670d02842fSSascha Wildner 
2680d02842fSSascha Wildner 
2690d02842fSSascha Wildner /* dtexpress - Integer expressions and labels */
2700d02842fSSascha Wildner 
2710d02842fSSascha Wildner ACPI_STATUS
2720d02842fSSascha Wildner DtResolveIntegerExpression (
2730d02842fSSascha Wildner     DT_FIELD                *Field,
2740d02842fSSascha Wildner     UINT64                  *ReturnValue);
2750d02842fSSascha Wildner 
2760d02842fSSascha Wildner UINT64
2770d02842fSSascha Wildner DtDoOperator (
2780d02842fSSascha Wildner     UINT64                  LeftValue,
2790d02842fSSascha Wildner     UINT32                  Operator,
2800d02842fSSascha Wildner     UINT64                  RightValue);
2810d02842fSSascha Wildner 
2820d02842fSSascha Wildner UINT64
2830d02842fSSascha Wildner DtResolveLabel (
2840d02842fSSascha Wildner     char                    *LabelString);
2850d02842fSSascha Wildner 
2860d02842fSSascha Wildner void
2870d02842fSSascha Wildner DtDetectAllLabels (
2880d02842fSSascha Wildner     DT_FIELD                *FieldList);
2890d02842fSSascha Wildner 
2900d02842fSSascha Wildner 
2910d02842fSSascha Wildner /* dtfield - Compile individual fields within a table */
2920d02842fSSascha Wildner 
2930d02842fSSascha Wildner void
2940d02842fSSascha Wildner DtCompileOneField (
2950d02842fSSascha Wildner     UINT8                   *Buffer,
2960d02842fSSascha Wildner     DT_FIELD                *Field,
2970d02842fSSascha Wildner     UINT32                  ByteLength,
2980d02842fSSascha Wildner     UINT8                   Type,
2990d02842fSSascha Wildner     UINT8                   Flags);
3000d02842fSSascha Wildner 
3010d02842fSSascha Wildner void
3020d02842fSSascha Wildner DtCompileInteger (
3030d02842fSSascha Wildner     UINT8                   *Buffer,
3040d02842fSSascha Wildner     DT_FIELD                *Field,
3050d02842fSSascha Wildner     UINT32                  ByteLength,
3060d02842fSSascha Wildner     UINT8                   Flags);
3070d02842fSSascha Wildner 
3080d02842fSSascha Wildner UINT32
3090d02842fSSascha Wildner DtCompileBuffer (
3100d02842fSSascha Wildner     UINT8                   *Buffer,
3110d02842fSSascha Wildner     char                    *Value,
3120d02842fSSascha Wildner     DT_FIELD                *Field,
3130d02842fSSascha Wildner     UINT32                  ByteLength);
3140d02842fSSascha Wildner 
3150d02842fSSascha Wildner void
3160d02842fSSascha Wildner DtCompileFlag (
3170d02842fSSascha Wildner     UINT8                   *Buffer,
3180d02842fSSascha Wildner     DT_FIELD                *Field,
3190d02842fSSascha Wildner     ACPI_DMTABLE_INFO       *Info);
3200d02842fSSascha Wildner 
3210d02842fSSascha Wildner 
3220d02842fSSascha Wildner /* dtparser - lex/yacc files */
3230d02842fSSascha Wildner 
3240d02842fSSascha Wildner UINT64
3250d02842fSSascha Wildner DtEvaluateExpression (
3260d02842fSSascha Wildner     char                    *ExprString);
3270d02842fSSascha Wildner 
3280d02842fSSascha Wildner int
3290d02842fSSascha Wildner DtInitLexer (
3300d02842fSSascha Wildner     char                    *String);
3310d02842fSSascha Wildner 
3320d02842fSSascha Wildner void
3330d02842fSSascha Wildner DtTerminateLexer (
3340d02842fSSascha Wildner     void);
3350d02842fSSascha Wildner 
3360d02842fSSascha Wildner char *
3370d02842fSSascha Wildner DtGetOpName (
3380d02842fSSascha Wildner     UINT32                  ParseOpcode);
3390d02842fSSascha Wildner 
3400d02842fSSascha Wildner 
3410d02842fSSascha Wildner /* dtutils - Miscellaneous utilities */
3420d02842fSSascha Wildner 
3430d02842fSSascha Wildner typedef
3440d02842fSSascha Wildner void (*DT_WALK_CALLBACK) (
3450d02842fSSascha Wildner     DT_SUBTABLE             *Subtable,
3460d02842fSSascha Wildner     void                    *Context,
3470d02842fSSascha Wildner     void                    *ReturnValue);
3480d02842fSSascha Wildner 
3490d02842fSSascha Wildner void
3500d02842fSSascha Wildner DtWalkTableTree (
3510d02842fSSascha Wildner     DT_SUBTABLE             *StartTable,
3520d02842fSSascha Wildner     DT_WALK_CALLBACK        UserFunction,
3530d02842fSSascha Wildner     void                    *Context,
3540d02842fSSascha Wildner     void                    *ReturnValue);
3550d02842fSSascha Wildner 
3560d02842fSSascha Wildner void
3570d02842fSSascha Wildner DtError (
3580d02842fSSascha Wildner     UINT8                   Level,
3599e1c0880SSascha Wildner     UINT16                  MessageId,
3600d02842fSSascha Wildner     DT_FIELD                *FieldObject,
3610d02842fSSascha Wildner     char                    *ExtraMessage);
3620d02842fSSascha Wildner 
3630d02842fSSascha Wildner void
3640d02842fSSascha Wildner DtNameError (
3650d02842fSSascha Wildner     UINT8                   Level,
3669e1c0880SSascha Wildner     UINT16                  MessageId,
3670d02842fSSascha Wildner     DT_FIELD                *FieldObject,
3680d02842fSSascha Wildner     char                    *ExtraMessage);
3690d02842fSSascha Wildner 
3700d02842fSSascha Wildner void
3710d02842fSSascha Wildner DtFatal (
3729e1c0880SSascha Wildner     UINT16                  MessageId,
3730d02842fSSascha Wildner     DT_FIELD                *FieldObject,
3740d02842fSSascha Wildner     char                    *ExtraMessage);
3750d02842fSSascha Wildner 
3760d02842fSSascha Wildner ACPI_STATUS
3770d02842fSSascha Wildner DtStrtoul64 (
3780d02842fSSascha Wildner     char                    *String,
3790d02842fSSascha Wildner     UINT64                  *ReturnInteger);
3800d02842fSSascha Wildner 
3810d02842fSSascha Wildner char*
3820d02842fSSascha Wildner DtGetFieldValue (
3830d02842fSSascha Wildner     DT_FIELD                *Field);
3840d02842fSSascha Wildner 
3850d02842fSSascha Wildner UINT8
3860d02842fSSascha Wildner DtGetFieldType (
3870d02842fSSascha Wildner     ACPI_DMTABLE_INFO       *Info);
3880d02842fSSascha Wildner 
3890d02842fSSascha Wildner UINT32
3900d02842fSSascha Wildner DtGetBufferLength (
3910d02842fSSascha Wildner     char                    *Buffer);
3920d02842fSSascha Wildner 
3930d02842fSSascha Wildner UINT32
3940d02842fSSascha Wildner DtGetFieldLength (
3950d02842fSSascha Wildner     DT_FIELD                *Field,
3960d02842fSSascha Wildner     ACPI_DMTABLE_INFO       *Info);
3970d02842fSSascha Wildner 
3980d02842fSSascha Wildner void
3990d02842fSSascha Wildner DtSetTableChecksum (
4000d02842fSSascha Wildner     UINT8                   *ChecksumPointer);
4010d02842fSSascha Wildner 
4020d02842fSSascha Wildner void
4030d02842fSSascha Wildner DtSetTableLength(
4040d02842fSSascha Wildner     void);
4050d02842fSSascha Wildner 
40679eafdd7SSascha Wildner DT_SUBTABLE *
40779eafdd7SSascha Wildner UtSubtableCacheCalloc (
40879eafdd7SSascha Wildner     void);
40979eafdd7SSascha Wildner 
41079eafdd7SSascha Wildner DT_FIELD *
41179eafdd7SSascha Wildner UtFieldCacheCalloc (
41279eafdd7SSascha Wildner     void);
41379eafdd7SSascha Wildner 
4140d02842fSSascha Wildner void
41579eafdd7SSascha Wildner DtDeleteCaches (
4160d02842fSSascha Wildner     void);
4170d02842fSSascha Wildner 
4180d02842fSSascha Wildner 
4190d02842fSSascha Wildner /* dttable - individual table compilation */
4200d02842fSSascha Wildner 
4210d02842fSSascha Wildner ACPI_STATUS
4220d02842fSSascha Wildner DtCompileFacs (
4230d02842fSSascha Wildner     DT_FIELD                **PFieldList);
4240d02842fSSascha Wildner 
4250d02842fSSascha Wildner ACPI_STATUS
4260d02842fSSascha Wildner DtCompileRsdp (
4270d02842fSSascha Wildner     DT_FIELD                **PFieldList);
4280d02842fSSascha Wildner 
4290d02842fSSascha Wildner ACPI_STATUS
4300d02842fSSascha Wildner DtCompileAsf (
4310d02842fSSascha Wildner     void                    **PFieldList);
4320d02842fSSascha Wildner 
4330d02842fSSascha Wildner ACPI_STATUS
4340d02842fSSascha Wildner DtCompileCpep (
4350d02842fSSascha Wildner     void                    **PFieldList);
4360d02842fSSascha Wildner 
4370d02842fSSascha Wildner ACPI_STATUS
4380d02842fSSascha Wildner DtCompileCsrt (
4390d02842fSSascha Wildner     void                    **PFieldList);
4400d02842fSSascha Wildner 
4410d02842fSSascha Wildner ACPI_STATUS
4420d02842fSSascha Wildner DtCompileDbg2 (
4430d02842fSSascha Wildner     void                    **PFieldList);
4440d02842fSSascha Wildner 
4450d02842fSSascha Wildner ACPI_STATUS
4460d02842fSSascha Wildner DtCompileDmar (
4470d02842fSSascha Wildner     void                    **PFieldList);
4480d02842fSSascha Wildner 
4490d02842fSSascha Wildner ACPI_STATUS
450896f2e3aSSascha Wildner DtCompileDrtm (
451896f2e3aSSascha Wildner     void                    **PFieldList);
452896f2e3aSSascha Wildner 
453896f2e3aSSascha Wildner ACPI_STATUS
4540d02842fSSascha Wildner DtCompileEinj (
4550d02842fSSascha Wildner     void                    **PFieldList);
4560d02842fSSascha Wildner 
4570d02842fSSascha Wildner ACPI_STATUS
4580d02842fSSascha Wildner DtCompileErst (
4590d02842fSSascha Wildner     void                    **PFieldList);
4600d02842fSSascha Wildner 
4610d02842fSSascha Wildner ACPI_STATUS
4620d02842fSSascha Wildner DtCompileFadt (
4630d02842fSSascha Wildner     void                    **PFieldList);
4640d02842fSSascha Wildner 
4650d02842fSSascha Wildner ACPI_STATUS
4660d02842fSSascha Wildner DtCompileFpdt (
4670d02842fSSascha Wildner     void                    **PFieldList);
4680d02842fSSascha Wildner 
4690d02842fSSascha Wildner ACPI_STATUS
470066b6da2SSascha Wildner DtCompileGtdt (
471066b6da2SSascha Wildner     void                    **PFieldList);
472066b6da2SSascha Wildner 
473066b6da2SSascha Wildner ACPI_STATUS
4740d02842fSSascha Wildner DtCompileHest (
4750d02842fSSascha Wildner     void                    **PFieldList);
4760d02842fSSascha Wildner 
4770d02842fSSascha Wildner ACPI_STATUS
478896f2e3aSSascha Wildner DtCompileIort (
479896f2e3aSSascha Wildner     void                    **PFieldList);
480896f2e3aSSascha Wildner 
481896f2e3aSSascha Wildner ACPI_STATUS
4820d02842fSSascha Wildner DtCompileIvrs (
4830d02842fSSascha Wildner     void                    **PFieldList);
4840d02842fSSascha Wildner 
4850d02842fSSascha Wildner ACPI_STATUS
4869e1c0880SSascha Wildner DtCompileLpit (
4879e1c0880SSascha Wildner     void                    **PFieldList);
4889e1c0880SSascha Wildner 
4899e1c0880SSascha Wildner ACPI_STATUS
4900d02842fSSascha Wildner DtCompileMadt (
4910d02842fSSascha Wildner     void                    **PFieldList);
4920d02842fSSascha Wildner 
4930d02842fSSascha Wildner ACPI_STATUS
4940d02842fSSascha Wildner DtCompileMcfg (
4950d02842fSSascha Wildner     void                    **PFieldList);
4960d02842fSSascha Wildner 
4970d02842fSSascha Wildner ACPI_STATUS
4980d02842fSSascha Wildner DtCompileMpst (
4990d02842fSSascha Wildner     void                    **PFieldList);
5000d02842fSSascha Wildner 
5010d02842fSSascha Wildner ACPI_STATUS
5020d02842fSSascha Wildner DtCompileMsct (
5030d02842fSSascha Wildner     void                    **PFieldList);
5040d02842fSSascha Wildner 
5050d02842fSSascha Wildner ACPI_STATUS
5060d02842fSSascha Wildner DtCompileMtmr (
5070d02842fSSascha Wildner     void                    **PFieldList);
5080d02842fSSascha Wildner 
5090d02842fSSascha Wildner ACPI_STATUS
510896f2e3aSSascha Wildner DtCompileNfit (
511896f2e3aSSascha Wildner     void                    **PFieldList);
512896f2e3aSSascha Wildner 
513896f2e3aSSascha Wildner ACPI_STATUS
5140d02842fSSascha Wildner DtCompilePmtt (
5150d02842fSSascha Wildner     void                    **PFieldList);
5160d02842fSSascha Wildner 
5170d02842fSSascha Wildner ACPI_STATUS
5180d02842fSSascha Wildner DtCompilePcct (
5190d02842fSSascha Wildner     void                    **PFieldList);
5200d02842fSSascha Wildner 
5210d02842fSSascha Wildner ACPI_STATUS
5220d02842fSSascha Wildner DtCompileRsdt (
5230d02842fSSascha Wildner     void                    **PFieldList);
5240d02842fSSascha Wildner 
5250d02842fSSascha Wildner ACPI_STATUS
5260d02842fSSascha Wildner DtCompileS3pt (
5270d02842fSSascha Wildner     DT_FIELD                **PFieldList);
5280d02842fSSascha Wildner 
5290d02842fSSascha Wildner ACPI_STATUS
5300d02842fSSascha Wildner DtCompileSlic (
5310d02842fSSascha Wildner     void                    **PFieldList);
5320d02842fSSascha Wildner 
5330d02842fSSascha Wildner ACPI_STATUS
5340d02842fSSascha Wildner DtCompileSlit (
5350d02842fSSascha Wildner     void                    **PFieldList);
5360d02842fSSascha Wildner 
5370d02842fSSascha Wildner ACPI_STATUS
5380d02842fSSascha Wildner DtCompileSrat (
5390d02842fSSascha Wildner     void                    **PFieldList);
5400d02842fSSascha Wildner 
5410d02842fSSascha Wildner ACPI_STATUS
542896f2e3aSSascha Wildner DtCompileStao (
543896f2e3aSSascha Wildner     void                    **PFieldList);
544896f2e3aSSascha Wildner 
545896f2e3aSSascha Wildner ACPI_STATUS
546267c04fdSSascha Wildner DtCompileTcpa (
547267c04fdSSascha Wildner     void                    **PFieldList);
548267c04fdSSascha Wildner 
549267c04fdSSascha Wildner ACPI_STATUS
5500d02842fSSascha Wildner DtCompileUefi (
5510d02842fSSascha Wildner     void                    **PFieldList);
5520d02842fSSascha Wildner 
5530d02842fSSascha Wildner ACPI_STATUS
5540d02842fSSascha Wildner DtCompileVrtc (
5550d02842fSSascha Wildner     void                    **PFieldList);
5560d02842fSSascha Wildner 
5570d02842fSSascha Wildner ACPI_STATUS
5580d02842fSSascha Wildner DtCompileWdat (
5590d02842fSSascha Wildner     void                    **PFieldList);
5600d02842fSSascha Wildner 
5610d02842fSSascha Wildner ACPI_STATUS
562896f2e3aSSascha Wildner DtCompileWpbt (
563896f2e3aSSascha Wildner     void                    **PFieldList);
564896f2e3aSSascha Wildner 
565896f2e3aSSascha Wildner ACPI_STATUS
5660d02842fSSascha Wildner DtCompileXsdt (
5670d02842fSSascha Wildner     void                    **PFieldList);
5680d02842fSSascha Wildner 
5690d02842fSSascha Wildner ACPI_STATUS
5700d02842fSSascha Wildner DtCompileGeneric (
571896f2e3aSSascha Wildner     void                    **PFieldList,
572896f2e3aSSascha Wildner     char                    *TermFieldName,
573896f2e3aSSascha Wildner     UINT32                  *PFieldLength);
5740d02842fSSascha Wildner 
5750d02842fSSascha Wildner ACPI_DMTABLE_INFO *
5760d02842fSSascha Wildner DtGetGenericTableInfo (
5770d02842fSSascha Wildner     char                    *Name);
5780d02842fSSascha Wildner 
5790d02842fSSascha Wildner /* ACPI Table templates */
5800d02842fSSascha Wildner 
5810d02842fSSascha Wildner extern const unsigned char  TemplateAsf[];
5820d02842fSSascha Wildner extern const unsigned char  TemplateBoot[];
5830d02842fSSascha Wildner extern const unsigned char  TemplateBert[];
5840d02842fSSascha Wildner extern const unsigned char  TemplateBgrt[];
5850d02842fSSascha Wildner extern const unsigned char  TemplateCpep[];
5860d02842fSSascha Wildner extern const unsigned char  TemplateCsrt[];
5870d02842fSSascha Wildner extern const unsigned char  TemplateDbg2[];
5880d02842fSSascha Wildner extern const unsigned char  TemplateDbgp[];
5890d02842fSSascha Wildner extern const unsigned char  TemplateDmar[];
590896f2e3aSSascha Wildner extern const unsigned char  TemplateDrtm[];
5910d02842fSSascha Wildner extern const unsigned char  TemplateEcdt[];
5920d02842fSSascha Wildner extern const unsigned char  TemplateEinj[];
5930d02842fSSascha Wildner extern const unsigned char  TemplateErst[];
5940d02842fSSascha Wildner extern const unsigned char  TemplateFadt[];
5950d02842fSSascha Wildner extern const unsigned char  TemplateFpdt[];
5960d02842fSSascha Wildner extern const unsigned char  TemplateGtdt[];
5970d02842fSSascha Wildner extern const unsigned char  TemplateHest[];
5980d02842fSSascha Wildner extern const unsigned char  TemplateHpet[];
599896f2e3aSSascha Wildner extern const unsigned char  TemplateIort[];
6000d02842fSSascha Wildner extern const unsigned char  TemplateIvrs[];
6019e1c0880SSascha Wildner extern const unsigned char  TemplateLpit[];
6020d02842fSSascha Wildner extern const unsigned char  TemplateMadt[];
6030d02842fSSascha Wildner extern const unsigned char  TemplateMcfg[];
6040d02842fSSascha Wildner extern const unsigned char  TemplateMchi[];
6050d02842fSSascha Wildner extern const unsigned char  TemplateMpst[];
6060d02842fSSascha Wildner extern const unsigned char  TemplateMsct[];
6075943f66cSSascha Wildner extern const unsigned char  TemplateMsdm[];
6080d02842fSSascha Wildner extern const unsigned char  TemplateMtmr[];
609896f2e3aSSascha Wildner extern const unsigned char  TemplateNfit[];
6100d02842fSSascha Wildner extern const unsigned char  TemplatePcct[];
6110d02842fSSascha Wildner extern const unsigned char  TemplatePmtt[];
6120d02842fSSascha Wildner extern const unsigned char  TemplateRsdt[];
6130d02842fSSascha Wildner extern const unsigned char  TemplateS3pt[];
6140d02842fSSascha Wildner extern const unsigned char  TemplateSbst[];
6150d02842fSSascha Wildner extern const unsigned char  TemplateSlic[];
6160d02842fSSascha Wildner extern const unsigned char  TemplateSlit[];
6170d02842fSSascha Wildner extern const unsigned char  TemplateSpcr[];
6180d02842fSSascha Wildner extern const unsigned char  TemplateSpmi[];
6190d02842fSSascha Wildner extern const unsigned char  TemplateSrat[];
620896f2e3aSSascha Wildner extern const unsigned char  TemplateStao[];
6210d02842fSSascha Wildner extern const unsigned char  TemplateTcpa[];
6220d02842fSSascha Wildner extern const unsigned char  TemplateTpm2[];
6230d02842fSSascha Wildner extern const unsigned char  TemplateUefi[];
6240d02842fSSascha Wildner extern const unsigned char  TemplateVrtc[];
6250d02842fSSascha Wildner extern const unsigned char  TemplateWaet[];
6260d02842fSSascha Wildner extern const unsigned char  TemplateWdat[];
6270d02842fSSascha Wildner extern const unsigned char  TemplateWddt[];
6280d02842fSSascha Wildner extern const unsigned char  TemplateWdrt[];
629896f2e3aSSascha Wildner extern const unsigned char  TemplateWpbt[];
630896f2e3aSSascha Wildner extern const unsigned char  TemplateXenv[];
6310d02842fSSascha Wildner extern const unsigned char  TemplateXsdt[];
6320d02842fSSascha Wildner 
6330d02842fSSascha Wildner #endif
634