xref: /freebsd/sys/contrib/dev/acpica/compiler/aslresources.y (revision dd21556857e8d40f66bf5ad54754d9d52669ebf7)
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 - 2024, 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     | DWordPccTerm                  {}
198     | DWordSpaceTerm                {}
199     | EndDependentFnTerm            {}
200     | ExtendedIOTerm                {}
201     | ExtendedMemoryTerm            {}
202     | ExtendedSpaceTerm             {}
203     | FixedDmaTerm                  {}
204     | FixedIOTerm                   {}
205     | GpioIntTerm                   {}
206     | GpioIoTerm                    {}
207     | I2cSerialBusTerm              {}
208     | I2cSerialBusTermV2            {}
209     | InterruptTerm                 {}
210     | IOTerm                        {}
211     | IRQNoFlagsTerm                {}
212     | IRQTerm                       {}
213     | Memory24Term                  {}
214     | Memory32FixedTerm             {}
215     | Memory32Term                  {}
216     | PinConfigTerm                 {}
217     | PinFunctionTerm               {}
218     | ClockInputTerm                {}
219     | PinGroupTerm                  {}
220     | PinGroupConfigTerm            {}
221     | PinGroupFunctionTerm          {}
222     | QWordIOTerm                   {}
223     | QWordMemoryTerm               {}
224     | QWordPccTerm                  {}
225     | QWordSpaceTerm                {}
226     | RegisterTerm                  {}
227     | SpiSerialBusTerm              {}
228     | SpiSerialBusTermV2            {}
229     | StartDependentFnNoPriTerm     {}
230     | StartDependentFnTerm          {}
231     | UartSerialBusTerm             {}
232     | UartSerialBusTermV2           {}
233     | VendorLongTerm                {}
234     | VendorShortTerm               {}
235     | WordBusNumberTerm             {}
236     | WordIOTerm                    {}
237     | WordPccTerm                   {}
238     | WordSpaceTerm                 {}
239     ;
240 
241 Csi2SerialBusTerm
242     : PARSEOP_CSI2_SERIALBUS
243         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_CSI2_SERIALBUS);}
244         OptionalSlaveMode_First     {UtCheckIntegerRange ($4, 0x00, 0x01);} /* 04: SlaveMode */
245         ',' ByteConstExpr           {UtCheckIntegerRange ($7, 0x00, 0x03);} /* 07: PhyType */
246         OptionalByteConstExpr       {UtCheckIntegerRange ($9, 0x00, 0xFC);} /* 09: LocalPortInstance */
247         ',' StringData              /* 12: ResourceSource */
248         ',' ByteConstExpr           /* 14: ResourceSourceIndex */
249         OptionalResourceType        /* 15; ResourceType (ResourceUsage) */
250         OptionalNameString          /* 16: DescriptorName */
251         OptionalBuffer_Last         /* 17: VendorData */
252         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,8,
253                                         $4,$7,$9,$12,$14,$15,$16,$17);}
254     | PARSEOP_CSI2_SERIALBUS
255         PARSEOP_OPEN_PAREN
256         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
257 
258 DMATerm
259     : PARSEOP_DMA
260         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_DMA);}
261         DMATypeKeyword
262         OptionalBusMasterKeyword
263         ',' XferTypeKeyword
264         OptionalNameString_Last
265         PARSEOP_CLOSE_PAREN '{'
266             ByteList '}'            {$$ = TrLinkOpChildren ($<n>3,5,$4,$5,$7,$8,$11);}
267     | PARSEOP_DMA
268         PARSEOP_OPEN_PAREN
269         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
270     ;
271 
272 DWordIOTerm
273     : PARSEOP_DWORDIO
274         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_DWORDIO);}
275         OptionalResourceType_First
276         OptionalMinType
277         OptionalMaxType
278         OptionalDecodeType
279         OptionalRangeType
280         ',' DWordConstExpr
281         ',' DWordConstExpr
282         ',' DWordConstExpr
283         ',' DWordConstExpr
284         ',' DWordConstExpr
285         OptionalByteConstExpr
286         OptionalStringData
287         OptionalNameString
288         OptionalType
289         OptionalTranslationType_Last
290         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,15,
291                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
292     | PARSEOP_DWORDIO
293         PARSEOP_OPEN_PAREN
294         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
295     ;
296 
297 DWordMemoryTerm
298     : PARSEOP_DWORDMEMORY
299         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_DWORDMEMORY);}
300         OptionalResourceType_First
301         OptionalDecodeType
302         OptionalMinType
303         OptionalMaxType
304         OptionalMemType
305         ',' OptionalReadWriteKeyword
306         ',' DWordConstExpr
307         ',' DWordConstExpr
308         ',' DWordConstExpr
309         ',' DWordConstExpr
310         ',' DWordConstExpr
311         OptionalByteConstExpr
312         OptionalStringData
313         OptionalNameString
314         OptionalAddressRange
315         OptionalType_Last
316         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,16,
317                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
318     | PARSEOP_DWORDMEMORY
319         PARSEOP_OPEN_PAREN
320         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
321     ;
322 
323 DWordPccTerm
324     : PARSEOP_DWORDPCC
325         PARSEOP_OPEN_PAREN           {$<n>$ = TrCreateLeafOp (PARSEOP_DWORDPCC);}
326         ByteConstExpr
327         OptionalByteConstExpr
328         OptionalStringData
329         OptionalNameString_Last
330         PARSEOP_CLOSE_PAREN                         {$$ = TrLinkOpChildren ($<n>3,4,
331                                                         $4,$5,$6,$7);}
332     | PARSEOP_DWORDPCC
333         PARSEOP_OPEN_PAREN
334         error PARSEOP_CLOSE_PAREN                   {$$ = AslDoError(); yyclearin;}
335     ;
336 
337 DWordSpaceTerm
338     : PARSEOP_DWORDSPACE
339         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_DWORDSPACE);}
340         ByteConstExpr               {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
341         OptionalResourceType
342         OptionalDecodeType
343         OptionalMinType
344         OptionalMaxType
345         ',' ByteConstExpr
346         ',' DWordConstExpr
347         ',' DWordConstExpr
348         ',' DWordConstExpr
349         ',' DWordConstExpr
350         ',' DWordConstExpr
351         OptionalByteConstExpr
352         OptionalStringData
353         OptionalNameString_Last
354         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,14,
355                                         $4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
356     | PARSEOP_DWORDSPACE
357         PARSEOP_OPEN_PAREN
358         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
359     ;
360 
361 EndDependentFnTerm
362     : PARSEOP_ENDDEPENDENTFN
363         PARSEOP_OPEN_PAREN
364         PARSEOP_CLOSE_PAREN         {$$ = TrCreateLeafOp (PARSEOP_ENDDEPENDENTFN);}
365     | PARSEOP_ENDDEPENDENTFN
366         PARSEOP_OPEN_PAREN
367         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
368     ;
369 
370 ExtendedIOTerm
371     : PARSEOP_EXTENDEDIO
372         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_EXTENDEDIO);}
373         OptionalResourceType_First
374         OptionalMinType
375         OptionalMaxType
376         OptionalDecodeType
377         OptionalRangeType
378         ',' QWordConstExpr
379         ',' QWordConstExpr
380         ',' QWordConstExpr
381         ',' QWordConstExpr
382         ',' QWordConstExpr
383         OptionalQWordConstExpr
384         OptionalNameString
385         OptionalType
386         OptionalTranslationType_Last
387         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,14,
388                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22);}
389     | PARSEOP_EXTENDEDIO
390         PARSEOP_OPEN_PAREN
391         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
392     ;
393 
394 ExtendedMemoryTerm
395     : PARSEOP_EXTENDEDMEMORY
396         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_EXTENDEDMEMORY);}
397         OptionalResourceType_First
398         OptionalDecodeType
399         OptionalMinType
400         OptionalMaxType
401         OptionalMemType
402         ',' OptionalReadWriteKeyword
403         ',' QWordConstExpr
404         ',' QWordConstExpr
405         ',' QWordConstExpr
406         ',' QWordConstExpr
407         ',' QWordConstExpr
408         OptionalQWordConstExpr
409         OptionalNameString
410         OptionalAddressRange
411         OptionalType_Last
412         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,15,
413                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24);}
414     | PARSEOP_EXTENDEDMEMORY
415         PARSEOP_OPEN_PAREN
416         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
417     ;
418 
419 ExtendedSpaceTerm
420     : PARSEOP_EXTENDEDSPACE PARSEOP_OPEN_PAREN     {$<n>$ = TrCreateLeafOp (PARSEOP_EXTENDEDSPACE);}
421         ByteConstExpr               {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
422         OptionalResourceType
423         OptionalDecodeType
424         OptionalMinType
425         OptionalMaxType
426         ',' ByteConstExpr
427         ',' QWordConstExpr
428         ',' QWordConstExpr
429         ',' QWordConstExpr
430         ',' QWordConstExpr
431         ',' QWordConstExpr
432         OptionalQWordConstExpr
433         OptionalNameString_Last
434         PARSEOP_CLOSE_PAREN                         {$$ = TrLinkOpChildren ($<n>3,13,
435                                         $4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23);}
436     | PARSEOP_EXTENDEDSPACE
437         PARSEOP_OPEN_PAREN
438         error PARSEOP_CLOSE_PAREN                   {$$ = AslDoError(); yyclearin;}
439     ;
440 
441 FixedDmaTerm
442     : PARSEOP_FIXEDDMA
443         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_FIXEDDMA);}
444         WordConstExpr               /* 04: DMA RequestLines */
445         ',' WordConstExpr           /* 06: DMA Channels */
446         OptionalXferSize            /* 07: DMA TransferSize */
447         OptionalNameString          /* 08: DescriptorName */
448         PARSEOP_CLOSE_PAREN                         {$$ = TrLinkOpChildren ($<n>3,4,$4,$6,$7,$8);}
449     | PARSEOP_FIXEDDMA
450         PARSEOP_OPEN_PAREN
451         error PARSEOP_CLOSE_PAREN                   {$$ = AslDoError(); yyclearin;}
452     ;
453 
454 FixedIOTerm
455     : PARSEOP_FIXEDIO
456         PARSEOP_OPEN_PAREN           {$<n>$ = TrCreateLeafOp (PARSEOP_FIXEDIO);}
457         WordConstExpr
458         ',' ByteConstExpr
459         OptionalNameString_Last
460         PARSEOP_CLOSE_PAREN                         {$$ = TrLinkOpChildren ($<n>3,3,$4,$6,$7);}
461     | PARSEOP_FIXEDIO
462         PARSEOP_OPEN_PAREN
463         error PARSEOP_CLOSE_PAREN                   {$$ = AslDoError(); yyclearin;}
464     ;
465 
466 GpioIntTerm
467     : PARSEOP_GPIO_INT
468         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_GPIO_INT);}
469         InterruptTypeKeyword        /* 04: InterruptType */
470         ',' InterruptLevel          /* 06: InterruptLevel */
471         OptionalShareType           /* 07: SharedType */
472         ',' PinConfigByte           /* 09: PinConfig */
473         OptionalWordConstExpr       /* 10: DebounceTimeout */
474         ',' StringData              /* 12: ResourceSource */
475         OptionalByteConstExpr       /* 13: ResourceSourceIndex */
476         OptionalResourceType        /* 14: ResourceType */
477         OptionalNameString          /* 15: DescriptorName */
478         OptionalBuffer_Last         /* 16: VendorData */
479         PARSEOP_CLOSE_PAREN '{'
480             DWordConstExpr '}'      {$$ = TrLinkOpChildren ($<n>3,11,
481                                         $4,$6,$7,$9,$10,$12,$13,$14,$15,$16,$19);}
482     | PARSEOP_GPIO_INT
483         PARSEOP_OPEN_PAREN
484         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
485     ;
486 
487 GpioIoTerm
488     : PARSEOP_GPIO_IO
489         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_GPIO_IO);}
490         OptionalShareType_First     /* 04: SharedType */
491         ',' PinConfigByte           /* 06: PinConfig */
492         OptionalWordConstExpr       /* 07: DebounceTimeout */
493         OptionalWordConstExpr       /* 08: DriveStrength */
494         OptionalIoRestriction       /* 09: IoRestriction */
495         ',' StringData              /* 11: ResourceSource */
496         OptionalByteConstExpr       /* 12: ResourceSourceIndex */
497         OptionalResourceType        /* 13: ResourceType */
498         OptionalNameString          /* 14: DescriptorName */
499         OptionalBuffer_Last         /* 15: VendorData */
500         PARSEOP_CLOSE_PAREN '{'
501             DWordList '}'           {$$ = TrLinkOpChildren ($<n>3,11,
502                                         $4,$6,$7,$8,$9,$11,$12,$13,$14,$15,$18);}
503     | PARSEOP_GPIO_IO
504         PARSEOP_OPEN_PAREN
505         error PARSEOP_CLOSE_PAREN                   {$$ = AslDoError(); yyclearin;}
506     ;
507 
508 I2cSerialBusTerm
509     : PARSEOP_I2C_SERIALBUS
510         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_I2C_SERIALBUS);}
511         WordConstExpr               /* 04: SlaveAddress */
512         OptionalSlaveMode           /* 05: SlaveMode */
513         ',' DWordConstExpr          /* 07: ConnectionSpeed */
514         OptionalAddressingMode      /* 08: AddressingMode */
515         ',' StringData              /* 10: ResourceSource */
516         OptionalByteConstExpr       /* 11: ResourceSourceIndex */
517         OptionalResourceType        /* 12: ResourceType */
518         OptionalNameString          /* 13: DescriptorName */
519         OptionalBuffer_Last         /* 14: VendorData */
520         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,10,
521                                         $4,$5,$7,$8,$10,$11,$12,$13,
522                                         TrCreateLeafOp (PARSEOP_DEFAULT_ARG),$14);}
523     | PARSEOP_I2C_SERIALBUS
524         PARSEOP_OPEN_PAREN
525         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
526     ;
527 
528 I2cSerialBusTermV2
529     : PARSEOP_I2C_SERIALBUS_V2
530         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_I2C_SERIALBUS_V2);}
531         WordConstExpr               /* 04: SlaveAddress */
532         OptionalSlaveMode           /* 05: SlaveMode */
533         ',' DWordConstExpr          /* 07: ConnectionSpeed */
534         OptionalAddressingMode      /* 08: AddressingMode */
535         ',' StringData              /* 10: ResourceSource */
536         OptionalByteConstExpr       /* 11: ResourceSourceIndex */
537         OptionalResourceType        /* 12: ResourceType */
538         OptionalNameString          /* 13: DescriptorName */
539         OptionalShareType           /* 14: Share */
540         OptionalBuffer_Last         /* 15: VendorData */
541         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,10,
542                                         $4,$5,$7,$8,$10,$11,$12,$13,$14,$15);}
543     | PARSEOP_I2C_SERIALBUS_V2
544         PARSEOP_OPEN_PAREN
545         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
546     ;
547 
548 InterruptTerm
549     : PARSEOP_INTERRUPT
550         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_INTERRUPT);}
551         OptionalResourceType_First
552         ',' InterruptTypeKeyword
553         ',' InterruptLevel
554         OptionalShareType
555         OptionalByteConstExpr
556         OptionalStringData
557         OptionalNameString_Last
558         PARSEOP_CLOSE_PAREN '{'
559             DWordList '}'           {$$ = TrLinkOpChildren ($<n>3,8,
560                                         $4,$6,$8,$9,$10,$11,$12,$15);}
561     | PARSEOP_INTERRUPT
562         PARSEOP_OPEN_PAREN
563         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
564     ;
565 
566 IOTerm
567     : PARSEOP_IO
568         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_IO);}
569         IODecodeKeyword
570         ',' WordConstExpr
571         ',' WordConstExpr
572         ',' ByteConstExpr
573         ',' ByteConstExpr
574         OptionalNameString_Last
575         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
576     | PARSEOP_IO
577         PARSEOP_OPEN_PAREN
578         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
579     ;
580 
581 IRQNoFlagsTerm
582     : PARSEOP_IRQNOFLAGS
583         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_IRQNOFLAGS);}
584         OptionalNameString_First
585         PARSEOP_CLOSE_PAREN '{'
586             ByteList '}'            {$$ = TrLinkOpChildren ($<n>3,2,$4,$7);}
587     | PARSEOP_IRQNOFLAGS
588         PARSEOP_OPEN_PAREN
589         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
590     ;
591 
592 IRQTerm
593     : PARSEOP_IRQ
594         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_IRQ);}
595         InterruptTypeKeyword
596         ',' InterruptLevel
597         OptionalShareType
598         OptionalNameString_Last
599         PARSEOP_CLOSE_PAREN '{'
600             ByteList '}'            {$$ = TrLinkOpChildren ($<n>3,5,$4,$6,$7,$8,$11);}
601     | PARSEOP_IRQ
602         PARSEOP_OPEN_PAREN
603         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
604     ;
605 
606 Memory24Term
607     : PARSEOP_MEMORY24
608         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_MEMORY24);}
609         OptionalReadWriteKeyword
610         ',' WordConstExpr
611         ',' WordConstExpr
612         ',' WordConstExpr
613         ',' WordConstExpr
614         OptionalNameString_Last
615         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
616     | PARSEOP_MEMORY24
617         PARSEOP_OPEN_PAREN
618         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
619     ;
620 
621 Memory32FixedTerm
622     : PARSEOP_MEMORY32FIXED
623         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_MEMORY32FIXED);}
624         OptionalReadWriteKeyword
625         ',' DWordConstExpr
626         ',' DWordConstExpr
627         OptionalNameString_Last
628         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,4,$4,$6,$8,$9);}
629     | PARSEOP_MEMORY32FIXED
630         PARSEOP_OPEN_PAREN
631         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
632     ;
633 
634 Memory32Term
635     : PARSEOP_MEMORY32
636         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_MEMORY32);}
637         OptionalReadWriteKeyword
638         ',' DWordConstExpr
639         ',' DWordConstExpr
640         ',' DWordConstExpr
641         ',' DWordConstExpr
642         OptionalNameString_Last
643         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
644     | PARSEOP_MEMORY32
645         PARSEOP_OPEN_PAREN
646         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
647     ;
648 
649 PinConfigTerm
650     : PARSEOP_PINCONFIG
651         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_PINCONFIG);}
652         OptionalShareType_First     /* 04: SharedType */
653         ',' ByteConstExpr           /* 06: PinConfigType */
654         ',' DWordConstExpr          /* 08: PinConfigValue */
655         ',' StringData              /* 10: ResourceSource */
656         OptionalByteConstExpr       /* 11: ResourceSourceIndex */
657         OptionalResourceType        /* 12: ResourceType */
658         OptionalNameString          /* 13: DescriptorName */
659         OptionalBuffer_Last         /* 14: VendorData */
660         PARSEOP_CLOSE_PAREN '{'
661             DWordList '}'           {$$ = TrLinkOpChildren ($<n>3,9,
662                                         $4,$6,$8,$10,$11,$12,$13,$14,$17);}
663     | PARSEOP_PINCONFIG
664         PARSEOP_OPEN_PAREN
665         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
666     ;
667 
668 PinFunctionTerm
669     : PARSEOP_PINFUNCTION
670         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_PINFUNCTION);}
671         OptionalShareType_First     /* 04: SharedType */
672         ',' PinConfigByte           /* 06: PinConfig */
673         ',' WordConstExpr           /* 08: FunctionNumber */
674         ',' StringData              /* 10: ResourceSource */
675         OptionalByteConstExpr       /* 11: ResourceSourceIndex */
676         OptionalResourceType        /* 12: ResourceType */
677         OptionalNameString          /* 13: DescriptorName */
678         OptionalBuffer_Last         /* 14: VendorData */
679         PARSEOP_CLOSE_PAREN '{'
680             DWordList '}'           {$$ = TrLinkOpChildren ($<n>3,9,
681                                         $4,$6,$8,$10,$11,$12,$13,$14,$17);}
682     | PARSEOP_PINFUNCTION
683         PARSEOP_OPEN_PAREN
684         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
685     ;
686 
687 ClockInputTerm
688     : PARSEOP_CLOCKINPUT
689         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_CLOCKINPUT);}
690         DWordConstExpr              /* 04: FrequencyNumerator */
691         ',' WordConstExpr           /* 06: FrequencyDivisor */
692         ',' ClockScaleKeyword       /* 08: Scale */
693         ',' ClockModeKeyword        /* 10: Mode*/
694         OptionalStringData          /* 11: ResourceSource */
695         OptionalByteConstExpr       /* 12: ResourceSourceIndex */
696         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,6,$4,$6,$8,$10,$11,$12);}
697     | PARSEOP_CLOCKINPUT
698         PARSEOP_OPEN_PAREN
699         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
700     ;
701 
702 PinGroupTerm
703     : PARSEOP_PINGROUP
704         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_PINGROUP);}
705         StringData                  /* 04: ResourceLabel */
706         OptionalProducerResourceType /* 05: ResourceType */
707         OptionalNameString          /* 06: DescriptorName */
708         OptionalBuffer_Last         /* 07: VendorData */
709         PARSEOP_CLOSE_PAREN '{'
710             DWordList '}'           {$$ = TrLinkOpChildren ($<n>3,5,$4,$5,$6,$7,$10);}
711     | PARSEOP_PINGROUP
712         PARSEOP_OPEN_PAREN
713         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
714     ;
715 
716 PinGroupConfigTerm
717     : PARSEOP_PINGROUPCONFIG
718         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_PINGROUPCONFIG);}
719         OptionalShareType_First     /* 04: SharedType */
720         ',' ByteConstExpr           /* 06: PinConfigType */
721         ',' DWordConstExpr          /* 08: PinConfigValue */
722         ',' StringData              /* 10: ResourceSource */
723         OptionalByteConstExpr       /* 11: ResourceSourceIndex */
724         ',' StringData              /* 13: ResourceSourceLabel */
725         OptionalResourceType        /* 14: ResourceType */
726         OptionalNameString          /* 15: DescriptorName */
727         OptionalBuffer_Last         /* 16: VendorData */
728         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,9,
729                                         $4,$6,$8,$10,$11,$13,$14,$15,$16);}
730     | PARSEOP_PINGROUPCONFIG
731         PARSEOP_OPEN_PAREN
732         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
733     ;
734 
735 PinGroupFunctionTerm
736     : PARSEOP_PINGROUPFUNCTION
737         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_PINGROUPFUNCTION);}
738         OptionalShareType_First     /* 04: SharedType */
739         ',' WordConstExpr           /* 06: FunctionNumber */
740         ',' StringData              /* 08: ResourceSource */
741         OptionalByteConstExpr       /* 09: ResourceSourceIndex */
742         ',' StringData              /* 11: ResourceSourceLabel */
743         OptionalResourceType        /* 12: ResourceType */
744         OptionalNameString          /* 13: DescriptorName */
745         OptionalBuffer_Last         /* 14: VendorData */
746         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,8,
747                                         $4,$6,$8,$9,$11,$12,$13,$14);}
748     | PARSEOP_PINGROUPFUNCTION
749         PARSEOP_OPEN_PAREN
750         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
751     ;
752 
753 QWordIOTerm
754     : PARSEOP_QWORDIO
755         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_QWORDIO);}
756         OptionalResourceType_First
757         OptionalMinType
758         OptionalMaxType
759         OptionalDecodeType
760         OptionalRangeType
761         ',' QWordConstExpr
762         ',' QWordConstExpr
763         ',' QWordConstExpr
764         ',' QWordConstExpr
765         ',' QWordConstExpr
766         OptionalByteConstExpr
767         OptionalStringData
768         OptionalNameString
769         OptionalType
770         OptionalTranslationType_Last
771         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,15,
772                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
773     | PARSEOP_QWORDIO
774         PARSEOP_OPEN_PAREN
775         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
776     ;
777 
778 QWordMemoryTerm
779     : PARSEOP_QWORDMEMORY
780         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_QWORDMEMORY);}
781         OptionalResourceType_First
782         OptionalDecodeType
783         OptionalMinType
784         OptionalMaxType
785         OptionalMemType
786         ',' OptionalReadWriteKeyword
787         ',' QWordConstExpr
788         ',' QWordConstExpr
789         ',' QWordConstExpr
790         ',' QWordConstExpr
791         ',' QWordConstExpr
792         OptionalByteConstExpr
793         OptionalStringData
794         OptionalNameString
795         OptionalAddressRange
796         OptionalType_Last
797         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,16,
798                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
799     | PARSEOP_QWORDMEMORY
800         PARSEOP_OPEN_PAREN
801         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
802     ;
803 
804 QWordPccTerm
805     : PARSEOP_QWORDPCC
806         PARSEOP_OPEN_PAREN           {$<n>$ = TrCreateLeafOp (PARSEOP_QWORDPCC);}
807         ByteConstExpr
808         OptionalByteConstExpr
809         OptionalStringData
810         OptionalNameString_Last
811         PARSEOP_CLOSE_PAREN                         {$$ = TrLinkOpChildren ($<n>3,4,
812                                                         $4,$5,$6,$7);}
813     | PARSEOP_QWORDPCC
814         PARSEOP_OPEN_PAREN
815         error PARSEOP_CLOSE_PAREN                   {$$ = AslDoError(); yyclearin;}
816     ;
817 
818 QWordSpaceTerm
819     : PARSEOP_QWORDSPACE
820         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_QWORDSPACE);}
821         ByteConstExpr               {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
822         OptionalResourceType
823         OptionalDecodeType
824         OptionalMinType
825         OptionalMaxType
826         ',' ByteConstExpr
827         ',' QWordConstExpr
828         ',' QWordConstExpr
829         ',' QWordConstExpr
830         ',' QWordConstExpr
831         ',' QWordConstExpr
832         OptionalByteConstExpr
833         OptionalStringData
834         OptionalNameString_Last
835         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,14,
836                                         $4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
837     | PARSEOP_QWORDSPACE
838         PARSEOP_OPEN_PAREN
839         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
840     ;
841 
842 RegisterTerm
843     : PARSEOP_REGISTER
844         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_REGISTER);}
845         AddressSpaceKeyword
846         ',' ByteConstExpr
847         ',' ByteConstExpr
848         ',' QWordConstExpr
849         OptionalAccessSize
850         OptionalNameString_Last
851         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,6,$4,$6,$8,$10,$11,$12);}
852     | PARSEOP_REGISTER
853         PARSEOP_OPEN_PAREN
854         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
855     ;
856 
857 SpiSerialBusTerm
858     : PARSEOP_SPI_SERIALBUS
859         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_SPI_SERIALBUS);}
860         WordConstExpr               /* 04: DeviceSelection */
861         OptionalDevicePolarity      /* 05: DevicePolarity */
862         OptionalWireMode            /* 06: WireMode */
863         ',' ByteConstExpr           /* 08: DataBitLength */
864         OptionalSlaveMode           /* 09: SlaveMode */
865         ',' DWordConstExpr          /* 11: ConnectionSpeed */
866         ',' ClockPolarityKeyword    /* 13: ClockPolarity */
867         ',' ClockPhaseKeyword       /* 15: ClockPhase */
868         ',' StringData              /* 17: ResourceSource */
869         OptionalByteConstExpr       /* 18: ResourceSourceIndex */
870         OptionalResourceType        /* 19: ResourceType */
871         OptionalNameString          /* 20: DescriptorName */
872         OptionalBuffer_Last         /* 21: VendorData */
873         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,14,
874                                         $4,$5,$6,$8,$9,$11,$13,$15,$17,$18,$19,$20,
875                                         TrCreateLeafOp (PARSEOP_DEFAULT_ARG),$21);}
876     | PARSEOP_SPI_SERIALBUS
877         PARSEOP_OPEN_PAREN
878         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
879     ;
880 
881 SpiSerialBusTermV2
882     : PARSEOP_SPI_SERIALBUS_V2
883         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_SPI_SERIALBUS_V2);}
884         WordConstExpr               /* 04: DeviceSelection */
885         OptionalDevicePolarity      /* 05: DevicePolarity */
886         OptionalWireMode            /* 06: WireMode */
887         ',' ByteConstExpr           /* 08: DataBitLength */
888         OptionalSlaveMode           /* 09: SlaveMode */
889         ',' DWordConstExpr          /* 11: ConnectionSpeed */
890         ',' ClockPolarityKeyword    /* 13: ClockPolarity */
891         ',' ClockPhaseKeyword       /* 15: ClockPhase */
892         ',' StringData              /* 17: ResourceSource */
893         OptionalByteConstExpr       /* 18: ResourceSourceIndex */
894         OptionalResourceType        /* 19: ResourceType */
895         OptionalNameString          /* 20: DescriptorName */
896         OptionalShareType           /* 21: Share */
897         OptionalBuffer_Last         /* 22: VendorData */
898         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,14,
899                                         $4,$5,$6,$8,$9,$11,$13,$15,$17,$18,$19,$20,$21,$22);}
900     | PARSEOP_SPI_SERIALBUS_V2
901         PARSEOP_OPEN_PAREN
902         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
903     ;
904 
905 StartDependentFnNoPriTerm
906     : PARSEOP_STARTDEPENDENTFN_NOPRI
907         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_STARTDEPENDENTFN_NOPRI);}
908         PARSEOP_CLOSE_PAREN '{'
909         ResourceMacroList '}'       {$$ = TrLinkOpChildren ($<n>3,1,$6);}
910     | PARSEOP_STARTDEPENDENTFN_NOPRI
911         PARSEOP_OPEN_PAREN
912         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
913     ;
914 
915 StartDependentFnTerm
916     : PARSEOP_STARTDEPENDENTFN
917         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_STARTDEPENDENTFN);}
918         ByteConstExpr
919         ',' ByteConstExpr
920         PARSEOP_CLOSE_PAREN '{'
921         ResourceMacroList '}'       {$$ = TrLinkOpChildren ($<n>3,3,$4,$6,$9);}
922     | PARSEOP_STARTDEPENDENTFN
923         PARSEOP_OPEN_PAREN
924         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
925     ;
926 
927 UartSerialBusTerm
928     : PARSEOP_UART_SERIALBUS
929         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_UART_SERIALBUS);}
930         DWordConstExpr              /* 04: ConnectionSpeed */
931         OptionalBitsPerByte         /* 05: BitsPerByte */
932         OptionalStopBits            /* 06: StopBits */
933         ',' ByteConstExpr           /* 08: LinesInUse */
934         OptionalEndian              /* 09: Endianness */
935         OptionalParityType          /* 10: Parity */
936         OptionalFlowControl         /* 11: FlowControl */
937         ',' WordConstExpr           /* 13: Rx BufferSize */
938         ',' WordConstExpr           /* 15: Tx BufferSize */
939         ',' StringData              /* 17: ResourceSource */
940         OptionalByteConstExpr       /* 18: ResourceSourceIndex */
941         OptionalResourceType        /* 19: ResourceType */
942         OptionalNameString          /* 20: DescriptorName */
943         OptionalBuffer_Last         /* 21: VendorData */
944         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,15,
945                                         $4,$5,$6,$8,$9,$10,$11,$13,$15,$17,$18,$19,$20,
946                                         TrCreateLeafOp (PARSEOP_DEFAULT_ARG),$21);}
947     | PARSEOP_UART_SERIALBUS
948         PARSEOP_OPEN_PAREN
949         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
950     ;
951 
952 UartSerialBusTermV2
953     : PARSEOP_UART_SERIALBUS_V2
954         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_UART_SERIALBUS_V2);}
955         DWordConstExpr              /* 04: ConnectionSpeed */
956         OptionalBitsPerByte         /* 05: BitsPerByte */
957         OptionalStopBits            /* 06: StopBits */
958         ',' ByteConstExpr           /* 08: LinesInUse */
959         OptionalEndian              /* 09: Endianness */
960         OptionalParityType          /* 10: Parity */
961         OptionalFlowControl         /* 11: FlowControl */
962         ',' WordConstExpr           /* 13: Rx BufferSize */
963         ',' WordConstExpr           /* 15: Tx BufferSize */
964         ',' StringData              /* 17: ResourceSource */
965         OptionalByteConstExpr       /* 18: ResourceSourceIndex */
966         OptionalResourceType        /* 19: ResourceType */
967         OptionalNameString          /* 20: DescriptorName */
968         OptionalShareType           /* 21: Share */
969         OptionalBuffer_Last         /* 22: VendorData */
970         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,15,
971                                         $4,$5,$6,$8,$9,$10,$11,$13,$15,$17,$18,$19,$20,$21,$22);}
972     | PARSEOP_UART_SERIALBUS_V2
973         PARSEOP_OPEN_PAREN
974         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
975     ;
976 
977 VendorLongTerm
978     : PARSEOP_VENDORLONG
979         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_VENDORLONG);}
980         OptionalNameString_First
981         PARSEOP_CLOSE_PAREN '{'
982             ByteList '}'            {$$ = TrLinkOpChildren ($<n>3,2,$4,$7);}
983     | PARSEOP_VENDORLONG
984         PARSEOP_OPEN_PAREN
985         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
986     ;
987 
988 VendorShortTerm
989     : PARSEOP_VENDORSHORT
990         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_VENDORSHORT);}
991         OptionalNameString_First
992         PARSEOP_CLOSE_PAREN '{'
993             ByteList '}'            {$$ = TrLinkOpChildren ($<n>3,2,$4,$7);}
994     | PARSEOP_VENDORSHORT
995         PARSEOP_OPEN_PAREN
996         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
997     ;
998 
999 WordBusNumberTerm
1000     : PARSEOP_WORDBUSNUMBER
1001         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_WORDBUSNUMBER);}
1002         OptionalResourceType_First
1003         OptionalMinType
1004         OptionalMaxType
1005         OptionalDecodeType
1006         ',' WordConstExpr
1007         ',' WordConstExpr
1008         ',' WordConstExpr
1009         ',' WordConstExpr
1010         ',' WordConstExpr
1011         OptionalByteConstExpr
1012         OptionalStringData
1013         OptionalNameString_Last
1014         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,12,
1015                                         $4,$5,$6,$7,$9,$11,$13,$15,$17,$18,$19,$20);}
1016     | PARSEOP_WORDBUSNUMBER
1017         PARSEOP_OPEN_PAREN
1018         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
1019     ;
1020 
1021 WordIOTerm
1022     : PARSEOP_WORDIO
1023         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_WORDIO);}
1024         OptionalResourceType_First
1025         OptionalMinType
1026         OptionalMaxType
1027         OptionalDecodeType
1028         OptionalRangeType
1029         ',' WordConstExpr
1030         ',' WordConstExpr
1031         ',' WordConstExpr
1032         ',' WordConstExpr
1033         ',' WordConstExpr
1034         OptionalByteConstExpr
1035         OptionalStringData
1036         OptionalNameString
1037         OptionalType
1038         OptionalTranslationType_Last
1039         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,15,
1040                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
1041     | PARSEOP_WORDIO
1042         PARSEOP_OPEN_PAREN
1043         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
1044     ;
1045 
1046 WordPccTerm
1047     : PARSEOP_WORDPCC
1048         PARSEOP_OPEN_PAREN           {$<n>$ = TrCreateLeafOp (PARSEOP_WORDPCC);}
1049         ByteConstExpr
1050         OptionalByteConstExpr
1051         OptionalStringData
1052         OptionalNameString_Last
1053         PARSEOP_CLOSE_PAREN                         {$$ = TrLinkOpChildren ($<n>3,4,
1054                                                         $4,$5,$6,$7);}
1055     | PARSEOP_WORDPCC
1056         PARSEOP_OPEN_PAREN
1057         error PARSEOP_CLOSE_PAREN                   {$$ = AslDoError(); yyclearin;}
1058     ;
1059 
1060 WordSpaceTerm
1061     : PARSEOP_WORDSPACE
1062         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_WORDSPACE);}
1063         ByteConstExpr               {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
1064         OptionalResourceType
1065         OptionalDecodeType
1066         OptionalMinType
1067         OptionalMaxType
1068         ',' ByteConstExpr
1069         ',' WordConstExpr
1070         ',' WordConstExpr
1071         ',' WordConstExpr
1072         ',' WordConstExpr
1073         ',' WordConstExpr
1074         OptionalByteConstExpr
1075         OptionalStringData
1076         OptionalNameString_Last
1077         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,14,
1078                                         $4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
1079     | PARSEOP_WORDSPACE
1080         PARSEOP_OPEN_PAREN
1081         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
1082     ;
1083