Home | History | Annotate | Line # | Download | only in compiler
aslresources.y revision 1.1.1.5
      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  * Copyright (C) 2000 - 2017, Intel Corp.
     12  * All rights reserved.
     13  *
     14  * Redistribution and use in source and binary forms, with or without
     15  * modification, are permitted provided that the following conditions
     16  * are met:
     17  * 1. Redistributions of source code must retain the above copyright
     18  *    notice, this list of conditions, and the following disclaimer,
     19  *    without modification.
     20  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
     21  *    substantially similar to the "NO WARRANTY" disclaimer below
     22  *    ("Disclaimer") and any redistribution must be conditioned upon
     23  *    including a substantially similar Disclaimer requirement for further
     24  *    binary redistribution.
     25  * 3. Neither the names of the above-listed copyright holders nor the names
     26  *    of any contributors may be used to endorse or promote products derived
     27  *    from this software without specific prior written permission.
     28  *
     29  * Alternatively, this software may be distributed under the terms of the
     30  * GNU General Public License ("GPL") version 2 as published by the Free
     31  * Software Foundation.
     32  *
     33  * NO WARRANTY
     34  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     35  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     36  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
     37  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     38  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     39  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     40  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     41  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
     42  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
     43  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     44  * POSSIBILITY OF SUCH DAMAGES.
     45  */
     46 
     47 ')
     48 
     49 
     50 /*******************************************************************************
     51  *
     52  * ASL Resource Template Terms
     53  *
     54  ******************************************************************************/
     55 
     56 /*
     57  * Note: Create two default nodes to allow conversion to a Buffer AML opcode
     58  * Also, insert the EndTag at the end of the template.
     59  */
     60 ResourceTemplateTerm
     61     : PARSEOP_RESOURCETEMPLATE      {COMMENT_CAPTURE_OFF;}
     62         OptionalParentheses
     63         '{'
     64         ResourceMacroList '}'       {$$ = TrCreateNode (PARSEOP_RESOURCETEMPLATE,4,
     65                                           TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
     66                                           TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
     67                                           $5,
     68                                           TrCreateLeafNode (PARSEOP_ENDTAG));
     69                                      COMMENT_CAPTURE_ON;}
     70     ;
     71 
     72 OptionalParentheses
     73     :                               {$$ = NULL;}
     74     | PARSEOP_OPEN_PAREN
     75         PARSEOP_CLOSE_PAREN         {$$ = NULL;}
     76     ;
     77 
     78 ResourceMacroList
     79     :                               {$$ = NULL;}
     80     | ResourceMacroList
     81         ResourceMacroTerm           {$$ = TrLinkPeerNode ($1,$2);}
     82     ;
     83 
     84 ResourceMacroTerm
     85     : DMATerm                       {}
     86     | DWordIOTerm                   {}
     87     | DWordMemoryTerm               {}
     88     | DWordSpaceTerm                {}
     89     | EndDependentFnTerm            {}
     90     | ExtendedIOTerm                {}
     91     | ExtendedMemoryTerm            {}
     92     | ExtendedSpaceTerm             {}
     93     | FixedDmaTerm                  {}
     94     | FixedIOTerm                   {}
     95     | GpioIntTerm                   {}
     96     | GpioIoTerm                    {}
     97     | I2cSerialBusTerm              {}
     98     | I2cSerialBusTermV2            {}
     99     | InterruptTerm                 {}
    100     | IOTerm                        {}
    101     | IRQNoFlagsTerm                {}
    102     | IRQTerm                       {}
    103     | Memory24Term                  {}
    104     | Memory32FixedTerm             {}
    105     | Memory32Term                  {}
    106     | QWordIOTerm                   {}
    107     | QWordMemoryTerm               {}
    108     | QWordSpaceTerm                {}
    109     | RegisterTerm                  {}
    110     | SpiSerialBusTerm              {}
    111     | SpiSerialBusTermV2            {}
    112     | StartDependentFnNoPriTerm     {}
    113     | StartDependentFnTerm          {}
    114     | UartSerialBusTerm             {}
    115     | UartSerialBusTermV2           {}
    116     | VendorLongTerm                {}
    117     | VendorShortTerm               {}
    118     | WordBusNumberTerm             {}
    119     | WordIOTerm                    {}
    120     | WordSpaceTerm                 {}
    121     ;
    122 
    123 DMATerm
    124     : PARSEOP_DMA
    125         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_DMA);}
    126         DMATypeKeyword
    127         OptionalBusMasterKeyword
    128         ',' XferTypeKeyword
    129         OptionalNameString_Last
    130         PARSEOP_CLOSE_PAREN '{'
    131             ByteList '}'            {$$ = TrLinkChildren ($<n>3,5,$4,$5,$7,$8,$11);}
    132     | PARSEOP_DMA
    133         PARSEOP_OPEN_PAREN
    134         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    135     ;
    136 
    137 DWordIOTerm
    138     : PARSEOP_DWORDIO
    139         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDIO);}
    140         OptionalResourceType_First
    141         OptionalMinType
    142         OptionalMaxType
    143         OptionalDecodeType
    144         OptionalRangeType
    145         ',' DWordConstExpr
    146         ',' DWordConstExpr
    147         ',' DWordConstExpr
    148         ',' DWordConstExpr
    149         ',' DWordConstExpr
    150         OptionalByteConstExpr
    151         OptionalStringData
    152         OptionalNameString
    153         OptionalType
    154         OptionalTranslationType_Last
    155         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,15,
    156                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
    157     | PARSEOP_DWORDIO
    158         PARSEOP_OPEN_PAREN
    159         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    160     ;
    161 
    162 DWordMemoryTerm
    163     : PARSEOP_DWORDMEMORY
    164         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDMEMORY);}
    165         OptionalResourceType_First
    166         OptionalDecodeType
    167         OptionalMinType
    168         OptionalMaxType
    169         OptionalMemType
    170         ',' OptionalReadWriteKeyword
    171         ',' DWordConstExpr
    172         ',' DWordConstExpr
    173         ',' DWordConstExpr
    174         ',' DWordConstExpr
    175         ',' DWordConstExpr
    176         OptionalByteConstExpr
    177         OptionalStringData
    178         OptionalNameString
    179         OptionalAddressRange
    180         OptionalType_Last
    181         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,16,
    182                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
    183     | PARSEOP_DWORDMEMORY
    184         PARSEOP_OPEN_PAREN
    185         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    186     ;
    187 
    188 DWordSpaceTerm
    189     : PARSEOP_DWORDSPACE
    190         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDSPACE);}
    191         ByteConstExpr               {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
    192         OptionalResourceType
    193         OptionalDecodeType
    194         OptionalMinType
    195         OptionalMaxType
    196         ',' ByteConstExpr
    197         ',' DWordConstExpr
    198         ',' DWordConstExpr
    199         ',' DWordConstExpr
    200         ',' DWordConstExpr
    201         ',' DWordConstExpr
    202         OptionalByteConstExpr
    203         OptionalStringData
    204         OptionalNameString_Last
    205         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,14,
    206                                         $4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
    207     | PARSEOP_DWORDSPACE
    208         PARSEOP_OPEN_PAREN
    209         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    210     ;
    211 
    212 EndDependentFnTerm
    213     : PARSEOP_ENDDEPENDENTFN
    214         PARSEOP_OPEN_PAREN
    215         PARSEOP_CLOSE_PAREN         {$$ = TrCreateLeafNode (PARSEOP_ENDDEPENDENTFN);}
    216     | PARSEOP_ENDDEPENDENTFN
    217         PARSEOP_OPEN_PAREN
    218         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    219     ;
    220 
    221 ExtendedIOTerm
    222     : PARSEOP_EXTENDEDIO
    223         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDIO);}
    224         OptionalResourceType_First
    225         OptionalMinType
    226         OptionalMaxType
    227         OptionalDecodeType
    228         OptionalRangeType
    229         ',' QWordConstExpr
    230         ',' QWordConstExpr
    231         ',' QWordConstExpr
    232         ',' QWordConstExpr
    233         ',' QWordConstExpr
    234         OptionalQWordConstExpr
    235         OptionalNameString
    236         OptionalType
    237         OptionalTranslationType_Last
    238         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,14,
    239                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22);}
    240     | PARSEOP_EXTENDEDIO
    241         PARSEOP_OPEN_PAREN
    242         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    243     ;
    244 
    245 ExtendedMemoryTerm
    246     : PARSEOP_EXTENDEDMEMORY
    247         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDMEMORY);}
    248         OptionalResourceType_First
    249         OptionalDecodeType
    250         OptionalMinType
    251         OptionalMaxType
    252         OptionalMemType
    253         ',' OptionalReadWriteKeyword
    254         ',' QWordConstExpr
    255         ',' QWordConstExpr
    256         ',' QWordConstExpr
    257         ',' QWordConstExpr
    258         ',' QWordConstExpr
    259         OptionalQWordConstExpr
    260         OptionalNameString
    261         OptionalAddressRange
    262         OptionalType_Last
    263         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,15,
    264                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24);}
    265     | PARSEOP_EXTENDEDMEMORY
    266         PARSEOP_OPEN_PAREN
    267         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    268     ;
    269 
    270 ExtendedSpaceTerm
    271     : PARSEOP_EXTENDEDSPACE PARSEOP_OPEN_PAREN     {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDSPACE);}
    272         ByteConstExpr               {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
    273         OptionalResourceType
    274         OptionalDecodeType
    275         OptionalMinType
    276         OptionalMaxType
    277         ',' ByteConstExpr
    278         ',' QWordConstExpr
    279         ',' QWordConstExpr
    280         ',' QWordConstExpr
    281         ',' QWordConstExpr
    282         ',' QWordConstExpr
    283         OptionalQWordConstExpr
    284         OptionalNameString_Last
    285         PARSEOP_CLOSE_PAREN                         {$$ = TrLinkChildren ($<n>3,13,
    286                                         $4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23);}
    287     | PARSEOP_EXTENDEDSPACE
    288         PARSEOP_OPEN_PAREN
    289         error PARSEOP_CLOSE_PAREN                   {$$ = AslDoError(); yyclearin;}
    290     ;
    291 
    292 FixedDmaTerm
    293     : PARSEOP_FIXEDDMA
    294         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_FIXEDDMA);}
    295         WordConstExpr               /* 04: DMA RequestLines */
    296         ',' WordConstExpr           /* 06: DMA Channels */
    297         OptionalXferSize            /* 07: DMA TransferSize */
    298         OptionalNameString          /* 08: DescriptorName */
    299         PARSEOP_CLOSE_PAREN                         {$$ = TrLinkChildren ($<n>3,4,$4,$6,$7,$8);}
    300     | PARSEOP_FIXEDDMA
    301         PARSEOP_OPEN_PAREN
    302         error PARSEOP_CLOSE_PAREN                   {$$ = AslDoError(); yyclearin;}
    303     ;
    304 
    305 FixedIOTerm
    306     : PARSEOP_FIXEDIO
    307         PARSEOP_OPEN_PAREN           {$<n>$ = TrCreateLeafNode (PARSEOP_FIXEDIO);}
    308         WordConstExpr
    309         ',' ByteConstExpr
    310         OptionalNameString_Last
    311         PARSEOP_CLOSE_PAREN                         {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
    312     | PARSEOP_FIXEDIO
    313         PARSEOP_OPEN_PAREN
    314         error PARSEOP_CLOSE_PAREN                   {$$ = AslDoError(); yyclearin;}
    315     ;
    316 
    317 GpioIntTerm
    318     : PARSEOP_GPIO_INT
    319         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_GPIO_INT);}
    320         InterruptTypeKeyword        /* 04: InterruptType */
    321         ',' InterruptLevel          /* 06: InterruptLevel */
    322         OptionalShareType           /* 07: SharedType */
    323         ',' PinConfigByte           /* 09: PinConfig */
    324         OptionalWordConstExpr       /* 10: DebounceTimeout */
    325         ',' StringData              /* 12: ResourceSource */
    326         OptionalByteConstExpr       /* 13: ResourceSourceIndex */
    327         OptionalResourceType        /* 14: ResourceType */
    328         OptionalNameString          /* 15: DescriptorName */
    329         OptionalBuffer_Last         /* 16: VendorData */
    330         PARSEOP_CLOSE_PAREN '{'
    331             DWordConstExpr '}'      {$$ = TrLinkChildren ($<n>3,11,
    332                                         $4,$6,$7,$9,$10,$12,$13,$14,$15,$16,$19);}
    333     | PARSEOP_GPIO_INT
    334         PARSEOP_OPEN_PAREN
    335         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    336     ;
    337 
    338 GpioIoTerm
    339     : PARSEOP_GPIO_IO
    340         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_GPIO_IO);}
    341         OptionalShareType_First     /* 04: SharedType */
    342         ',' PinConfigByte           /* 06: PinConfig */
    343         OptionalWordConstExpr       /* 07: DebounceTimeout */
    344         OptionalWordConstExpr       /* 08: DriveStrength */
    345         OptionalIoRestriction       /* 09: IoRestriction */
    346         ',' StringData              /* 11: ResourceSource */
    347         OptionalByteConstExpr       /* 12: ResourceSourceIndex */
    348         OptionalResourceType        /* 13: ResourceType */
    349         OptionalNameString          /* 14: DescriptorName */
    350         OptionalBuffer_Last         /* 15: VendorData */
    351         PARSEOP_CLOSE_PAREN '{'
    352             DWordList '}'           {$$ = TrLinkChildren ($<n>3,11,
    353                                         $4,$6,$7,$8,$9,$11,$12,$13,$14,$15,$18);}
    354     | PARSEOP_GPIO_IO
    355         PARSEOP_OPEN_PAREN
    356         error PARSEOP_CLOSE_PAREN                   {$$ = AslDoError(); yyclearin;}
    357     ;
    358 
    359 I2cSerialBusTerm
    360     : PARSEOP_I2C_SERIALBUS
    361         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_I2C_SERIALBUS);}
    362         WordConstExpr               /* 04: SlaveAddress */
    363         OptionalSlaveMode           /* 05: SlaveMode */
    364         ',' DWordConstExpr          /* 07: ConnectionSpeed */
    365         OptionalAddressingMode      /* 08: AddressingMode */
    366         ',' StringData              /* 10: ResourceSource */
    367         OptionalByteConstExpr       /* 11: ResourceSourceIndex */
    368         OptionalResourceType        /* 12: ResourceType */
    369         OptionalNameString          /* 13: DescriptorName */
    370         OptionalBuffer_Last         /* 14: VendorData */
    371         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,10,
    372                                         $4,$5,$7,$8,$10,$11,$12,$13,
    373                                         TrCreateLeafNode (PARSEOP_DEFAULT_ARG),$14);}
    374     | PARSEOP_I2C_SERIALBUS
    375         PARSEOP_OPEN_PAREN
    376         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    377     ;
    378 
    379 I2cSerialBusTermV2
    380     : PARSEOP_I2C_SERIALBUS_V2
    381         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_I2C_SERIALBUS_V2);}
    382         WordConstExpr               /* 04: SlaveAddress */
    383         OptionalSlaveMode           /* 05: SlaveMode */
    384         ',' DWordConstExpr          /* 07: ConnectionSpeed */
    385         OptionalAddressingMode      /* 08: AddressingMode */
    386         ',' StringData              /* 10: ResourceSource */
    387         OptionalByteConstExpr       /* 11: ResourceSourceIndex */
    388         OptionalResourceType        /* 12: ResourceType */
    389         OptionalNameString          /* 13: DescriptorName */
    390         OptionalShareType           /* 14: Share */
    391         OptionalBuffer_Last         /* 15: VendorData */
    392         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,10,
    393                                         $4,$5,$7,$8,$10,$11,$12,$13,$14,$15);}
    394     | PARSEOP_I2C_SERIALBUS_V2
    395         PARSEOP_OPEN_PAREN
    396         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    397     ;
    398 
    399 InterruptTerm
    400     : PARSEOP_INTERRUPT
    401         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_INTERRUPT);}
    402         OptionalResourceType_First
    403         ',' InterruptTypeKeyword
    404         ',' InterruptLevel
    405         OptionalShareType
    406         OptionalByteConstExpr
    407         OptionalStringData
    408         OptionalNameString_Last
    409         PARSEOP_CLOSE_PAREN '{'
    410             DWordList '}'           {$$ = TrLinkChildren ($<n>3,8,
    411                                         $4,$6,$8,$9,$10,$11,$12,$15);}
    412     | PARSEOP_INTERRUPT
    413         PARSEOP_OPEN_PAREN
    414         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    415     ;
    416 
    417 IOTerm
    418     : PARSEOP_IO
    419         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_IO);}
    420         IODecodeKeyword
    421         ',' WordConstExpr
    422         ',' WordConstExpr
    423         ',' ByteConstExpr
    424         ',' ByteConstExpr
    425         OptionalNameString_Last
    426         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
    427     | PARSEOP_IO
    428         PARSEOP_OPEN_PAREN
    429         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    430     ;
    431 
    432 IRQNoFlagsTerm
    433     : PARSEOP_IRQNOFLAGS
    434         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_IRQNOFLAGS);}
    435         OptionalNameString_First
    436         PARSEOP_CLOSE_PAREN '{'
    437             ByteList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
    438     | PARSEOP_IRQNOFLAGS
    439         PARSEOP_OPEN_PAREN
    440         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    441     ;
    442 
    443 IRQTerm
    444     : PARSEOP_IRQ
    445         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_IRQ);}
    446         InterruptTypeKeyword
    447         ',' InterruptLevel
    448         OptionalShareType
    449         OptionalNameString_Last
    450         PARSEOP_CLOSE_PAREN '{'
    451             ByteList '}'            {$$ = TrLinkChildren ($<n>3,5,$4,$6,$7,$8,$11);}
    452     | PARSEOP_IRQ
    453         PARSEOP_OPEN_PAREN
    454         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    455     ;
    456 
    457 Memory24Term
    458     : PARSEOP_MEMORY24
    459         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY24);}
    460         OptionalReadWriteKeyword
    461         ',' WordConstExpr
    462         ',' WordConstExpr
    463         ',' WordConstExpr
    464         ',' WordConstExpr
    465         OptionalNameString_Last
    466         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
    467     | PARSEOP_MEMORY24
    468         PARSEOP_OPEN_PAREN
    469         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    470     ;
    471 
    472 Memory32FixedTerm
    473     : PARSEOP_MEMORY32FIXED
    474         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY32FIXED);}
    475         OptionalReadWriteKeyword
    476         ',' DWordConstExpr
    477         ',' DWordConstExpr
    478         OptionalNameString_Last
    479         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,4,$4,$6,$8,$9);}
    480     | PARSEOP_MEMORY32FIXED
    481         PARSEOP_OPEN_PAREN
    482         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    483     ;
    484 
    485 Memory32Term
    486     : PARSEOP_MEMORY32
    487         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY32);}
    488         OptionalReadWriteKeyword
    489         ',' DWordConstExpr
    490         ',' DWordConstExpr
    491         ',' DWordConstExpr
    492         ',' DWordConstExpr
    493         OptionalNameString_Last
    494         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
    495     | PARSEOP_MEMORY32
    496         PARSEOP_OPEN_PAREN
    497         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    498     ;
    499 
    500 QWordIOTerm
    501     : PARSEOP_QWORDIO
    502         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDIO);}
    503         OptionalResourceType_First
    504         OptionalMinType
    505         OptionalMaxType
    506         OptionalDecodeType
    507         OptionalRangeType
    508         ',' QWordConstExpr
    509         ',' QWordConstExpr
    510         ',' QWordConstExpr
    511         ',' QWordConstExpr
    512         ',' QWordConstExpr
    513         OptionalByteConstExpr
    514         OptionalStringData
    515         OptionalNameString
    516         OptionalType
    517         OptionalTranslationType_Last
    518         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,15,
    519                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
    520     | PARSEOP_QWORDIO
    521         PARSEOP_OPEN_PAREN
    522         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    523     ;
    524 
    525 QWordMemoryTerm
    526     : PARSEOP_QWORDMEMORY
    527         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDMEMORY);}
    528         OptionalResourceType_First
    529         OptionalDecodeType
    530         OptionalMinType
    531         OptionalMaxType
    532         OptionalMemType
    533         ',' OptionalReadWriteKeyword
    534         ',' QWordConstExpr
    535         ',' QWordConstExpr
    536         ',' QWordConstExpr
    537         ',' QWordConstExpr
    538         ',' QWordConstExpr
    539         OptionalByteConstExpr
    540         OptionalStringData
    541         OptionalNameString
    542         OptionalAddressRange
    543         OptionalType_Last
    544         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,16,
    545                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
    546     | PARSEOP_QWORDMEMORY
    547         PARSEOP_OPEN_PAREN
    548         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    549     ;
    550 
    551 QWordSpaceTerm
    552     : PARSEOP_QWORDSPACE
    553         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDSPACE);}
    554         ByteConstExpr               {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
    555         OptionalResourceType
    556         OptionalDecodeType
    557         OptionalMinType
    558         OptionalMaxType
    559         ',' ByteConstExpr
    560         ',' QWordConstExpr
    561         ',' QWordConstExpr
    562         ',' QWordConstExpr
    563         ',' QWordConstExpr
    564         ',' QWordConstExpr
    565         OptionalByteConstExpr
    566         OptionalStringData
    567         OptionalNameString_Last
    568         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,14,
    569                                         $4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
    570     | PARSEOP_QWORDSPACE
    571         PARSEOP_OPEN_PAREN
    572         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    573     ;
    574 
    575 RegisterTerm
    576     : PARSEOP_REGISTER
    577         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_REGISTER);}
    578         AddressSpaceKeyword
    579         ',' ByteConstExpr
    580         ',' ByteConstExpr
    581         ',' QWordConstExpr
    582         OptionalAccessSize
    583         OptionalNameString_Last
    584         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$11,$12);}
    585     | PARSEOP_REGISTER
    586         PARSEOP_OPEN_PAREN
    587         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    588     ;
    589 
    590 SpiSerialBusTerm
    591     : PARSEOP_SPI_SERIALBUS
    592         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_SPI_SERIALBUS);}
    593         WordConstExpr               /* 04: DeviceSelection */
    594         OptionalDevicePolarity      /* 05: DevicePolarity */
    595         OptionalWireMode            /* 06: WireMode */
    596         ',' ByteConstExpr           /* 08: DataBitLength */
    597         OptionalSlaveMode           /* 09: SlaveMode */
    598         ',' DWordConstExpr          /* 11: ConnectionSpeed */
    599         ',' ClockPolarityKeyword    /* 13: ClockPolarity */
    600         ',' ClockPhaseKeyword       /* 15: ClockPhase */
    601         ',' StringData              /* 17: ResourceSource */
    602         OptionalByteConstExpr       /* 18: ResourceSourceIndex */
    603         OptionalResourceType        /* 19: ResourceType */
    604         OptionalNameString          /* 20: DescriptorName */
    605         OptionalBuffer_Last         /* 21: VendorData */
    606         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,14,
    607                                         $4,$5,$6,$8,$9,$11,$13,$15,$17,$18,$19,$20,
    608                                         TrCreateLeafNode (PARSEOP_DEFAULT_ARG),$21);}
    609     | PARSEOP_SPI_SERIALBUS
    610         PARSEOP_OPEN_PAREN
    611         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    612     ;
    613 
    614 SpiSerialBusTermV2
    615     : PARSEOP_SPI_SERIALBUS_V2
    616         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_SPI_SERIALBUS_V2);}
    617         WordConstExpr               /* 04: DeviceSelection */
    618         OptionalDevicePolarity      /* 05: DevicePolarity */
    619         OptionalWireMode            /* 06: WireMode */
    620         ',' ByteConstExpr           /* 08: DataBitLength */
    621         OptionalSlaveMode           /* 09: SlaveMode */
    622         ',' DWordConstExpr          /* 11: ConnectionSpeed */
    623         ',' ClockPolarityKeyword    /* 13: ClockPolarity */
    624         ',' ClockPhaseKeyword       /* 15: ClockPhase */
    625         ',' StringData              /* 17: ResourceSource */
    626         OptionalByteConstExpr       /* 18: ResourceSourceIndex */
    627         OptionalResourceType        /* 19: ResourceType */
    628         OptionalNameString          /* 20: DescriptorName */
    629         OptionalShareType           /* 21: Share */
    630         OptionalBuffer_Last         /* 22: VendorData */
    631         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,14,
    632                                         $4,$5,$6,$8,$9,$11,$13,$15,$17,$18,$19,$20,$21,$22);}
    633     | PARSEOP_SPI_SERIALBUS_V2
    634         PARSEOP_OPEN_PAREN
    635         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    636     ;
    637 
    638 StartDependentFnNoPriTerm
    639     : PARSEOP_STARTDEPENDENTFN_NOPRI
    640         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN_NOPRI);}
    641         PARSEOP_CLOSE_PAREN '{'
    642         ResourceMacroList '}'       {$$ = TrLinkChildren ($<n>3,1,$6);}
    643     | PARSEOP_STARTDEPENDENTFN_NOPRI
    644         PARSEOP_OPEN_PAREN
    645         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    646     ;
    647 
    648 StartDependentFnTerm
    649     : PARSEOP_STARTDEPENDENTFN
    650         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN);}
    651         ByteConstExpr
    652         ',' ByteConstExpr
    653         PARSEOP_CLOSE_PAREN '{'
    654         ResourceMacroList '}'       {$$ = TrLinkChildren ($<n>3,3,$4,$6,$9);}
    655     | PARSEOP_STARTDEPENDENTFN
    656         PARSEOP_OPEN_PAREN
    657         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    658     ;
    659 
    660 UartSerialBusTerm
    661     : PARSEOP_UART_SERIALBUS
    662         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_UART_SERIALBUS);}
    663         DWordConstExpr              /* 04: ConnectionSpeed */
    664         OptionalBitsPerByte         /* 05: BitsPerByte */
    665         OptionalStopBits            /* 06: StopBits */
    666         ',' ByteConstExpr           /* 08: LinesInUse */
    667         OptionalEndian              /* 09: Endianess */
    668         OptionalParityType          /* 10: Parity */
    669         OptionalFlowControl         /* 11: FlowControl */
    670         ',' WordConstExpr           /* 13: Rx BufferSize */
    671         ',' WordConstExpr           /* 15: Tx BufferSize */
    672         ',' StringData              /* 17: ResourceSource */
    673         OptionalByteConstExpr       /* 18: ResourceSourceIndex */
    674         OptionalResourceType        /* 19: ResourceType */
    675         OptionalNameString          /* 20: DescriptorName */
    676         OptionalBuffer_Last         /* 21: VendorData */
    677         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,15,
    678                                         $4,$5,$6,$8,$9,$10,$11,$13,$15,$17,$18,$19,$20,
    679                                         TrCreateLeafNode (PARSEOP_DEFAULT_ARG),$21);}
    680     | PARSEOP_UART_SERIALBUS
    681         PARSEOP_OPEN_PAREN
    682         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    683     ;
    684 
    685 UartSerialBusTermV2
    686     : PARSEOP_UART_SERIALBUS_V2
    687         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_UART_SERIALBUS_V2);}
    688         DWordConstExpr              /* 04: ConnectionSpeed */
    689         OptionalBitsPerByte         /* 05: BitsPerByte */
    690         OptionalStopBits            /* 06: StopBits */
    691         ',' ByteConstExpr           /* 08: LinesInUse */
    692         OptionalEndian              /* 09: Endianess */
    693         OptionalParityType          /* 10: Parity */
    694         OptionalFlowControl         /* 11: FlowControl */
    695         ',' WordConstExpr           /* 13: Rx BufferSize */
    696         ',' WordConstExpr           /* 15: Tx BufferSize */
    697         ',' StringData              /* 17: ResourceSource */
    698         OptionalByteConstExpr       /* 18: ResourceSourceIndex */
    699         OptionalResourceType        /* 19: ResourceType */
    700         OptionalNameString          /* 20: DescriptorName */
    701         OptionalShareType           /* 21: Share */
    702         OptionalBuffer_Last         /* 22: VendorData */
    703         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,15,
    704                                         $4,$5,$6,$8,$9,$10,$11,$13,$15,$17,$18,$19,$20,$21,$22);}
    705     | PARSEOP_UART_SERIALBUS_V2
    706         PARSEOP_OPEN_PAREN
    707         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    708     ;
    709 
    710 VendorLongTerm
    711     : PARSEOP_VENDORLONG
    712         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_VENDORLONG);}
    713         OptionalNameString_First
    714         PARSEOP_CLOSE_PAREN '{'
    715             ByteList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
    716     | PARSEOP_VENDORLONG
    717         PARSEOP_OPEN_PAREN
    718         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    719     ;
    720 
    721 VendorShortTerm
    722     : PARSEOP_VENDORSHORT
    723         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_VENDORSHORT);}
    724         OptionalNameString_First
    725         PARSEOP_CLOSE_PAREN '{'
    726             ByteList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
    727     | PARSEOP_VENDORSHORT
    728         PARSEOP_OPEN_PAREN
    729         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    730     ;
    731 
    732 WordBusNumberTerm
    733     : PARSEOP_WORDBUSNUMBER
    734         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_WORDBUSNUMBER);}
    735         OptionalResourceType_First
    736         OptionalMinType
    737         OptionalMaxType
    738         OptionalDecodeType
    739         ',' WordConstExpr
    740         ',' WordConstExpr
    741         ',' WordConstExpr
    742         ',' WordConstExpr
    743         ',' WordConstExpr
    744         OptionalByteConstExpr
    745         OptionalStringData
    746         OptionalNameString_Last
    747         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,12,
    748                                         $4,$5,$6,$7,$9,$11,$13,$15,$17,$18,$19,$20);}
    749     | PARSEOP_WORDBUSNUMBER
    750         PARSEOP_OPEN_PAREN
    751         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    752     ;
    753 
    754 WordIOTerm
    755     : PARSEOP_WORDIO
    756         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_WORDIO);}
    757         OptionalResourceType_First
    758         OptionalMinType
    759         OptionalMaxType
    760         OptionalDecodeType
    761         OptionalRangeType
    762         ',' WordConstExpr
    763         ',' WordConstExpr
    764         ',' WordConstExpr
    765         ',' WordConstExpr
    766         ',' WordConstExpr
    767         OptionalByteConstExpr
    768         OptionalStringData
    769         OptionalNameString
    770         OptionalType
    771         OptionalTranslationType_Last
    772         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,15,
    773                                         $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
    774     | PARSEOP_WORDIO
    775         PARSEOP_OPEN_PAREN
    776         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    777     ;
    778 
    779 WordSpaceTerm
    780     : PARSEOP_WORDSPACE
    781         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafNode (PARSEOP_WORDSPACE);}
    782         ByteConstExpr               {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
    783         OptionalResourceType
    784         OptionalDecodeType
    785         OptionalMinType
    786         OptionalMaxType
    787         ',' ByteConstExpr
    788         ',' WordConstExpr
    789         ',' WordConstExpr
    790         ',' WordConstExpr
    791         ',' WordConstExpr
    792         ',' WordConstExpr
    793         OptionalByteConstExpr
    794         OptionalStringData
    795         OptionalNameString_Last
    796         PARSEOP_CLOSE_PAREN         {$$ = TrLinkChildren ($<n>3,14,
    797                                         $4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
    798     | PARSEOP_WORDSPACE
    799         PARSEOP_OPEN_PAREN
    800         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
    801     ;
    802