xref: /freebsd/sys/contrib/dev/acpica/compiler/aslhelpers.y (revision 493deb390baef09f40125589cbdb714cb274ab04)
1*493deb39SJung-uk Kim NoEcho('
2*493deb39SJung-uk Kim /******************************************************************************
3*493deb39SJung-uk Kim  *
4*493deb39SJung-uk Kim  * Module Name: aslhelpers.y - helper and option terms
5*493deb39SJung-uk Kim  *
6*493deb39SJung-uk Kim  *****************************************************************************/
7*493deb39SJung-uk Kim 
8*493deb39SJung-uk Kim /*
9*493deb39SJung-uk Kim  * Copyright (C) 2000 - 2016, Intel Corp.
10*493deb39SJung-uk Kim  * All rights reserved.
11*493deb39SJung-uk Kim  *
12*493deb39SJung-uk Kim  * Redistribution and use in source and binary forms, with or without
13*493deb39SJung-uk Kim  * modification, are permitted provided that the following conditions
14*493deb39SJung-uk Kim  * are met:
15*493deb39SJung-uk Kim  * 1. Redistributions of source code must retain the above copyright
16*493deb39SJung-uk Kim  *    notice, this list of conditions, and the following disclaimer,
17*493deb39SJung-uk Kim  *    without modification.
18*493deb39SJung-uk Kim  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
19*493deb39SJung-uk Kim  *    substantially similar to the "NO WARRANTY" disclaimer below
20*493deb39SJung-uk Kim  *    ("Disclaimer") and any redistribution must be conditioned upon
21*493deb39SJung-uk Kim  *    including a substantially similar Disclaimer requirement for further
22*493deb39SJung-uk Kim  *    binary redistribution.
23*493deb39SJung-uk Kim  * 3. Neither the names of the above-listed copyright holders nor the names
24*493deb39SJung-uk Kim  *    of any contributors may be used to endorse or promote products derived
25*493deb39SJung-uk Kim  *    from this software without specific prior written permission.
26*493deb39SJung-uk Kim  *
27*493deb39SJung-uk Kim  * Alternatively, this software may be distributed under the terms of the
28*493deb39SJung-uk Kim  * GNU General Public License ("GPL") version 2 as published by the Free
29*493deb39SJung-uk Kim  * Software Foundation.
30*493deb39SJung-uk Kim  *
31*493deb39SJung-uk Kim  * NO WARRANTY
32*493deb39SJung-uk Kim  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
33*493deb39SJung-uk Kim  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
34*493deb39SJung-uk Kim  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
35*493deb39SJung-uk Kim  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
36*493deb39SJung-uk Kim  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
37*493deb39SJung-uk Kim  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
38*493deb39SJung-uk Kim  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
39*493deb39SJung-uk Kim  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
40*493deb39SJung-uk Kim  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
41*493deb39SJung-uk Kim  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
42*493deb39SJung-uk Kim  * POSSIBILITY OF SUCH DAMAGES.
43*493deb39SJung-uk Kim  */
44*493deb39SJung-uk Kim 
45*493deb39SJung-uk Kim ')
46*493deb39SJung-uk Kim 
47*493deb39SJung-uk Kim 
48*493deb39SJung-uk Kim /*******************************************************************************
49*493deb39SJung-uk Kim  *
50*493deb39SJung-uk Kim  * ASL Helper Terms
51*493deb39SJung-uk Kim  *
52*493deb39SJung-uk Kim  ******************************************************************************/
53*493deb39SJung-uk Kim 
54*493deb39SJung-uk Kim OptionalBusMasterKeyword
55*493deb39SJung-uk Kim     : ','                                   {$$ = TrCreateLeafNode (
56*493deb39SJung-uk Kim                                                 PARSEOP_BUSMASTERTYPE_MASTER);}
57*493deb39SJung-uk Kim     | ',' PARSEOP_BUSMASTERTYPE_MASTER      {$$ = TrCreateLeafNode (
58*493deb39SJung-uk Kim                                                 PARSEOP_BUSMASTERTYPE_MASTER);}
59*493deb39SJung-uk Kim     | ',' PARSEOP_BUSMASTERTYPE_NOTMASTER   {$$ = TrCreateLeafNode (
60*493deb39SJung-uk Kim                                                 PARSEOP_BUSMASTERTYPE_NOTMASTER);}
61*493deb39SJung-uk Kim     ;
62*493deb39SJung-uk Kim 
63*493deb39SJung-uk Kim OptionalAccessAttribTerm
64*493deb39SJung-uk Kim     :                               {$$ = NULL;}
65*493deb39SJung-uk Kim     | ','                           {$$ = NULL;}
66*493deb39SJung-uk Kim     | ',' ByteConstExpr             {$$ = $2;}
67*493deb39SJung-uk Kim     | ',' AccessAttribKeyword       {$$ = $2;}
68*493deb39SJung-uk Kim     ;
69*493deb39SJung-uk Kim 
70*493deb39SJung-uk Kim OptionalAccessSize
71*493deb39SJung-uk Kim     :                               {$$ = TrCreateValuedLeafNode (
72*493deb39SJung-uk Kim                                         PARSEOP_BYTECONST, 0);}
73*493deb39SJung-uk Kim     | ','                           {$$ = TrCreateValuedLeafNode (
74*493deb39SJung-uk Kim                                         PARSEOP_BYTECONST, 0);}
75*493deb39SJung-uk Kim     | ',' ByteConstExpr             {$$ = $2;}
76*493deb39SJung-uk Kim     ;
77*493deb39SJung-uk Kim 
78*493deb39SJung-uk Kim OptionalAddressingMode
79*493deb39SJung-uk Kim     : ','                           {$$ = NULL;}
80*493deb39SJung-uk Kim     | ',' AddressingModeKeyword     {$$ = $2;}
81*493deb39SJung-uk Kim     ;
82*493deb39SJung-uk Kim 
83*493deb39SJung-uk Kim OptionalAddressRange
84*493deb39SJung-uk Kim     :                               {$$ = NULL;}
85*493deb39SJung-uk Kim     | ','                           {$$ = NULL;}
86*493deb39SJung-uk Kim     | ',' AddressKeyword            {$$ = $2;}
87*493deb39SJung-uk Kim     ;
88*493deb39SJung-uk Kim 
89*493deb39SJung-uk Kim OptionalBitsPerByte
90*493deb39SJung-uk Kim     : ','                           {$$ = NULL;}
91*493deb39SJung-uk Kim     | ',' BitsPerByteKeyword        {$$ = $2;}
92*493deb39SJung-uk Kim     ;
93*493deb39SJung-uk Kim 
94*493deb39SJung-uk Kim OptionalBuffer_Last
95*493deb39SJung-uk Kim     :                               {$$ = NULL;}
96*493deb39SJung-uk Kim     | ','                           {$$ = NULL;}
97*493deb39SJung-uk Kim     | ',' RawDataBufferTerm         {$$ = $2;}
98*493deb39SJung-uk Kim     ;
99*493deb39SJung-uk Kim 
100*493deb39SJung-uk Kim OptionalByteConstExpr
101*493deb39SJung-uk Kim     :                               {$$ = NULL;}
102*493deb39SJung-uk Kim     | ','                           {$$ = NULL;}
103*493deb39SJung-uk Kim     | ',' ByteConstExpr             {$$ = $2;}
104*493deb39SJung-uk Kim     ;
105*493deb39SJung-uk Kim 
106*493deb39SJung-uk Kim OptionalDecodeType
107*493deb39SJung-uk Kim     : ','                           {$$ = NULL;}
108*493deb39SJung-uk Kim     | ',' DecodeKeyword             {$$ = $2;}
109*493deb39SJung-uk Kim     ;
110*493deb39SJung-uk Kim 
111*493deb39SJung-uk Kim OptionalDevicePolarity
112*493deb39SJung-uk Kim     : ','                           {$$ = NULL;}
113*493deb39SJung-uk Kim     | ',' DevicePolarityKeyword     {$$ = $2;}
114*493deb39SJung-uk Kim     ;
115*493deb39SJung-uk Kim 
116*493deb39SJung-uk Kim OptionalDWordConstExpr
117*493deb39SJung-uk Kim     :                               {$$ = NULL;}
118*493deb39SJung-uk Kim     | ','                           {$$ = NULL;}
119*493deb39SJung-uk Kim     | ',' DWordConstExpr            {$$ = $2;}
120*493deb39SJung-uk Kim     ;
121*493deb39SJung-uk Kim 
122*493deb39SJung-uk Kim OptionalEndian
123*493deb39SJung-uk Kim     : ','                           {$$ = NULL;}
124*493deb39SJung-uk Kim     | ',' EndianKeyword             {$$ = $2;}
125*493deb39SJung-uk Kim     ;
126*493deb39SJung-uk Kim 
127*493deb39SJung-uk Kim OptionalFlowControl
128*493deb39SJung-uk Kim     : ','                           {$$ = NULL;}
129*493deb39SJung-uk Kim     | ',' FlowControlKeyword        {$$ = $2;}
130*493deb39SJung-uk Kim     ;
131*493deb39SJung-uk Kim 
132*493deb39SJung-uk Kim OptionalIoRestriction
133*493deb39SJung-uk Kim     : ','                           {$$ = NULL;}
134*493deb39SJung-uk Kim     | ',' IoRestrictionKeyword      {$$ = $2;}
135*493deb39SJung-uk Kim     ;
136*493deb39SJung-uk Kim 
137*493deb39SJung-uk Kim OptionalListString
138*493deb39SJung-uk Kim     :                               {$$ = TrCreateValuedLeafNode (
139*493deb39SJung-uk Kim                                         PARSEOP_STRING_LITERAL,
140*493deb39SJung-uk Kim                                         ACPI_TO_INTEGER (""));}   /* Placeholder is a NULL string */
141*493deb39SJung-uk Kim     | ','                           {$$ = TrCreateValuedLeafNode (
142*493deb39SJung-uk Kim                                         PARSEOP_STRING_LITERAL,
143*493deb39SJung-uk Kim                                         ACPI_TO_INTEGER (""));}   /* Placeholder is a NULL string */
144*493deb39SJung-uk Kim     | ',' TermArg                   {$$ = $2;}
145*493deb39SJung-uk Kim     ;
146*493deb39SJung-uk Kim 
147*493deb39SJung-uk Kim OptionalMaxType
148*493deb39SJung-uk Kim     : ','                           {$$ = NULL;}
149*493deb39SJung-uk Kim     | ',' MaxKeyword                {$$ = $2;}
150*493deb39SJung-uk Kim     ;
151*493deb39SJung-uk Kim 
152*493deb39SJung-uk Kim OptionalMemType
153*493deb39SJung-uk Kim     : ','                           {$$ = NULL;}
154*493deb39SJung-uk Kim     | ',' MemTypeKeyword            {$$ = $2;}
155*493deb39SJung-uk Kim     ;
156*493deb39SJung-uk Kim 
157*493deb39SJung-uk Kim OptionalMinType
158*493deb39SJung-uk Kim     : ','                           {$$ = NULL;}
159*493deb39SJung-uk Kim     | ',' MinKeyword                {$$ = $2;}
160*493deb39SJung-uk Kim     ;
161*493deb39SJung-uk Kim 
162*493deb39SJung-uk Kim OptionalNameString
163*493deb39SJung-uk Kim     :                               {$$ = NULL;}
164*493deb39SJung-uk Kim     | ','                           {$$ = NULL;}
165*493deb39SJung-uk Kim     | ',' NameString                {$$ = $2;}
166*493deb39SJung-uk Kim     ;
167*493deb39SJung-uk Kim 
168*493deb39SJung-uk Kim OptionalNameString_Last
169*493deb39SJung-uk Kim     :                               {$$ = NULL;}
170*493deb39SJung-uk Kim     | ','                           {$$ = NULL;}
171*493deb39SJung-uk Kim     | ',' NameString                {$$ = $2;}
172*493deb39SJung-uk Kim     ;
173*493deb39SJung-uk Kim 
174*493deb39SJung-uk Kim OptionalNameString_First
175*493deb39SJung-uk Kim     :                               {$$ = TrCreateLeafNode (
176*493deb39SJung-uk Kim                                         PARSEOP_ZERO);}
177*493deb39SJung-uk Kim     | NameString                    {$$ = $1;}
178*493deb39SJung-uk Kim     ;
179*493deb39SJung-uk Kim 
180*493deb39SJung-uk Kim OptionalObjectTypeKeyword
181*493deb39SJung-uk Kim     :                               {$$ = TrCreateLeafNode (
182*493deb39SJung-uk Kim                                         PARSEOP_OBJECTTYPE_UNK);}
183*493deb39SJung-uk Kim     | ',' ObjectTypeKeyword         {$$ = $2;}
184*493deb39SJung-uk Kim     ;
185*493deb39SJung-uk Kim 
186*493deb39SJung-uk Kim OptionalParityType
187*493deb39SJung-uk Kim     : ','                           {$$ = NULL;}
188*493deb39SJung-uk Kim     | ',' ParityTypeKeyword         {$$ = $2;}
189*493deb39SJung-uk Kim     ;
190*493deb39SJung-uk Kim 
191*493deb39SJung-uk Kim OptionalQWordConstExpr
192*493deb39SJung-uk Kim     :                               {$$ = NULL;}
193*493deb39SJung-uk Kim     | ','                           {$$ = NULL;}
194*493deb39SJung-uk Kim     | ',' QWordConstExpr            {$$ = $2;}
195*493deb39SJung-uk Kim     ;
196*493deb39SJung-uk Kim 
197*493deb39SJung-uk Kim OptionalRangeType
198*493deb39SJung-uk Kim     : ','                           {$$ = NULL;}
199*493deb39SJung-uk Kim     | ',' RangeTypeKeyword          {$$ = $2;}
200*493deb39SJung-uk Kim     ;
201*493deb39SJung-uk Kim 
202*493deb39SJung-uk Kim OptionalReadWriteKeyword
203*493deb39SJung-uk Kim     :                                   {$$ = TrCreateLeafNode (
204*493deb39SJung-uk Kim                                             PARSEOP_READWRITETYPE_BOTH);}
205*493deb39SJung-uk Kim     | PARSEOP_READWRITETYPE_BOTH        {$$ = TrCreateLeafNode (
206*493deb39SJung-uk Kim                                             PARSEOP_READWRITETYPE_BOTH);}
207*493deb39SJung-uk Kim     | PARSEOP_READWRITETYPE_READONLY    {$$ = TrCreateLeafNode (
208*493deb39SJung-uk Kim                                             PARSEOP_READWRITETYPE_READONLY);}
209*493deb39SJung-uk Kim     ;
210*493deb39SJung-uk Kim 
211*493deb39SJung-uk Kim OptionalResourceType_First
212*493deb39SJung-uk Kim     :                               {$$ = TrCreateLeafNode (
213*493deb39SJung-uk Kim                                         PARSEOP_RESOURCETYPE_CONSUMER);}
214*493deb39SJung-uk Kim     | ResourceTypeKeyword           {$$ = $1;}
215*493deb39SJung-uk Kim     ;
216*493deb39SJung-uk Kim 
217*493deb39SJung-uk Kim OptionalResourceType
218*493deb39SJung-uk Kim     :                               {$$ = TrCreateLeafNode (
219*493deb39SJung-uk Kim                                         PARSEOP_RESOURCETYPE_CONSUMER);}
220*493deb39SJung-uk Kim     | ','                           {$$ = TrCreateLeafNode (
221*493deb39SJung-uk Kim                                         PARSEOP_RESOURCETYPE_CONSUMER);}
222*493deb39SJung-uk Kim     | ',' ResourceTypeKeyword       {$$ = $2;}
223*493deb39SJung-uk Kim     ;
224*493deb39SJung-uk Kim 
225*493deb39SJung-uk Kim OptionalSlaveMode
226*493deb39SJung-uk Kim     : ','                           {$$ = NULL;}
227*493deb39SJung-uk Kim     | ',' SlaveModeKeyword          {$$ = $2;}
228*493deb39SJung-uk Kim     ;
229*493deb39SJung-uk Kim 
230*493deb39SJung-uk Kim OptionalShareType
231*493deb39SJung-uk Kim     :                               {$$ = NULL;}
232*493deb39SJung-uk Kim     | ','                           {$$ = NULL;}
233*493deb39SJung-uk Kim     | ',' ShareTypeKeyword          {$$ = $2;}
234*493deb39SJung-uk Kim     ;
235*493deb39SJung-uk Kim 
236*493deb39SJung-uk Kim OptionalShareType_First
237*493deb39SJung-uk Kim     :                               {$$ = NULL;}
238*493deb39SJung-uk Kim     | ShareTypeKeyword              {$$ = $1;}
239*493deb39SJung-uk Kim     ;
240*493deb39SJung-uk Kim 
241*493deb39SJung-uk Kim OptionalStopBits
242*493deb39SJung-uk Kim     : ','                           {$$ = NULL;}
243*493deb39SJung-uk Kim     | ',' StopBitsKeyword           {$$ = $2;}
244*493deb39SJung-uk Kim     ;
245*493deb39SJung-uk Kim 
246*493deb39SJung-uk Kim OptionalStringData
247*493deb39SJung-uk Kim     :                               {$$ = NULL;}
248*493deb39SJung-uk Kim     | ','                           {$$ = NULL;}
249*493deb39SJung-uk Kim     | ',' StringData                {$$ = $2;}
250*493deb39SJung-uk Kim     ;
251*493deb39SJung-uk Kim 
252*493deb39SJung-uk Kim OptionalTranslationType_Last
253*493deb39SJung-uk Kim     :                               {$$ = NULL;}
254*493deb39SJung-uk Kim     | ','                           {$$ = NULL;}
255*493deb39SJung-uk Kim     | ',' TranslationKeyword        {$$ = $2;}
256*493deb39SJung-uk Kim     ;
257*493deb39SJung-uk Kim 
258*493deb39SJung-uk Kim OptionalType
259*493deb39SJung-uk Kim     :                               {$$ = NULL;}
260*493deb39SJung-uk Kim     | ','                           {$$ = NULL;}
261*493deb39SJung-uk Kim     | ',' TypeKeyword               {$$ = $2;}
262*493deb39SJung-uk Kim     ;
263*493deb39SJung-uk Kim 
264*493deb39SJung-uk Kim OptionalType_Last
265*493deb39SJung-uk Kim     :                               {$$ = NULL;}
266*493deb39SJung-uk Kim     | ','                           {$$ = NULL;}
267*493deb39SJung-uk Kim     | ',' TypeKeyword               {$$ = $2;}
268*493deb39SJung-uk Kim     ;
269*493deb39SJung-uk Kim 
270*493deb39SJung-uk Kim OptionalWireMode
271*493deb39SJung-uk Kim     : ','                           {$$ = NULL;}
272*493deb39SJung-uk Kim     | ',' WireModeKeyword           {$$ = $2;}
273*493deb39SJung-uk Kim     ;
274*493deb39SJung-uk Kim 
275*493deb39SJung-uk Kim OptionalWordConstExpr
276*493deb39SJung-uk Kim     : ','                           {$$ = NULL;}
277*493deb39SJung-uk Kim     | ',' WordConstExpr             {$$ = $2;}
278*493deb39SJung-uk Kim     ;
279*493deb39SJung-uk Kim 
280*493deb39SJung-uk Kim OptionalXferSize
281*493deb39SJung-uk Kim     :                               {$$ = TrCreateValuedLeafNode (
282*493deb39SJung-uk Kim                                         PARSEOP_XFERSIZE_32, 2);}
283*493deb39SJung-uk Kim     | ','                           {$$ = TrCreateValuedLeafNode (
284*493deb39SJung-uk Kim                                         PARSEOP_XFERSIZE_32, 2);}
285*493deb39SJung-uk Kim     | ',' XferSizeKeyword           {$$ = $2;}
286*493deb39SJung-uk Kim     ;
287