xref: /freebsd/sys/contrib/dev/acpica/compiler/aslresources.y (revision af23369a6deaaeb612ab266eb88b8bb8d560c322)
1 NoEcho('
2 /******************************************************************************
3  *
4  * Module Name: aslresources.y - Bison/Yacc production rules for resources
5  *                             - Keep this file synched with the
6  *                               CvParseOpBlockType function in cvcompiler.c
7  *
8  *****************************************************************************/
9 
10 /******************************************************************************
11  *
12  * 1. Copyright Notice
13  *
14  * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp.
15  * All rights reserved.
16  *
17  * 2. License
18  *
19  * 2.1. This is your license from Intel Corp. under its intellectual property
20  * rights. You may have additional license terms from the party that provided
21  * you this software, covering your right to use that party's intellectual
22  * property rights.
23  *
24  * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
25  * copy of the source code appearing in this file ("Covered Code") an
26  * irrevocable, perpetual, worldwide license under Intel's copyrights in the
27  * base code distributed originally by Intel ("Original Intel Code") to copy,
28  * make derivatives, distribute, use and display any portion of the Covered
29  * Code in any form, with the right to sublicense such rights; and
30  *
31  * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
32  * license (with the right to sublicense), under only those claims of Intel
33  * patents that are infringed by the Original Intel Code, to make, use, sell,
34  * offer to sell, and import the Covered Code and derivative works thereof
35  * solely to the minimum extent necessary to exercise the above copyright
36  * license, and in no event shall the patent license extend to any additions
37  * to or modifications of the Original Intel Code. No other license or right
38  * is granted directly or by implication, estoppel or otherwise;
39  *
40  * The above copyright and patent license is granted only if the following
41  * conditions are met:
42  *
43  * 3. Conditions
44  *
45  * 3.1. Redistribution of Source with Rights to Further Distribute Source.
46  * Redistribution of source code of any substantial portion of the Covered
47  * Code or modification with rights to further distribute source must include
48  * the above Copyright Notice, the above License, this list of Conditions,
49  * and the following Disclaimer and Export Compliance provision. In addition,
50  * Licensee must cause all Covered Code to which Licensee contributes to
51  * contain a file documenting the changes Licensee made to create that Covered
52  * Code and the date of any change. Licensee must include in that file the
53  * documentation of any changes made by any predecessor Licensee. Licensee
54  * must include a prominent statement that the modification is derived,
55  * directly or indirectly, from Original Intel Code.
56  *
57  * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
58  * Redistribution of source code of any substantial portion of the Covered
59  * Code or modification without rights to further distribute source must
60  * include the following Disclaimer and Export Compliance provision in the
61  * documentation and/or other materials provided with distribution. In
62  * addition, Licensee may not authorize further sublicense of source of any
63  * portion of the Covered Code, and must include terms to the effect that the
64  * license from Licensee to its licensee is limited to the intellectual
65  * property embodied in the software Licensee provides to its licensee, and
66  * not to intellectual property embodied in modifications its licensee may
67  * make.
68  *
69  * 3.3. Redistribution of Executable. Redistribution in executable form of any
70  * substantial portion of the Covered Code or modification must reproduce the
71  * above Copyright Notice, and the following Disclaimer and Export Compliance
72  * provision in the documentation and/or other materials provided with the
73  * distribution.
74  *
75  * 3.4. Intel retains all right, title, and interest in and to the Original
76  * Intel Code.
77  *
78  * 3.5. Neither the name Intel nor any other trademark owned or controlled by
79  * Intel shall be used in advertising or otherwise to promote the sale, use or
80  * other dealings in products derived from or relating to the Covered Code
81  * without prior written authorization from Intel.
82  *
83  * 4. Disclaimer and Export Compliance
84  *
85  * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
86  * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
87  * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE,
88  * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY
89  * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY
90  * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
91  * PARTICULAR PURPOSE.
92  *
93  * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
94  * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
95  * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
96  * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
97  * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
98  * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS
99  * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
100  * LIMITED REMEDY.
101  *
102  * 4.3. Licensee shall not export, either directly or indirectly, any of this
103  * software or system incorporating such software without first obtaining any
104  * required license or other approval from the U. S. Department of Commerce or
105  * any other agency or department of the United States Government. In the
106  * event Licensee exports any such software from the United States or
107  * re-exports any such software from a foreign destination, Licensee shall
108  * ensure that the distribution and export/re-export of the software is in
109  * compliance with all laws, regulations, orders, or other restrictions of the
110  * U.S. Export Administration Regulations. Licensee agrees that neither it nor
111  * any of its subsidiaries will export/re-export any technical data, process,
112  * software, or service, directly or indirectly, to any country for which the
113  * United States government or any agency thereof requires an export license,
114  * other governmental approval, or letter of assurance, without first obtaining
115  * such license, approval or letter.
116  *
117  *****************************************************************************
118  *
119  * Alternatively, you may choose to be licensed under the terms of the
120  * following license:
121  *
122  * Redistribution and use in source and binary forms, with or without
123  * modification, are permitted provided that the following conditions
124  * are met:
125  * 1. Redistributions of source code must retain the above copyright
126  *    notice, this list of conditions, and the following disclaimer,
127  *    without modification.
128  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
129  *    substantially similar to the "NO WARRANTY" disclaimer below
130  *    ("Disclaimer") and any redistribution must be conditioned upon
131  *    including a substantially similar Disclaimer requirement for further
132  *    binary redistribution.
133  * 3. Neither the names of the above-listed copyright holders nor the names
134  *    of any contributors may be used to endorse or promote products derived
135  *    from this software without specific prior written permission.
136  *
137  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
138  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
139  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
140  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
141  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
142  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
143  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
144  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
145  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
146  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
147  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
148  *
149  * Alternatively, you may choose to be licensed under the terms of the
150  * GNU General Public License ("GPL") version 2 as published by the Free
151  * Software Foundation.
152  *
153  *****************************************************************************/
154 
155 ')
156 
157 
158 /*******************************************************************************
159  *
160  * ASL Resource Template Terms
161  *
162  ******************************************************************************/
163 
164 /*
165  * Note: Create two default nodes to allow conversion to a Buffer AML opcode
166  * Also, insert the EndTag at the end of the template.
167  */
168 ResourceTemplateTerm
169     : PARSEOP_RESOURCETEMPLATE      {COMMENT_CAPTURE_OFF;}
170         OptionalParentheses
171         '{'
172         ResourceMacroList '}'       {$$ = TrCreateOp (PARSEOP_RESOURCETEMPLATE,4,
173                                           TrCreateLeafOp (PARSEOP_DEFAULT_ARG),
174                                           TrCreateLeafOp (PARSEOP_DEFAULT_ARG),
175                                           $5,
176                                           TrCreateLeafOp (PARSEOP_ENDTAG));
177                                      COMMENT_CAPTURE_ON;}
178     ;
179 
180 OptionalParentheses
181     :                               {$$ = NULL;}
182     | PARSEOP_OPEN_PAREN
183         PARSEOP_CLOSE_PAREN         {$$ = NULL;}
184     ;
185 
186 ResourceMacroList
187     :                               {$$ = NULL;}
188     | ResourceMacroList
189         ResourceMacroTerm           {$$ = TrLinkPeerOp ($1,$2);}
190     ;
191 
192 ResourceMacroTerm
193     : Csi2SerialBusTerm             {}
194     | DMATerm                       {}
195     | DWordIOTerm                   {}
196     | DWordMemoryTerm               {}
197     | DWordSpaceTerm                {}
198     | EndDependentFnTerm            {}
199     | ExtendedIOTerm                {}
200     | ExtendedMemoryTerm            {}
201     | ExtendedSpaceTerm             {}
202     | FixedDmaTerm                  {}
203     | FixedIOTerm                   {}
204     | GpioIntTerm                   {}
205     | GpioIoTerm                    {}
206     | I2cSerialBusTerm              {}
207     | I2cSerialBusTermV2            {}
208     | InterruptTerm                 {}
209     | IOTerm                        {}
210     | IRQNoFlagsTerm                {}
211     | IRQTerm                       {}
212     | Memory24Term                  {}
213     | Memory32FixedTerm             {}
214     | Memory32Term                  {}
215     | PinConfigTerm                 {}
216     | PinFunctionTerm               {}
217     | PinGroupTerm                  {}
218     | PinGroupConfigTerm            {}
219     | PinGroupFunctionTerm          {}
220     | QWordIOTerm                   {}
221     | QWordMemoryTerm               {}
222     | QWordSpaceTerm                {}
223     | RegisterTerm                  {}
224     | SpiSerialBusTerm              {}
225     | SpiSerialBusTermV2            {}
226     | StartDependentFnNoPriTerm     {}
227     | StartDependentFnTerm          {}
228     | UartSerialBusTerm             {}
229     | UartSerialBusTermV2           {}
230     | VendorLongTerm                {}
231     | VendorShortTerm               {}
232     | WordBusNumberTerm             {}
233     | WordIOTerm                    {}
234     | WordSpaceTerm                 {}
235     ;
236 
237 Csi2SerialBusTerm
238     : PARSEOP_CSI2_SERIALBUS
239         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_CSI2_SERIALBUS);}
240         OptionalSlaveMode_First     {UtCheckIntegerRange ($4, 0x00, 0x01);} /* 04: SlaveMode */
241         ',' ByteConstExpr           {UtCheckIntegerRange ($7, 0x00, 0x03);} /* 07: PhyType */
242         OptionalByteConstExpr       {UtCheckIntegerRange ($9, 0x00, 0xFC);} /* 09: LocalPortInstance */
243         ',' StringData              /* 12: ResourceSource */
244         ',' ByteConstExpr           /* 14: ResourceSourceIndex */
245         OptionalResourceType        /* 15; ResourceType (ResourceUsage) */
246         OptionalNameString          /* 16: DescriptorName */
247         OptionalBuffer_Last         /* 17: VendorData */
248         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,8,
249                                         $4,$7,$9,$12,$14,$15,$16,$17);}
250     | PARSEOP_CSI2_SERIALBUS
251         PARSEOP_OPEN_PAREN
252         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
253 
254 DMATerm
255     : PARSEOP_DMA
256         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_DMA);}
257         DMATypeKeyword
258         OptionalBusMasterKeyword
259         ',' XferTypeKeyword
260         OptionalNameString_Last
261         PARSEOP_CLOSE_PAREN '{'
262             ByteList '}'            {$$ = TrLinkOpChildren ($<n>3,5,$4,$5,$7,$8,$11);}
263     | PARSEOP_DMA
264         PARSEOP_OPEN_PAREN
265         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
266     ;
267 
268 DWordIOTerm
269     : PARSEOP_DWORDIO
270         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_DWORDIO);}
271         OptionalResourceType_First
272         OptionalMinType
273         OptionalMaxType
274         OptionalDecodeType
275         OptionalRangeType
276         ',' DWordConstExpr
277         ',' DWordConstExpr
278         ',' DWordConstExpr
279         ',' DWordConstExpr
280         ',' DWordConstExpr
281         OptionalByteConstExpr
282         OptionalStringData
283         OptionalNameString
284         OptionalType
285         OptionalTranslationType_Last
286         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,15,
287                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
288     | PARSEOP_DWORDIO
289         PARSEOP_OPEN_PAREN
290         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
291     ;
292 
293 DWordMemoryTerm
294     : PARSEOP_DWORDMEMORY
295         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_DWORDMEMORY);}
296         OptionalResourceType_First
297         OptionalDecodeType
298         OptionalMinType
299         OptionalMaxType
300         OptionalMemType
301         ',' OptionalReadWriteKeyword
302         ',' DWordConstExpr
303         ',' DWordConstExpr
304         ',' DWordConstExpr
305         ',' DWordConstExpr
306         ',' DWordConstExpr
307         OptionalByteConstExpr
308         OptionalStringData
309         OptionalNameString
310         OptionalAddressRange
311         OptionalType_Last
312         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,16,
313                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
314     | PARSEOP_DWORDMEMORY
315         PARSEOP_OPEN_PAREN
316         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
317     ;
318 
319 DWordSpaceTerm
320     : PARSEOP_DWORDSPACE
321         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_DWORDSPACE);}
322         ByteConstExpr               {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
323         OptionalResourceType
324         OptionalDecodeType
325         OptionalMinType
326         OptionalMaxType
327         ',' ByteConstExpr
328         ',' DWordConstExpr
329         ',' DWordConstExpr
330         ',' DWordConstExpr
331         ',' DWordConstExpr
332         ',' DWordConstExpr
333         OptionalByteConstExpr
334         OptionalStringData
335         OptionalNameString_Last
336         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,14,
337                                         $4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
338     | PARSEOP_DWORDSPACE
339         PARSEOP_OPEN_PAREN
340         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
341     ;
342 
343 EndDependentFnTerm
344     : PARSEOP_ENDDEPENDENTFN
345         PARSEOP_OPEN_PAREN
346         PARSEOP_CLOSE_PAREN         {$$ = TrCreateLeafOp (PARSEOP_ENDDEPENDENTFN);}
347     | PARSEOP_ENDDEPENDENTFN
348         PARSEOP_OPEN_PAREN
349         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
350     ;
351 
352 ExtendedIOTerm
353     : PARSEOP_EXTENDEDIO
354         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_EXTENDEDIO);}
355         OptionalResourceType_First
356         OptionalMinType
357         OptionalMaxType
358         OptionalDecodeType
359         OptionalRangeType
360         ',' QWordConstExpr
361         ',' QWordConstExpr
362         ',' QWordConstExpr
363         ',' QWordConstExpr
364         ',' QWordConstExpr
365         OptionalQWordConstExpr
366         OptionalNameString
367         OptionalType
368         OptionalTranslationType_Last
369         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,14,
370                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22);}
371     | PARSEOP_EXTENDEDIO
372         PARSEOP_OPEN_PAREN
373         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
374     ;
375 
376 ExtendedMemoryTerm
377     : PARSEOP_EXTENDEDMEMORY
378         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_EXTENDEDMEMORY);}
379         OptionalResourceType_First
380         OptionalDecodeType
381         OptionalMinType
382         OptionalMaxType
383         OptionalMemType
384         ',' OptionalReadWriteKeyword
385         ',' QWordConstExpr
386         ',' QWordConstExpr
387         ',' QWordConstExpr
388         ',' QWordConstExpr
389         ',' QWordConstExpr
390         OptionalQWordConstExpr
391         OptionalNameString
392         OptionalAddressRange
393         OptionalType_Last
394         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,15,
395                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24);}
396     | PARSEOP_EXTENDEDMEMORY
397         PARSEOP_OPEN_PAREN
398         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
399     ;
400 
401 ExtendedSpaceTerm
402     : PARSEOP_EXTENDEDSPACE PARSEOP_OPEN_PAREN     {$<n>$ = TrCreateLeafOp (PARSEOP_EXTENDEDSPACE);}
403         ByteConstExpr               {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
404         OptionalResourceType
405         OptionalDecodeType
406         OptionalMinType
407         OptionalMaxType
408         ',' ByteConstExpr
409         ',' QWordConstExpr
410         ',' QWordConstExpr
411         ',' QWordConstExpr
412         ',' QWordConstExpr
413         ',' QWordConstExpr
414         OptionalQWordConstExpr
415         OptionalNameString_Last
416         PARSEOP_CLOSE_PAREN                         {$$ = TrLinkOpChildren ($<n>3,13,
417                                         $4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23);}
418     | PARSEOP_EXTENDEDSPACE
419         PARSEOP_OPEN_PAREN
420         error PARSEOP_CLOSE_PAREN                   {$$ = AslDoError(); yyclearin;}
421     ;
422 
423 FixedDmaTerm
424     : PARSEOP_FIXEDDMA
425         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_FIXEDDMA);}
426         WordConstExpr               /* 04: DMA RequestLines */
427         ',' WordConstExpr           /* 06: DMA Channels */
428         OptionalXferSize            /* 07: DMA TransferSize */
429         OptionalNameString          /* 08: DescriptorName */
430         PARSEOP_CLOSE_PAREN                         {$$ = TrLinkOpChildren ($<n>3,4,$4,$6,$7,$8);}
431     | PARSEOP_FIXEDDMA
432         PARSEOP_OPEN_PAREN
433         error PARSEOP_CLOSE_PAREN                   {$$ = AslDoError(); yyclearin;}
434     ;
435 
436 FixedIOTerm
437     : PARSEOP_FIXEDIO
438         PARSEOP_OPEN_PAREN           {$<n>$ = TrCreateLeafOp (PARSEOP_FIXEDIO);}
439         WordConstExpr
440         ',' ByteConstExpr
441         OptionalNameString_Last
442         PARSEOP_CLOSE_PAREN                         {$$ = TrLinkOpChildren ($<n>3,3,$4,$6,$7);}
443     | PARSEOP_FIXEDIO
444         PARSEOP_OPEN_PAREN
445         error PARSEOP_CLOSE_PAREN                   {$$ = AslDoError(); yyclearin;}
446     ;
447 
448 GpioIntTerm
449     : PARSEOP_GPIO_INT
450         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_GPIO_INT);}
451         InterruptTypeKeyword        /* 04: InterruptType */
452         ',' InterruptLevel          /* 06: InterruptLevel */
453         OptionalShareType           /* 07: SharedType */
454         ',' PinConfigByte           /* 09: PinConfig */
455         OptionalWordConstExpr       /* 10: DebounceTimeout */
456         ',' StringData              /* 12: ResourceSource */
457         OptionalByteConstExpr       /* 13: ResourceSourceIndex */
458         OptionalResourceType        /* 14: ResourceType */
459         OptionalNameString          /* 15: DescriptorName */
460         OptionalBuffer_Last         /* 16: VendorData */
461         PARSEOP_CLOSE_PAREN '{'
462             DWordConstExpr '}'      {$$ = TrLinkOpChildren ($<n>3,11,
463                                         $4,$6,$7,$9,$10,$12,$13,$14,$15,$16,$19);}
464     | PARSEOP_GPIO_INT
465         PARSEOP_OPEN_PAREN
466         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
467     ;
468 
469 GpioIoTerm
470     : PARSEOP_GPIO_IO
471         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_GPIO_IO);}
472         OptionalShareType_First     /* 04: SharedType */
473         ',' PinConfigByte           /* 06: PinConfig */
474         OptionalWordConstExpr       /* 07: DebounceTimeout */
475         OptionalWordConstExpr       /* 08: DriveStrength */
476         OptionalIoRestriction       /* 09: IoRestriction */
477         ',' StringData              /* 11: ResourceSource */
478         OptionalByteConstExpr       /* 12: ResourceSourceIndex */
479         OptionalResourceType        /* 13: ResourceType */
480         OptionalNameString          /* 14: DescriptorName */
481         OptionalBuffer_Last         /* 15: VendorData */
482         PARSEOP_CLOSE_PAREN '{'
483             DWordList '}'           {$$ = TrLinkOpChildren ($<n>3,11,
484                                         $4,$6,$7,$8,$9,$11,$12,$13,$14,$15,$18);}
485     | PARSEOP_GPIO_IO
486         PARSEOP_OPEN_PAREN
487         error PARSEOP_CLOSE_PAREN                   {$$ = AslDoError(); yyclearin;}
488     ;
489 
490 I2cSerialBusTerm
491     : PARSEOP_I2C_SERIALBUS
492         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_I2C_SERIALBUS);}
493         WordConstExpr               /* 04: SlaveAddress */
494         OptionalSlaveMode           /* 05: SlaveMode */
495         ',' DWordConstExpr          /* 07: ConnectionSpeed */
496         OptionalAddressingMode      /* 08: AddressingMode */
497         ',' StringData              /* 10: ResourceSource */
498         OptionalByteConstExpr       /* 11: ResourceSourceIndex */
499         OptionalResourceType        /* 12: ResourceType */
500         OptionalNameString          /* 13: DescriptorName */
501         OptionalBuffer_Last         /* 14: VendorData */
502         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,10,
503                                         $4,$5,$7,$8,$10,$11,$12,$13,
504                                         TrCreateLeafOp (PARSEOP_DEFAULT_ARG),$14);}
505     | PARSEOP_I2C_SERIALBUS
506         PARSEOP_OPEN_PAREN
507         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
508     ;
509 
510 I2cSerialBusTermV2
511     : PARSEOP_I2C_SERIALBUS_V2
512         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_I2C_SERIALBUS_V2);}
513         WordConstExpr               /* 04: SlaveAddress */
514         OptionalSlaveMode           /* 05: SlaveMode */
515         ',' DWordConstExpr          /* 07: ConnectionSpeed */
516         OptionalAddressingMode      /* 08: AddressingMode */
517         ',' StringData              /* 10: ResourceSource */
518         OptionalByteConstExpr       /* 11: ResourceSourceIndex */
519         OptionalResourceType        /* 12: ResourceType */
520         OptionalNameString          /* 13: DescriptorName */
521         OptionalShareType           /* 14: Share */
522         OptionalBuffer_Last         /* 15: VendorData */
523         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,10,
524                                         $4,$5,$7,$8,$10,$11,$12,$13,$14,$15);}
525     | PARSEOP_I2C_SERIALBUS_V2
526         PARSEOP_OPEN_PAREN
527         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
528     ;
529 
530 InterruptTerm
531     : PARSEOP_INTERRUPT
532         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_INTERRUPT);}
533         OptionalResourceType_First
534         ',' InterruptTypeKeyword
535         ',' InterruptLevel
536         OptionalShareType
537         OptionalByteConstExpr
538         OptionalStringData
539         OptionalNameString_Last
540         PARSEOP_CLOSE_PAREN '{'
541             DWordList '}'           {$$ = TrLinkOpChildren ($<n>3,8,
542                                         $4,$6,$8,$9,$10,$11,$12,$15);}
543     | PARSEOP_INTERRUPT
544         PARSEOP_OPEN_PAREN
545         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
546     ;
547 
548 IOTerm
549     : PARSEOP_IO
550         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_IO);}
551         IODecodeKeyword
552         ',' WordConstExpr
553         ',' WordConstExpr
554         ',' ByteConstExpr
555         ',' ByteConstExpr
556         OptionalNameString_Last
557         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
558     | PARSEOP_IO
559         PARSEOP_OPEN_PAREN
560         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
561     ;
562 
563 IRQNoFlagsTerm
564     : PARSEOP_IRQNOFLAGS
565         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_IRQNOFLAGS);}
566         OptionalNameString_First
567         PARSEOP_CLOSE_PAREN '{'
568             ByteList '}'            {$$ = TrLinkOpChildren ($<n>3,2,$4,$7);}
569     | PARSEOP_IRQNOFLAGS
570         PARSEOP_OPEN_PAREN
571         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
572     ;
573 
574 IRQTerm
575     : PARSEOP_IRQ
576         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_IRQ);}
577         InterruptTypeKeyword
578         ',' InterruptLevel
579         OptionalShareType
580         OptionalNameString_Last
581         PARSEOP_CLOSE_PAREN '{'
582             ByteList '}'            {$$ = TrLinkOpChildren ($<n>3,5,$4,$6,$7,$8,$11);}
583     | PARSEOP_IRQ
584         PARSEOP_OPEN_PAREN
585         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
586     ;
587 
588 Memory24Term
589     : PARSEOP_MEMORY24
590         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_MEMORY24);}
591         OptionalReadWriteKeyword
592         ',' WordConstExpr
593         ',' WordConstExpr
594         ',' WordConstExpr
595         ',' WordConstExpr
596         OptionalNameString_Last
597         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
598     | PARSEOP_MEMORY24
599         PARSEOP_OPEN_PAREN
600         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
601     ;
602 
603 Memory32FixedTerm
604     : PARSEOP_MEMORY32FIXED
605         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_MEMORY32FIXED);}
606         OptionalReadWriteKeyword
607         ',' DWordConstExpr
608         ',' DWordConstExpr
609         OptionalNameString_Last
610         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,4,$4,$6,$8,$9);}
611     | PARSEOP_MEMORY32FIXED
612         PARSEOP_OPEN_PAREN
613         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
614     ;
615 
616 Memory32Term
617     : PARSEOP_MEMORY32
618         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_MEMORY32);}
619         OptionalReadWriteKeyword
620         ',' DWordConstExpr
621         ',' DWordConstExpr
622         ',' DWordConstExpr
623         ',' DWordConstExpr
624         OptionalNameString_Last
625         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
626     | PARSEOP_MEMORY32
627         PARSEOP_OPEN_PAREN
628         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
629     ;
630 
631 PinConfigTerm
632     : PARSEOP_PINCONFIG
633         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_PINCONFIG);}
634         OptionalShareType_First     /* 04: SharedType */
635         ',' ByteConstExpr           /* 06: PinConfigType */
636         ',' DWordConstExpr          /* 08: PinConfigValue */
637         ',' StringData              /* 10: ResourceSource */
638         OptionalByteConstExpr       /* 11: ResourceSourceIndex */
639         OptionalResourceType        /* 12: ResourceType */
640         OptionalNameString          /* 13: DescriptorName */
641         OptionalBuffer_Last         /* 14: VendorData */
642         PARSEOP_CLOSE_PAREN '{'
643             DWordList '}'           {$$ = TrLinkOpChildren ($<n>3,9,
644                                         $4,$6,$8,$10,$11,$12,$13,$14,$17);}
645     | PARSEOP_PINCONFIG
646         PARSEOP_OPEN_PAREN
647         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
648     ;
649 
650 PinFunctionTerm
651     : PARSEOP_PINFUNCTION
652         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_PINFUNCTION);}
653         OptionalShareType_First     /* 04: SharedType */
654         ',' PinConfigByte           /* 06: PinConfig */
655         ',' WordConstExpr           /* 08: FunctionNumber */
656         ',' StringData              /* 10: ResourceSource */
657         OptionalByteConstExpr       /* 11: ResourceSourceIndex */
658         OptionalResourceType        /* 12: ResourceType */
659         OptionalNameString          /* 13: DescriptorName */
660         OptionalBuffer_Last         /* 14: VendorData */
661         PARSEOP_CLOSE_PAREN '{'
662             DWordList '}'           {$$ = TrLinkOpChildren ($<n>3,9,
663                                         $4,$6,$8,$10,$11,$12,$13,$14,$17);}
664     | PARSEOP_PINFUNCTION
665         PARSEOP_OPEN_PAREN
666         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
667     ;
668 
669 PinGroupTerm
670     : PARSEOP_PINGROUP
671         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_PINGROUP);}
672         StringData                  /* 04: ResourceLabel */
673         OptionalProducerResourceType /* 05: ResourceType */
674         OptionalNameString          /* 06: DescriptorName */
675         OptionalBuffer_Last         /* 07: VendorData */
676         PARSEOP_CLOSE_PAREN '{'
677             DWordList '}'           {$$ = TrLinkOpChildren ($<n>3,5,$4,$5,$6,$7,$10);}
678     | PARSEOP_PINGROUP
679         PARSEOP_OPEN_PAREN
680         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
681     ;
682 
683 PinGroupConfigTerm
684     : PARSEOP_PINGROUPCONFIG
685         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_PINGROUPCONFIG);}
686         OptionalShareType_First     /* 04: SharedType */
687         ',' ByteConstExpr           /* 06: PinConfigType */
688         ',' DWordConstExpr          /* 08: PinConfigValue */
689         ',' StringData              /* 10: ResourceSource */
690         OptionalByteConstExpr       /* 11: ResourceSourceIndex */
691         ',' StringData              /* 13: ResourceSourceLabel */
692         OptionalResourceType        /* 14: ResourceType */
693         OptionalNameString          /* 15: DescriptorName */
694         OptionalBuffer_Last         /* 16: VendorData */
695         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,9,
696                                         $4,$6,$8,$10,$11,$13,$14,$15,$16);}
697     | PARSEOP_PINGROUPCONFIG
698         PARSEOP_OPEN_PAREN
699         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
700     ;
701 
702 PinGroupFunctionTerm
703     : PARSEOP_PINGROUPFUNCTION
704         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_PINGROUPFUNCTION);}
705         OptionalShareType_First     /* 04: SharedType */
706         ',' WordConstExpr           /* 06: FunctionNumber */
707         ',' StringData              /* 08: ResourceSource */
708         OptionalByteConstExpr       /* 09: ResourceSourceIndex */
709         ',' StringData              /* 11: ResourceSourceLabel */
710         OptionalResourceType        /* 12: ResourceType */
711         OptionalNameString          /* 13: DescriptorName */
712         OptionalBuffer_Last         /* 14: VendorData */
713         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,8,
714                                         $4,$6,$8,$9,$11,$12,$13,$14);}
715     | PARSEOP_PINGROUPFUNCTION
716         PARSEOP_OPEN_PAREN
717         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
718     ;
719 
720 QWordIOTerm
721     : PARSEOP_QWORDIO
722         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_QWORDIO);}
723         OptionalResourceType_First
724         OptionalMinType
725         OptionalMaxType
726         OptionalDecodeType
727         OptionalRangeType
728         ',' QWordConstExpr
729         ',' QWordConstExpr
730         ',' QWordConstExpr
731         ',' QWordConstExpr
732         ',' QWordConstExpr
733         OptionalByteConstExpr
734         OptionalStringData
735         OptionalNameString
736         OptionalType
737         OptionalTranslationType_Last
738         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,15,
739                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
740     | PARSEOP_QWORDIO
741         PARSEOP_OPEN_PAREN
742         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
743     ;
744 
745 QWordMemoryTerm
746     : PARSEOP_QWORDMEMORY
747         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_QWORDMEMORY);}
748         OptionalResourceType_First
749         OptionalDecodeType
750         OptionalMinType
751         OptionalMaxType
752         OptionalMemType
753         ',' OptionalReadWriteKeyword
754         ',' QWordConstExpr
755         ',' QWordConstExpr
756         ',' QWordConstExpr
757         ',' QWordConstExpr
758         ',' QWordConstExpr
759         OptionalByteConstExpr
760         OptionalStringData
761         OptionalNameString
762         OptionalAddressRange
763         OptionalType_Last
764         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,16,
765                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
766     | PARSEOP_QWORDMEMORY
767         PARSEOP_OPEN_PAREN
768         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
769     ;
770 
771 QWordSpaceTerm
772     : PARSEOP_QWORDSPACE
773         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_QWORDSPACE);}
774         ByteConstExpr               {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
775         OptionalResourceType
776         OptionalDecodeType
777         OptionalMinType
778         OptionalMaxType
779         ',' ByteConstExpr
780         ',' QWordConstExpr
781         ',' QWordConstExpr
782         ',' QWordConstExpr
783         ',' QWordConstExpr
784         ',' QWordConstExpr
785         OptionalByteConstExpr
786         OptionalStringData
787         OptionalNameString_Last
788         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,14,
789                                         $4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
790     | PARSEOP_QWORDSPACE
791         PARSEOP_OPEN_PAREN
792         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
793     ;
794 
795 RegisterTerm
796     : PARSEOP_REGISTER
797         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_REGISTER);}
798         AddressSpaceKeyword
799         ',' ByteConstExpr
800         ',' ByteConstExpr
801         ',' QWordConstExpr
802         OptionalAccessSize
803         OptionalNameString_Last
804         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,6,$4,$6,$8,$10,$11,$12);}
805     | PARSEOP_REGISTER
806         PARSEOP_OPEN_PAREN
807         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
808     ;
809 
810 SpiSerialBusTerm
811     : PARSEOP_SPI_SERIALBUS
812         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_SPI_SERIALBUS);}
813         WordConstExpr               /* 04: DeviceSelection */
814         OptionalDevicePolarity      /* 05: DevicePolarity */
815         OptionalWireMode            /* 06: WireMode */
816         ',' ByteConstExpr           /* 08: DataBitLength */
817         OptionalSlaveMode           /* 09: SlaveMode */
818         ',' DWordConstExpr          /* 11: ConnectionSpeed */
819         ',' ClockPolarityKeyword    /* 13: ClockPolarity */
820         ',' ClockPhaseKeyword       /* 15: ClockPhase */
821         ',' StringData              /* 17: ResourceSource */
822         OptionalByteConstExpr       /* 18: ResourceSourceIndex */
823         OptionalResourceType        /* 19: ResourceType */
824         OptionalNameString          /* 20: DescriptorName */
825         OptionalBuffer_Last         /* 21: VendorData */
826         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,14,
827                                         $4,$5,$6,$8,$9,$11,$13,$15,$17,$18,$19,$20,
828                                         TrCreateLeafOp (PARSEOP_DEFAULT_ARG),$21);}
829     | PARSEOP_SPI_SERIALBUS
830         PARSEOP_OPEN_PAREN
831         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
832     ;
833 
834 SpiSerialBusTermV2
835     : PARSEOP_SPI_SERIALBUS_V2
836         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_SPI_SERIALBUS_V2);}
837         WordConstExpr               /* 04: DeviceSelection */
838         OptionalDevicePolarity      /* 05: DevicePolarity */
839         OptionalWireMode            /* 06: WireMode */
840         ',' ByteConstExpr           /* 08: DataBitLength */
841         OptionalSlaveMode           /* 09: SlaveMode */
842         ',' DWordConstExpr          /* 11: ConnectionSpeed */
843         ',' ClockPolarityKeyword    /* 13: ClockPolarity */
844         ',' ClockPhaseKeyword       /* 15: ClockPhase */
845         ',' StringData              /* 17: ResourceSource */
846         OptionalByteConstExpr       /* 18: ResourceSourceIndex */
847         OptionalResourceType        /* 19: ResourceType */
848         OptionalNameString          /* 20: DescriptorName */
849         OptionalShareType           /* 21: Share */
850         OptionalBuffer_Last         /* 22: VendorData */
851         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,14,
852                                         $4,$5,$6,$8,$9,$11,$13,$15,$17,$18,$19,$20,$21,$22);}
853     | PARSEOP_SPI_SERIALBUS_V2
854         PARSEOP_OPEN_PAREN
855         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
856     ;
857 
858 StartDependentFnNoPriTerm
859     : PARSEOP_STARTDEPENDENTFN_NOPRI
860         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_STARTDEPENDENTFN_NOPRI);}
861         PARSEOP_CLOSE_PAREN '{'
862         ResourceMacroList '}'       {$$ = TrLinkOpChildren ($<n>3,1,$6);}
863     | PARSEOP_STARTDEPENDENTFN_NOPRI
864         PARSEOP_OPEN_PAREN
865         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
866     ;
867 
868 StartDependentFnTerm
869     : PARSEOP_STARTDEPENDENTFN
870         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_STARTDEPENDENTFN);}
871         ByteConstExpr
872         ',' ByteConstExpr
873         PARSEOP_CLOSE_PAREN '{'
874         ResourceMacroList '}'       {$$ = TrLinkOpChildren ($<n>3,3,$4,$6,$9);}
875     | PARSEOP_STARTDEPENDENTFN
876         PARSEOP_OPEN_PAREN
877         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
878     ;
879 
880 UartSerialBusTerm
881     : PARSEOP_UART_SERIALBUS
882         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_UART_SERIALBUS);}
883         DWordConstExpr              /* 04: ConnectionSpeed */
884         OptionalBitsPerByte         /* 05: BitsPerByte */
885         OptionalStopBits            /* 06: StopBits */
886         ',' ByteConstExpr           /* 08: LinesInUse */
887         OptionalEndian              /* 09: Endianness */
888         OptionalParityType          /* 10: Parity */
889         OptionalFlowControl         /* 11: FlowControl */
890         ',' WordConstExpr           /* 13: Rx BufferSize */
891         ',' WordConstExpr           /* 15: Tx BufferSize */
892         ',' StringData              /* 17: ResourceSource */
893         OptionalByteConstExpr       /* 18: ResourceSourceIndex */
894         OptionalResourceType        /* 19: ResourceType */
895         OptionalNameString          /* 20: DescriptorName */
896         OptionalBuffer_Last         /* 21: VendorData */
897         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,15,
898                                         $4,$5,$6,$8,$9,$10,$11,$13,$15,$17,$18,$19,$20,
899                                         TrCreateLeafOp (PARSEOP_DEFAULT_ARG),$21);}
900     | PARSEOP_UART_SERIALBUS
901         PARSEOP_OPEN_PAREN
902         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
903     ;
904 
905 UartSerialBusTermV2
906     : PARSEOP_UART_SERIALBUS_V2
907         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_UART_SERIALBUS_V2);}
908         DWordConstExpr              /* 04: ConnectionSpeed */
909         OptionalBitsPerByte         /* 05: BitsPerByte */
910         OptionalStopBits            /* 06: StopBits */
911         ',' ByteConstExpr           /* 08: LinesInUse */
912         OptionalEndian              /* 09: Endianness */
913         OptionalParityType          /* 10: Parity */
914         OptionalFlowControl         /* 11: FlowControl */
915         ',' WordConstExpr           /* 13: Rx BufferSize */
916         ',' WordConstExpr           /* 15: Tx BufferSize */
917         ',' StringData              /* 17: ResourceSource */
918         OptionalByteConstExpr       /* 18: ResourceSourceIndex */
919         OptionalResourceType        /* 19: ResourceType */
920         OptionalNameString          /* 20: DescriptorName */
921         OptionalShareType           /* 21: Share */
922         OptionalBuffer_Last         /* 22: VendorData */
923         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,15,
924                                         $4,$5,$6,$8,$9,$10,$11,$13,$15,$17,$18,$19,$20,$21,$22);}
925     | PARSEOP_UART_SERIALBUS_V2
926         PARSEOP_OPEN_PAREN
927         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
928     ;
929 
930 VendorLongTerm
931     : PARSEOP_VENDORLONG
932         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_VENDORLONG);}
933         OptionalNameString_First
934         PARSEOP_CLOSE_PAREN '{'
935             ByteList '}'            {$$ = TrLinkOpChildren ($<n>3,2,$4,$7);}
936     | PARSEOP_VENDORLONG
937         PARSEOP_OPEN_PAREN
938         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
939     ;
940 
941 VendorShortTerm
942     : PARSEOP_VENDORSHORT
943         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_VENDORSHORT);}
944         OptionalNameString_First
945         PARSEOP_CLOSE_PAREN '{'
946             ByteList '}'            {$$ = TrLinkOpChildren ($<n>3,2,$4,$7);}
947     | PARSEOP_VENDORSHORT
948         PARSEOP_OPEN_PAREN
949         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
950     ;
951 
952 WordBusNumberTerm
953     : PARSEOP_WORDBUSNUMBER
954         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_WORDBUSNUMBER);}
955         OptionalResourceType_First
956         OptionalMinType
957         OptionalMaxType
958         OptionalDecodeType
959         ',' WordConstExpr
960         ',' WordConstExpr
961         ',' WordConstExpr
962         ',' WordConstExpr
963         ',' WordConstExpr
964         OptionalByteConstExpr
965         OptionalStringData
966         OptionalNameString_Last
967         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,12,
968                                         $4,$5,$6,$7,$9,$11,$13,$15,$17,$18,$19,$20);}
969     | PARSEOP_WORDBUSNUMBER
970         PARSEOP_OPEN_PAREN
971         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
972     ;
973 
974 WordIOTerm
975     : PARSEOP_WORDIO
976         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_WORDIO);}
977         OptionalResourceType_First
978         OptionalMinType
979         OptionalMaxType
980         OptionalDecodeType
981         OptionalRangeType
982         ',' WordConstExpr
983         ',' WordConstExpr
984         ',' WordConstExpr
985         ',' WordConstExpr
986         ',' WordConstExpr
987         OptionalByteConstExpr
988         OptionalStringData
989         OptionalNameString
990         OptionalType
991         OptionalTranslationType_Last
992         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,15,
993                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
994     | PARSEOP_WORDIO
995         PARSEOP_OPEN_PAREN
996         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
997     ;
998 
999 WordSpaceTerm
1000     : PARSEOP_WORDSPACE
1001         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_WORDSPACE);}
1002         ByteConstExpr               {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
1003         OptionalResourceType
1004         OptionalDecodeType
1005         OptionalMinType
1006         OptionalMaxType
1007         ',' ByteConstExpr
1008         ',' WordConstExpr
1009         ',' WordConstExpr
1010         ',' WordConstExpr
1011         ',' WordConstExpr
1012         ',' WordConstExpr
1013         OptionalByteConstExpr
1014         OptionalStringData
1015         OptionalNameString_Last
1016         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,14,
1017                                         $4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
1018     | PARSEOP_WORDSPACE
1019         PARSEOP_OPEN_PAREN
1020         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
1021     ;
1022