2 /******************************************************************************
4 * Module Name: asltypes.y - Bison/Yacc production types/names
6 *****************************************************************************/
8 /******************************************************************************
12 * Some or all of this work - Copyright (c) 1999 - 2020, Intel Corp.
13 * All rights reserved.
17 * 2.1. This is your license from Intel Corp. under its intellectual property
18 * rights. You may have additional license terms from the party that provided
19 * you this software, covering your right to use that party's intellectual
22 * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
23 * copy of the source code appearing in this file ("Covered Code") an
24 * irrevocable, perpetual, worldwide license under Intel's copyrights in the
25 * base code distributed originally by Intel ("Original Intel Code") to copy,
26 * make derivatives, distribute, use and display any portion of the Covered
27 * Code in any form, with the right to sublicense such rights; and
29 * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
30 * license (with the right to sublicense), under only those claims of Intel
31 * patents that are infringed by the Original Intel Code, to make, use, sell,
32 * offer to sell, and import the Covered Code and derivative works thereof
33 * solely to the minimum extent necessary to exercise the above copyright
34 * license, and in no event shall the patent license extend to any additions
35 * to or modifications of the Original Intel Code. No other license or right
36 * is granted directly or by implication, estoppel or otherwise;
38 * The above copyright and patent license is granted only if the following
43 * 3.1. Redistribution of Source with Rights to Further Distribute Source.
44 * Redistribution of source code of any substantial portion of the Covered
45 * Code or modification with rights to further distribute source must include
46 * the above Copyright Notice, the above License, this list of Conditions,
47 * and the following Disclaimer and Export Compliance provision. In addition,
48 * Licensee must cause all Covered Code to which Licensee contributes to
49 * contain a file documenting the changes Licensee made to create that Covered
50 * Code and the date of any change. Licensee must include in that file the
51 * documentation of any changes made by any predecessor Licensee. Licensee
52 * must include a prominent statement that the modification is derived,
53 * directly or indirectly, from Original Intel Code.
55 * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
56 * Redistribution of source code of any substantial portion of the Covered
57 * Code or modification without rights to further distribute source must
58 * include the following Disclaimer and Export Compliance provision in the
59 * documentation and/or other materials provided with distribution. In
60 * addition, Licensee may not authorize further sublicense of source of any
61 * portion of the Covered Code, and must include terms to the effect that the
62 * license from Licensee to its licensee is limited to the intellectual
63 * property embodied in the software Licensee provides to its licensee, and
64 * not to intellectual property embodied in modifications its licensee may
67 * 3.3. Redistribution of Executable. Redistribution in executable form of any
68 * substantial portion of the Covered Code or modification must reproduce the
69 * above Copyright Notice, and the following Disclaimer and Export Compliance
70 * provision in the documentation and/or other materials provided with the
73 * 3.4. Intel retains all right, title, and interest in and to the Original
76 * 3.5. Neither the name Intel nor any other trademark owned or controlled by
77 * Intel shall be used in advertising or otherwise to promote the sale, use or
78 * other dealings in products derived from or relating to the Covered Code
79 * without prior written authorization from Intel.
81 * 4. Disclaimer and Export Compliance
83 * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
84 * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
85 * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE,
86 * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY
87 * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY
88 * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
91 * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
92 * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
93 * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
94 * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
95 * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
96 * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS
97 * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
100 * 4.3. Licensee shall not export, either directly or indirectly, any of this
101 * software or system incorporating such software without first obtaining any
102 * required license or other approval from the U. S. Department of Commerce or
103 * any other agency or department of the United States Government. In the
104 * event Licensee exports any such software from the United States or
105 * re-exports any such software from a foreign destination, Licensee shall
106 * ensure that the distribution and export/re-export of the software is in
107 * compliance with all laws, regulations, orders, or other restrictions of the
108 * U.S. Export Administration Regulations. Licensee agrees that neither it nor
109 * any of its subsidiaries will export/re-export any technical data, process,
110 * software, or service, directly or indirectly, to any country for which the
111 * United States government or any agency thereof requires an export license,
112 * other governmental approval, or letter of assurance, without first obtaining
113 * such license, approval or letter.
115 *****************************************************************************
117 * Alternatively, you may choose to be licensed under the terms of the
120 * Redistribution and use in source and binary forms, with or without
121 * modification, are permitted provided that the following conditions
123 * 1. Redistributions of source code must retain the above copyright
124 * notice, this list of conditions, and the following disclaimer,
125 * without modification.
126 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
127 * substantially similar to the "NO WARRANTY" disclaimer below
128 * ("Disclaimer") and any redistribution must be conditioned upon
129 * including a substantially similar Disclaimer requirement for further
130 * binary redistribution.
131 * 3. Neither the names of the above-listed copyright holders nor the names
132 * of any contributors may be used to endorse or promote products derived
133 * from this software without specific prior written permission.
135 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
136 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
137 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
138 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
139 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
140 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
141 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
142 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
143 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
144 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
145 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
147 * Alternatively, you may choose to be licensed under the terms of the
148 * GNU General Public License ("GPL") version 2 as published by the Free
149 * Software Foundation.
151 *****************************************************************************/
155 /******************************************************************************
159 *****************************************************************************/
164 %type <n> BufferTermData
165 %type <n> CompilerDirective
167 %type <n> DefinitionBlockTerm
168 %type <n> DefinitionBlockList
169 %type <n> IntegerData
170 %type <n> NamedObject
171 %type <n> NameSpaceModifier
173 %type <n> PackageData
174 %type <n> ParameterTypePackage
175 %type <n> ParameterTypePackageList
176 %type <n> ParameterTypesPackage
177 %type <n> ParameterTypesPackageList
178 %type <n> RequiredTarget
181 %type <n> StringLiteral
186 %type <n> MethodInvocationTerm
188 /* Type4Opcode is obsolete */
190 %type <n> Type1Opcode
191 %type <n> Type2BufferOpcode
192 %type <n> Type2BufferOrStringOpcode
193 %type <n> Type2IntegerOpcode
194 %type <n> Type2Opcode
195 %type <n> Type2StringOpcode
196 %type <n> Type3Opcode
197 %type <n> Type5Opcode
198 %type <n> Type6Opcode
200 %type <n> AccessAsTerm
201 %type <n> ExternalTerm
203 %type <n> FieldUnitEntry
204 %type <n> FieldUnitList
205 %type <n> IncludeTerm
207 %type <n> OptionalAccessAttribTerm
211 %type <n> BankFieldTerm
212 %type <n> CreateBitFieldTerm
213 %type <n> CreateByteFieldTerm
214 %type <n> CreateDWordFieldTerm
215 %type <n> CreateFieldTerm
216 %type <n> CreateQWordFieldTerm
217 %type <n> CreateWordFieldTerm
218 %type <n> DataRegionTerm
222 %type <n> FunctionTerm
223 %type <n> IndexFieldTerm
226 %type <n> OpRegionTerm
227 %type <n> OpRegionSpaceIdTerm
228 %type <n> PowerResTerm
229 %type <n> ProcessorTerm
230 %type <n> ThermalZoneTerm
232 /* Namespace modifiers */
240 %type <n> BreakPointTerm
242 %type <n> CaseDefaultTermList
244 %type <n> ContinueTerm
245 %type <n> DefaultTerm
253 %type <n> ReleaseTerm
262 /* %type <n> CaseTermList */
266 %type <n> AcquireTerm
269 %type <n> ConcatResTerm
271 %type <n> CondRefOfTerm
272 %type <n> CopyObjectTerm
274 %type <n> DerefOfTerm
276 %type <n> FindSetLeftBitTerm
277 %type <n> FindSetRightBitTerm
278 %type <n> FromBCDTerm
283 %type <n> LGreaterEqualTerm
284 %type <n> LGreaterTerm
285 %type <n> LLessEqualTerm
287 %type <n> LNotEqualTerm
289 %type <n> LoadTableTerm
294 %type <n> MultiplyTerm
298 %type <n> ObjectTypeTerm
300 %type <n> RawDataBufferTerm
302 %type <n> ShiftLeftTerm
303 %type <n> ShiftRightTerm
306 %type <n> SubtractTerm
309 %type <n> ToBufferTerm
310 %type <n> ToDecimalStringTerm
311 %type <n> ToHexStringTerm
312 %type <n> ToIntegerTerm
313 %type <n> ToStringTerm
319 %type <n> AccessAttribKeyword
320 %type <n> AccessTypeKeyword
321 %type <n> AddressingModeKeyword
322 %type <n> AddressKeyword
323 %type <n> AddressSpaceKeyword
324 %type <n> BitsPerByteKeyword
325 %type <n> ClockPhaseKeyword
326 %type <n> ClockPolarityKeyword
327 %type <n> DecodeKeyword
328 %type <n> DevicePolarityKeyword
329 %type <n> DMATypeKeyword
330 %type <n> EndianKeyword
331 %type <n> FlowControlKeyword
332 %type <n> InterruptLevel
333 %type <n> InterruptTypeKeyword
334 %type <n> IODecodeKeyword
335 %type <n> IoRestrictionKeyword
336 %type <n> LockRuleKeyword
337 %type <n> MatchOpKeyword
339 %type <n> MemTypeKeyword
341 %type <n> ObjectTypeKeyword
342 %type <n> OptionalBusMasterKeyword
343 %type <n> OptionalReadWriteKeyword
344 %type <n> ParityTypeKeyword
345 %type <n> PinConfigByte
346 %type <n> PinConfigKeyword
347 %type <n> RangeTypeKeyword
348 %type <n> RegionSpaceKeyword
349 %type <n> ResourceTypeKeyword
350 %type <n> SerializeRuleKeyword
351 %type <n> ShareTypeKeyword
352 %type <n> SlaveModeKeyword
353 %type <n> StopBitsKeyword
354 %type <n> TranslationKeyword
355 %type <n> TypeKeyword
356 %type <n> UpdateRuleKeyword
357 %type <n> WireModeKeyword
358 %type <n> XferSizeKeyword
359 %type <n> XferTypeKeyword
364 %type <n> ObjectTypeSource
365 %type <n> DerefOfSource
366 %type <n> RefOfSource
367 %type <n> CondRefOfSource
380 %type <n> ConstExprTerm
381 %type <n> ByteConstExpr
382 %type <n> WordConstExpr
383 %type <n> DWordConstExpr
384 %type <n> QWordConstExpr
390 %type <n> PackageElement
391 %type <n> PackageList
392 %type <n> PackageTerm
397 %type <n> ResourceMacroList
398 %type <n> ResourceMacroTerm
399 %type <n> ResourceTemplateTerm
401 %type <n> PldKeywordList
404 %type <n> UnicodeTerm
405 %type <n> PrintfArgList
407 %type <n> FprintfTerm
410 /* Resource Descriptors */
412 %type <n> ConnectionTerm
414 %type <n> DWordIOTerm
415 %type <n> DWordMemoryTerm
416 %type <n> DWordSpaceTerm
417 %type <n> EndDependentFnTerm
418 %type <n> ExtendedIOTerm
419 %type <n> ExtendedMemoryTerm
420 %type <n> ExtendedSpaceTerm
421 %type <n> FixedDmaTerm
422 %type <n> FixedIOTerm
423 %type <n> GpioIntTerm
425 %type <n> I2cSerialBusTerm
426 %type <n> I2cSerialBusTermV2
427 %type <n> InterruptTerm
429 %type <n> IRQNoFlagsTerm
431 %type <n> Memory24Term
432 %type <n> Memory32FixedTerm
433 %type <n> Memory32Term
436 %type <n> PinConfigTerm
437 %type <n> PinFunctionTerm
438 %type <n> PinGroupTerm
439 %type <n> PinGroupConfigTerm
440 %type <n> PinGroupFunctionTerm
441 %type <n> QWordIOTerm
442 %type <n> QWordMemoryTerm
443 %type <n> QWordSpaceTerm
444 %type <n> RegisterTerm
445 %type <n> SpiSerialBusTerm
446 %type <n> SpiSerialBusTermV2
447 %type <n> StartDependentFnNoPriTerm
448 %type <n> StartDependentFnTerm
449 %type <n> UartSerialBusTerm
450 %type <n> UartSerialBusTermV2
451 %type <n> VendorLongTerm
452 %type <n> VendorShortTerm
453 %type <n> WordBusNumberTerm
455 %type <n> WordSpaceTerm
457 /* Local types that help construct the AML, not in ACPI spec */
459 %type <n> AmlPackageLengthTerm
460 %type <n> IncludeEndTerm
461 %type <n> NameStringItem
462 %type <n> TermArgItem
464 %type <n> OptionalAccessSize
465 %type <n> OptionalAccessTypeKeyword
466 %type <n> OptionalAddressingMode
467 %type <n> OptionalAddressRange
468 %type <n> OptionalBitsPerByte
469 %type <n> OptionalBuffer_Last
470 %type <n> OptionalByteConstExpr
471 %type <n> OptionalCount
472 %type <n> OptionalDataCount
473 %type <n> OptionalDecodeType
474 %type <n> OptionalDevicePolarity
475 %type <n> OptionalDWordConstExpr
476 %type <n> OptionalEndian
477 %type <n> OptionalFlowControl
478 %type <n> OptionalIoRestriction
479 %type <n> OptionalListString
480 %type <n> OptionalLockRuleKeyword
481 %type <n> OptionalMaxType
482 %type <n> OptionalMemType
483 %type <n> OptionalMinType
484 %type <n> OptionalNameString
485 %type <n> OptionalNameString_First
486 %type <n> OptionalNameString_Last
487 %type <n> OptionalObjectTypeKeyword
488 %type <n> OptionalParameterTypePackage
489 %type <n> OptionalParameterTypesPackage
490 %type <n> OptionalParentheses
491 %type <n> OptionalParityType
492 %type <n> OptionalPredicate
493 %type <n> OptionalQWordConstExpr
494 %type <n> OptionalRangeType
495 %type <n> OptionalReference
496 %type <n> OptionalResourceType
497 %type <n> OptionalResourceType_First
498 %type <n> OptionalProducerResourceType
499 %type <n> OptionalReturnArg
500 %type <n> OptionalSerializeRuleKeyword
501 %type <n> OptionalShareType
502 %type <n> OptionalShareType_First
503 %type <n> OptionalSlaveMode
504 %type <n> OptionalStopBits
505 %type <n> OptionalStringData
506 %type <n> OptionalSyncLevel
507 %type <n> OptionalTermArg
508 %type <n> OptionalTranslationType_Last
509 %type <n> OptionalType
510 %type <n> OptionalType_Last
511 %type <n> OptionalUpdateRuleKeyword
512 %type <n> OptionalWireMode
513 %type <n> OptionalWordConst
514 %type <n> OptionalWordConstExpr
515 %type <n> OptionalXferSize
518 * ASL+ (C-style) parser
521 /* Expressions and symbolic operators */
525 %type <n> IndexExpTerm
527 /* ASL+ Named object declaration support */
529 %type <n> NameTermAslPlus
531 %type <n> BufferBegin
533 %type <n> PackageBegin
535 %type <n> OptionalLength
537 /* ASL+ Structure declarations */
539 %type <n> StructureTerm
540 %type <n> StructureTermBegin
541 %type <n> StructureType
542 %type <n> StructureTag
543 %type <n> StructureElementList
544 %type <n> StructureElement
545 %type <n> StructureElementType
546 %type <n> OptionalStructureElementType
547 %type <n> StructureId
549 /* Structure instantiantion */
551 %type <n> StructureInstanceTerm
552 %type <n> StructureTagReference
553 %type <n> StructureInstanceEnd
555 /* Pseudo-instantiantion for method Args/Locals */
557 %type <n> MethodStructureTerm
558 %type <n> LocalStructureName
560 /* Direct structure references via the Index operator */
562 %type <n> StructureReference
563 %type <n> StructureIndexTerm
564 %type <n> StructurePointerTerm
565 %type <n> StructurePointerReference
566 %type <n> OptionalDefinePointer