1 /******************************************************************************
2  *
3  * Module Name: ahaslkey - Table of all known ASL non-operator keywords and
4  *                         table of iASL Preprocessor directives
5  *
6  *****************************************************************************/
7 
8 /*
9  * Copyright (C) 2000 - 2015, Intel Corp.
10  * All rights reserved.
11  *
12  * Redistribution and use in source and binary forms, with or without
13  * modification, are permitted provided that the following conditions
14  * are met:
15  * 1. Redistributions of source code must retain the above copyright
16  *    notice, this list of conditions, and the following disclaimer,
17  *    without modification.
18  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
19  *    substantially similar to the "NO WARRANTY" disclaimer below
20  *    ("Disclaimer") and any redistribution must be conditioned upon
21  *    including a substantially similar Disclaimer requirement for further
22  *    binary redistribution.
23  * 3. Neither the names of the above-listed copyright holders nor the names
24  *    of any contributors may be used to endorse or promote products derived
25  *    from this software without specific prior written permission.
26  *
27  * Alternatively, this software may be distributed under the terms of the
28  * GNU General Public License ("GPL") version 2 as published by the Free
29  * Software Foundation.
30  *
31  * NO WARRANTY
32  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
33  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
34  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
35  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
36  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
37  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
38  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
39  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
40  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
41  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
42  * POSSIBILITY OF SUCH DAMAGES.
43  */
44 
45 #include "acpihelp.h"
46 
47 /*
48  * ASL Keyword types and associated actual keywords.
49  * This table was extracted from the ACPI specification.
50  */
51 const AH_ASL_KEYWORD        AslKeywordInfo[] =
52 {
53     {"AccessAttribKeyword", "Serial Bus Attributes (with legacy SMBus aliases)",
54         ":= AttribQuick (SMBusQuick) | AttribSendReceive (SMBusSendReceive) | "
55         "AttribByte (SMBusByte) | AttribWord (SMBusWord) | "
56         "AttribBlock (SMBusBlock) | AttribProcessCall (SMBusProcessCall) | "
57         "AttribBlockProcessCall (SMBusProcessCall)"},
58     {"AccessTypeKeyword", "Field Access Types",
59         ":= AnyAcc | ByteAcc | WordAcc | DWordAcc | QWordAcc | BufferAcc"},
60     {"AddressingModeKeyword", "Mode - Resource Descriptors",
61         ":= AddressingMode7Bit | AddressingMode10Bit"},
62     {"AddressKeyword", "ACPI memory range types",
63         ":= AddressRangeMemory | AddressRangeReserved | "
64         "AddressRangeNVS | AddressRangeACPI"},
65     {"AddressSpaceKeyword", "Operation Region Address Space Types",
66         ":= RegionSpaceKeyword | FFixedHW"},
67     {"BusMasterKeyword", "DMA Bus Mastering",
68         ":= BusMaster | NotBusMaster"},
69     {"ByteLengthKeyword", "Bits per Byte - Resource Descriptors",
70         ":= DataBitsFive | DataBitsSix | DataBitsSeven | DataBitsEight | DataBitsNine"},
71     {"ClockPhaseKeyword", "Resource Descriptors",
72         ":= ClockPhaseFirst | ClockPhaseSecond"},
73     {"ClockPolarityKeyword", "Resource Descriptors",
74         ":= ClockPolarityLow | ClockPolarityHigh"},
75     {"DecodeKeyword", "Type of Memory Decoding - Resource Descriptors",
76         ":= SubDecode | PosDecode"},
77     {"DmaTypeKeyword", "DMA Types - DMA Resource Descriptor",
78         ":= Compatibility | TypeA | TypeB | TypeF"},
79     {"EndianKeyword", "Endian type - Resource Descriptor",
80         ":= BigEndian | LittleEndian"},
81     {"ExtendedAttribKeyword", "Extended Bus Attributes",
82         ":= AttribBytes (AccessLength) | AttribRawBytes (AccessLength) | "
83         "AttribRawProcessBytes (AccessLength)"},
84     {"FlowControlKeyword", "Resource Descriptor",
85         ":= FlowControlNone | FlowControlXon | FlowControlHardware"},
86     {"InterruptLevelKeyword", "Interrupt Active Types",
87         ":= ActiveHigh | ActiveLow | ActiveBoth"},
88     {"InterruptTypeKeyword", "Interrupt Types",
89         ":= Edge | Level"},
90     {"IoDecodeKeyword", "I/O Decoding - IO Resource Descriptor",
91         ":= Decode16 | Decode10"},
92     {"IoRestrictionKeyword", "I/O Restriction - GPIO Resource Descriptors",
93         ":= IoRestrictionNone | IoRestrictionInputOnly | "
94         "IoRestrictionOutputOnly | IoRestrictionNoneAndPreserve"},
95     {"LockRuleKeyword", "Global Lock use for Field Operator",
96         ":= Lock | NoLock"},
97     {"MatchOpKeyword", "Types for Match Operator",
98         ":= MTR | MEQ | MLE | MLT | MGE | MGT"},
99     {"MaxKeyword", "Max Range Type - Resource Descriptors",
100         ":= MaxFixed | MaxNotFixed"},
101     {"MemTypeKeyword", "Memory Types - Resource Descriptors",
102         ":= Cacheable | WriteCombining | Prefetchable | NonCacheable"},
103     {"MinKeyword", "Min Range Type - Resource Descriptors",
104         ":= MinFixed | MinNotFixed"},
105     {"ObjectTypeKeyword", "ACPI Object Types",
106         ":= UnknownObj | IntObj | StrObj | BuffObj | PkgObj | FieldUnitObj | "
107         "DeviceObj | EventObj | MethodObj | MutexObj | OpRegionObj | PowerResObj | "
108         "ProcessorObj | ThermalZoneObj | BuffFieldObj | DDBHandleObj"},
109     {"ParityKeyword", "Resource Descriptors",
110         ":= ParityTypeNone | ParityTypeSpace | ParityTypeMark | "
111         "ParityTypeOdd | ParityTypeEven"},
112     {"PinConfigKeyword", "Pin Configuration - GPIO Resource Descriptors",
113         ":= PullDefault | PullUp | PullDown | PullNone"},
114     {"PolarityKeyword", "Resource Descriptors",
115         ":= PolarityHigh | PolarityLow"},
116     {"RangeTypeKeyword", "I/O Range Types - Resource Descriptors",
117         ":= ISAOnlyRanges | NonISAOnlyRanges | EntireRange"},
118     {"ReadWriteKeyword", "Memory Access Types - Resource Descriptors",
119         ":= ReadWrite | ReadOnly"},
120     {"RegionSpaceKeyword", "Operation Region Address Space Types",
121         ":= UserDefRegionSpace | SystemIO | SystemMemory | PCI_Config | "
122         "EmbeddedControl | SMBus | SystemCMOS | PciBarTarget | IPMI | "
123         "GeneralPurposeIo, GenericSerialBus"},
124     {"ResourceTypeKeyword", "Resource Usage - Resource Descriptors",
125         ":= ResourceConsumer | ResourceProducer"},
126     {"SerializeRuleKeyword", "Control Method Serialization",
127         ":= Serialized | NotSerialized"},
128     {"ShareTypeKeyword", "Interrupt Sharing - Resource Descriptors",
129         ":= Shared | Exclusive | SharedAndWake | ExclusiveAndWake"},
130     {"SlaveModeKeyword", "Resource Descriptors",
131         ":= ControllerInitiated | DeviceInitiated"},
132     {"StopBitsKeyword", "Resource Descriptors",
133         ":= StopBitsZero | StopBitsOne | StopBitsOnePlusHalf | StopBitsTwo"},
134     {"TransferWidthKeyword", "DMA Widths - Fixed DMA Resource Descriptor",
135         ":= Width8bit | Width16bit | Width32bit | Width64bit | "
136         "Width128bit | Width256bit"},
137     {"TranslationKeyword", "Translation Density Types - Resource Descriptors",
138         ":= SparseTranslation | DenseTranslation"},
139     {"TypeKeyword", "Translation Types - Resource Descriptors",
140         ":= TypeTranslation | TypeStatic"},
141     {"UpdateRuleKeyword", "Field Update Rules",
142         ":= Preserve | WriteAsOnes | WriteAsZeros"},
143     {"UserDefRegionSpace", "User defined address spaces",
144         ":= IntegerData => 0x80 - 0xFF"},
145     {"WireModeKeyword", "SPI Wire Mode - Resource Descriptors",
146         ":= ThreeWireMode | FourWireMode"},
147     {"XferTypeKeyword", "DMA Transfer Types",
148         ":= Transfer8 | Transfer16 | Transfer8_16"},
149     {NULL, NULL, NULL}
150 };
151 
152 /* Preprocessor directives */
153 
154 const AH_DIRECTIVE_INFO      PreprocessorDirectives[] =
155 {
156     {"#include \"Filename\"",               "Standard include of an ASCII ASL source code file"},
157     {"#include <Filename>",                 "Alternate syntax for #include, alternate search path"},
158     {"#includebuffer \"Filename\" <Name>",  "Include a binary file to create AML Buffer with ASL namepath"},
159     {"#includebuffer <Filename> <Name>",    "Alternate syntax for #includebuffer, alternate search path"},
160 
161     {"",  ""},
162     {"#define <Name>, <Defined name>",      "Simple macro definition (full macros not supported at this time)"},
163     {"#define <Expression>, <Defined name>","Simple macro definition (full macros not supported at this time)"},
164     {"#undef <Defined name>",               "Delete a previous #define"},
165 
166     {"",  ""},
167     {"#if <Expression>",                    "Evaluate <Expression> and test return value"},
168     {"#ifdef <Defined name>",               "Test existence of the <Defined Name>"},
169     {"#ifndef <Defined name>",              "Test non-existence of the <Defined Name>"},
170     {"#elif <Expression>",                  "Else-If contraction - evaluate #if <Expression>, test return value"},
171     {"#else",                               "Execute alternate case for a previous #if, #ifdef or #ifndef block"},
172     {"#endif",                              "Close a previous #if, #ifdef or #ifndef block"},
173 
174     {"",   ""},
175     {"#line <LineNumber> [Filename]",       "Set the current ASL source code line number, optional filename"},
176 
177     {"",   ""},
178     {"#error \"String\"",                   "Emit error message and abort compilation"},
179     {"#warning \"String\"",                 "Emit an iASL warning at this location in the ASL source"},
180 
181     {"",  ""},
182     {"#pragma disable (Error number)",      "Disable an iASL error or warning number"},
183     {"#pragma message \"String\"",          "Emit an informational message to the output file(s)"},
184 
185     {"",  ""},
186     {"__FILE__",                            "Return the simple filename of the current ASL file"},
187     {"__PATH__",                            "Return the full pathname of the current ASL file"},
188     {"__LINE__",                            "Return the current line number within the current ASL file"},
189     {"__DATE__",                            "Return the current date"},
190     {"__IASL__",                            "Permanently defined for the iASL compiler"},
191     {NULL,                                   NULL}
192 };
193