Home | History | Annotate | Line # | Download | only in compiler
aslresources.y revision 1.1
      1 NoEcho('
      2 /******************************************************************************
      3  *
      4  * Module Name: aslresources.y - Bison/Yacc production rules for resources
      5  *
      6  *****************************************************************************/
      7 
      8 /*
      9  * Copyright (C) 2000 - 2016, Intel Corp.
     10  * All rights reserved.
     11  *
     12  * Redistribution and use in source and binary forms, with or without
     13  * modification, are permitted provided that the following conditions
     14  * are met:
     15  * 1. Redistributions of source code must retain the above copyright
     16  *    notice, this list of conditions, and the following disclaimer,
     17  *    without modification.
     18  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
     19  *    substantially similar to the "NO WARRANTY" disclaimer below
     20  *    ("Disclaimer") and any redistribution must be conditioned upon
     21  *    including a substantially similar Disclaimer requirement for further
     22  *    binary redistribution.
     23  * 3. Neither the names of the above-listed copyright holders nor the names
     24  *    of any contributors may be used to endorse or promote products derived
     25  *    from this software without specific prior written permission.
     26  *
     27  * Alternatively, this software may be distributed under the terms of the
     28  * GNU General Public License ("GPL") version 2 as published by the Free
     29  * Software Foundation.
     30  *
     31  * NO WARRANTY
     32  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     33  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     34  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
     35  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     36  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     37  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     38  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     39  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
     40  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
     41  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     42  * POSSIBILITY OF SUCH DAMAGES.
     43  */
     44 
     45 ')
     46 
     47 /*******************************************************************************
     48  *
     49  * ASL Parameter Keyword Terms
     50  *
     51  ******************************************************************************/
     52 
     53 AccessAttribKeyword
     54     : PARSEOP_ACCESSATTRIB_BLOCK            {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK);}
     55     | PARSEOP_ACCESSATTRIB_BLOCK_CALL       {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK_CALL);}
     56     | PARSEOP_ACCESSATTRIB_BYTE             {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BYTE);}
     57     | PARSEOP_ACCESSATTRIB_QUICK            {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_QUICK );}
     58     | PARSEOP_ACCESSATTRIB_SND_RCV          {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_SND_RCV);}
     59     | PARSEOP_ACCESSATTRIB_WORD             {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD);}
     60     | PARSEOP_ACCESSATTRIB_WORD_CALL        {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD_CALL);}
     61     | PARSEOP_ACCESSATTRIB_MULTIBYTE '('    {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_MULTIBYTE);}
     62         ByteConst
     63         ')'                                 {$$ = TrLinkChildren ($<n>3,1,$4);}
     64     | PARSEOP_ACCESSATTRIB_RAW_BYTES '('    {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_RAW_BYTES);}
     65         ByteConst
     66         ')'                                 {$$ = TrLinkChildren ($<n>3,1,$4);}
     67     | PARSEOP_ACCESSATTRIB_RAW_PROCESS '('  {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_RAW_PROCESS);}
     68         ByteConst
     69         ')'                                 {$$ = TrLinkChildren ($<n>3,1,$4);}
     70     ;
     71 
     72 AccessTypeKeyword
     73     : PARSEOP_ACCESSTYPE_ANY                {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_ANY);}
     74     | PARSEOP_ACCESSTYPE_BYTE               {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_BYTE);}
     75     | PARSEOP_ACCESSTYPE_WORD               {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_WORD);}
     76     | PARSEOP_ACCESSTYPE_DWORD              {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_DWORD);}
     77     | PARSEOP_ACCESSTYPE_QWORD              {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_QWORD);}
     78     | PARSEOP_ACCESSTYPE_BUF                {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_BUF);}
     79     ;
     80 
     81 AddressingModeKeyword
     82     : PARSEOP_ADDRESSINGMODE_7BIT           {$$ = TrCreateLeafNode (PARSEOP_ADDRESSINGMODE_7BIT);}
     83     | PARSEOP_ADDRESSINGMODE_10BIT          {$$ = TrCreateLeafNode (PARSEOP_ADDRESSINGMODE_10BIT);}
     84     ;
     85 
     86 AddressKeyword
     87     : PARSEOP_ADDRESSTYPE_MEMORY            {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_MEMORY);}
     88     | PARSEOP_ADDRESSTYPE_RESERVED          {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_RESERVED);}
     89     | PARSEOP_ADDRESSTYPE_NVS               {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_NVS);}
     90     | PARSEOP_ADDRESSTYPE_ACPI              {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_ACPI);}
     91     ;
     92 
     93 AddressSpaceKeyword
     94     : ByteConst                             {$$ = UtCheckIntegerRange ($1, 0x0A, 0xFF);}
     95     | RegionSpaceKeyword                    {}
     96     ;
     97 
     98 BitsPerByteKeyword
     99     : PARSEOP_BITSPERBYTE_FIVE              {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_FIVE);}
    100     | PARSEOP_BITSPERBYTE_SIX               {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_SIX);}
    101     | PARSEOP_BITSPERBYTE_SEVEN             {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_SEVEN);}
    102     | PARSEOP_BITSPERBYTE_EIGHT             {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_EIGHT);}
    103     | PARSEOP_BITSPERBYTE_NINE              {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_NINE);}
    104     ;
    105 
    106 ClockPhaseKeyword
    107     : PARSEOP_CLOCKPHASE_FIRST              {$$ = TrCreateLeafNode (PARSEOP_CLOCKPHASE_FIRST);}
    108     | PARSEOP_CLOCKPHASE_SECOND             {$$ = TrCreateLeafNode (PARSEOP_CLOCKPHASE_SECOND);}
    109     ;
    110 
    111 ClockPolarityKeyword
    112     : PARSEOP_CLOCKPOLARITY_LOW             {$$ = TrCreateLeafNode (PARSEOP_CLOCKPOLARITY_LOW);}
    113     | PARSEOP_CLOCKPOLARITY_HIGH            {$$ = TrCreateLeafNode (PARSEOP_CLOCKPOLARITY_HIGH);}
    114     ;
    115 
    116 DecodeKeyword
    117     : PARSEOP_DECODETYPE_POS                {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_POS);}
    118     | PARSEOP_DECODETYPE_SUB                {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_SUB);}
    119     ;
    120 
    121 DevicePolarityKeyword
    122     : PARSEOP_DEVICEPOLARITY_LOW            {$$ = TrCreateLeafNode (PARSEOP_DEVICEPOLARITY_LOW);}
    123     | PARSEOP_DEVICEPOLARITY_HIGH           {$$ = TrCreateLeafNode (PARSEOP_DEVICEPOLARITY_HIGH);}
    124     ;
    125 
    126 DMATypeKeyword
    127     : PARSEOP_DMATYPE_A                     {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_A);}
    128     | PARSEOP_DMATYPE_COMPATIBILITY         {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_COMPATIBILITY);}
    129     | PARSEOP_DMATYPE_B                     {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_B);}
    130     | PARSEOP_DMATYPE_F                     {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_F);}
    131     ;
    132 
    133 EndianKeyword
    134     : PARSEOP_ENDIAN_LITTLE                 {$$ = TrCreateLeafNode (PARSEOP_ENDIAN_LITTLE);}
    135     | PARSEOP_ENDIAN_BIG                    {$$ = TrCreateLeafNode (PARSEOP_ENDIAN_BIG);}
    136     ;
    137 
    138 FlowControlKeyword
    139     : PARSEOP_FLOWCONTROL_HW                {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_HW);}
    140     | PARSEOP_FLOWCONTROL_NONE              {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_NONE);}
    141     | PARSEOP_FLOWCONTROL_SW                {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_SW);}
    142     ;
    143 
    144 InterruptLevel
    145     : PARSEOP_INTLEVEL_ACTIVEBOTH           {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVEBOTH);}
    146     | PARSEOP_INTLEVEL_ACTIVEHIGH           {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVEHIGH);}
    147     | PARSEOP_INTLEVEL_ACTIVELOW            {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVELOW);}
    148     ;
    149 
    150 InterruptTypeKeyword
    151     : PARSEOP_INTTYPE_EDGE                  {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_EDGE);}
    152     | PARSEOP_INTTYPE_LEVEL                 {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_LEVEL);}
    153     ;
    154 
    155 IODecodeKeyword
    156     : PARSEOP_IODECODETYPE_16               {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_16);}
    157     | PARSEOP_IODECODETYPE_10               {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_10);}
    158     ;
    159 
    160 IoRestrictionKeyword
    161     : PARSEOP_IORESTRICT_IN                 {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_IN);}
    162     | PARSEOP_IORESTRICT_OUT                {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_OUT);}
    163     | PARSEOP_IORESTRICT_NONE               {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_NONE);}
    164     | PARSEOP_IORESTRICT_PRESERVE           {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_PRESERVE);}
    165     ;
    166 
    167 LockRuleKeyword
    168     : PARSEOP_LOCKRULE_LOCK                 {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_LOCK);}
    169     | PARSEOP_LOCKRULE_NOLOCK               {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_NOLOCK);}
    170     ;
    171 
    172 MatchOpKeyword
    173     : PARSEOP_MATCHTYPE_MTR                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MTR);}
    174     | PARSEOP_MATCHTYPE_MEQ                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MEQ);}
    175     | PARSEOP_MATCHTYPE_MLE                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MLE);}
    176     | PARSEOP_MATCHTYPE_MLT                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MLT);}
    177     | PARSEOP_MATCHTYPE_MGE                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MGE);}
    178     | PARSEOP_MATCHTYPE_MGT                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MGT);}
    179     ;
    180 
    181 MaxKeyword
    182     : PARSEOP_MAXTYPE_FIXED                 {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_FIXED);}
    183     | PARSEOP_MAXTYPE_NOTFIXED              {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_NOTFIXED);}
    184     ;
    185 
    186 MemTypeKeyword
    187     : PARSEOP_MEMTYPE_CACHEABLE             {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_CACHEABLE);}
    188     | PARSEOP_MEMTYPE_WRITECOMBINING        {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_WRITECOMBINING);}
    189     | PARSEOP_MEMTYPE_PREFETCHABLE          {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_PREFETCHABLE);}
    190     | PARSEOP_MEMTYPE_NONCACHEABLE          {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_NONCACHEABLE);}
    191     ;
    192 
    193 MinKeyword
    194     : PARSEOP_MINTYPE_FIXED                 {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_FIXED);}
    195     | PARSEOP_MINTYPE_NOTFIXED              {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_NOTFIXED);}
    196     ;
    197 
    198 ObjectTypeKeyword
    199     : PARSEOP_OBJECTTYPE_UNK                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);}
    200     | PARSEOP_OBJECTTYPE_INT                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_INT);}
    201     | PARSEOP_OBJECTTYPE_STR                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_STR);}
    202     | PARSEOP_OBJECTTYPE_BUF                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BUF);}
    203     | PARSEOP_OBJECTTYPE_PKG                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PKG);}
    204     | PARSEOP_OBJECTTYPE_FLD                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_FLD);}
    205     | PARSEOP_OBJECTTYPE_DEV                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DEV);}
    206     | PARSEOP_OBJECTTYPE_EVT                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_EVT);}
    207     | PARSEOP_OBJECTTYPE_MTH                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTH);}
    208     | PARSEOP_OBJECTTYPE_MTX                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTX);}
    209     | PARSEOP_OBJECTTYPE_OPR                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_OPR);}
    210     | PARSEOP_OBJECTTYPE_POW                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_POW);}
    211     | PARSEOP_OBJECTTYPE_PRO                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PRO);}
    212     | PARSEOP_OBJECTTYPE_THZ                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_THZ);}
    213     | PARSEOP_OBJECTTYPE_BFF                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BFF);}
    214     | PARSEOP_OBJECTTYPE_DDB                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DDB);}
    215     ;
    216 
    217 ParityTypeKeyword
    218     : PARSEOP_PARITYTYPE_SPACE              {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_SPACE);}
    219     | PARSEOP_PARITYTYPE_MARK               {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_MARK);}
    220     | PARSEOP_PARITYTYPE_ODD                {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_ODD);}
    221     | PARSEOP_PARITYTYPE_EVEN               {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_EVEN);}
    222     | PARSEOP_PARITYTYPE_NONE               {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_NONE);}
    223     ;
    224 
    225 PinConfigByte
    226     : PinConfigKeyword                      {$$ = $1;}
    227     | ByteConstExpr                         {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
    228     ;
    229 
    230 PinConfigKeyword
    231     : PARSEOP_PIN_NOPULL                    {$$ = TrCreateLeafNode (PARSEOP_PIN_NOPULL);}
    232     | PARSEOP_PIN_PULLDOWN                  {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLDOWN);}
    233     | PARSEOP_PIN_PULLUP                    {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLUP);}
    234     | PARSEOP_PIN_PULLDEFAULT               {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLDEFAULT);}
    235     ;
    236 
    237 PldKeyword
    238     : PARSEOP_PLD_REVISION                  {$$ = TrCreateLeafNode (PARSEOP_PLD_REVISION);}
    239     | PARSEOP_PLD_IGNORECOLOR               {$$ = TrCreateLeafNode (PARSEOP_PLD_IGNORECOLOR);}
    240     | PARSEOP_PLD_RED                       {$$ = TrCreateLeafNode (PARSEOP_PLD_RED);}
    241     | PARSEOP_PLD_GREEN                     {$$ = TrCreateLeafNode (PARSEOP_PLD_GREEN);}
    242     | PARSEOP_PLD_BLUE                      {$$ = TrCreateLeafNode (PARSEOP_PLD_BLUE);}
    243     | PARSEOP_PLD_WIDTH                     {$$ = TrCreateLeafNode (PARSEOP_PLD_WIDTH);}
    244     | PARSEOP_PLD_HEIGHT                    {$$ = TrCreateLeafNode (PARSEOP_PLD_HEIGHT);}
    245     | PARSEOP_PLD_USERVISIBLE               {$$ = TrCreateLeafNode (PARSEOP_PLD_USERVISIBLE);}
    246     | PARSEOP_PLD_DOCK                      {$$ = TrCreateLeafNode (PARSEOP_PLD_DOCK);}
    247     | PARSEOP_PLD_LID                       {$$ = TrCreateLeafNode (PARSEOP_PLD_LID);}
    248     | PARSEOP_PLD_PANEL                     {$$ = TrCreateLeafNode (PARSEOP_PLD_PANEL);}
    249     | PARSEOP_PLD_VERTICALPOSITION          {$$ = TrCreateLeafNode (PARSEOP_PLD_VERTICALPOSITION);}
    250     | PARSEOP_PLD_HORIZONTALPOSITION        {$$ = TrCreateLeafNode (PARSEOP_PLD_HORIZONTALPOSITION);}
    251     | PARSEOP_PLD_SHAPE                     {$$ = TrCreateLeafNode (PARSEOP_PLD_SHAPE);}
    252     | PARSEOP_PLD_GROUPORIENTATION          {$$ = TrCreateLeafNode (PARSEOP_PLD_GROUPORIENTATION);}
    253     | PARSEOP_PLD_GROUPTOKEN                {$$ = TrCreateLeafNode (PARSEOP_PLD_GROUPTOKEN);}
    254     | PARSEOP_PLD_GROUPPOSITION             {$$ = TrCreateLeafNode (PARSEOP_PLD_GROUPPOSITION);}
    255     | PARSEOP_PLD_BAY                       {$$ = TrCreateLeafNode (PARSEOP_PLD_BAY);}
    256     | PARSEOP_PLD_EJECTABLE                 {$$ = TrCreateLeafNode (PARSEOP_PLD_EJECTABLE);}
    257     | PARSEOP_PLD_EJECTREQUIRED             {$$ = TrCreateLeafNode (PARSEOP_PLD_EJECTREQUIRED);}
    258     | PARSEOP_PLD_CABINETNUMBER             {$$ = TrCreateLeafNode (PARSEOP_PLD_CABINETNUMBER);}
    259     | PARSEOP_PLD_CARDCAGENUMBER            {$$ = TrCreateLeafNode (PARSEOP_PLD_CARDCAGENUMBER);}
    260     | PARSEOP_PLD_REFERENCE                 {$$ = TrCreateLeafNode (PARSEOP_PLD_REFERENCE);}
    261     | PARSEOP_PLD_ROTATION                  {$$ = TrCreateLeafNode (PARSEOP_PLD_ROTATION);}
    262     | PARSEOP_PLD_ORDER                     {$$ = TrCreateLeafNode (PARSEOP_PLD_ORDER);}
    263     | PARSEOP_PLD_RESERVED                  {$$ = TrCreateLeafNode (PARSEOP_PLD_RESERVED);}
    264     | PARSEOP_PLD_VERTICALOFFSET            {$$ = TrCreateLeafNode (PARSEOP_PLD_VERTICALOFFSET);}
    265     | PARSEOP_PLD_HORIZONTALOFFSET          {$$ = TrCreateLeafNode (PARSEOP_PLD_HORIZONTALOFFSET);}
    266     ;
    267 
    268 RangeTypeKeyword
    269     : PARSEOP_RANGETYPE_ISAONLY             {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_ISAONLY);}
    270     | PARSEOP_RANGETYPE_NONISAONLY          {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_NONISAONLY);}
    271     | PARSEOP_RANGETYPE_ENTIRE              {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_ENTIRE);}
    272     ;
    273 
    274 RegionSpaceKeyword
    275     : PARSEOP_REGIONSPACE_IO                {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IO);}
    276     | PARSEOP_REGIONSPACE_MEM               {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_MEM);}
    277     | PARSEOP_REGIONSPACE_PCI               {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCI);}
    278     | PARSEOP_REGIONSPACE_EC                {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_EC);}
    279     | PARSEOP_REGIONSPACE_SMBUS             {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_SMBUS);}
    280     | PARSEOP_REGIONSPACE_CMOS              {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_CMOS);}
    281     | PARSEOP_REGIONSPACE_PCIBAR            {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCIBAR);}
    282     | PARSEOP_REGIONSPACE_IPMI              {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IPMI);}
    283     | PARSEOP_REGIONSPACE_GPIO              {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_GPIO);}
    284     | PARSEOP_REGIONSPACE_GSBUS             {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_GSBUS);}
    285     | PARSEOP_REGIONSPACE_PCC               {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCC);}
    286     | PARSEOP_REGIONSPACE_FFIXEDHW          {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_FFIXEDHW);}
    287     ;
    288 
    289 ResourceTypeKeyword
    290     : PARSEOP_RESOURCETYPE_CONSUMER         {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
    291     | PARSEOP_RESOURCETYPE_PRODUCER         {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_PRODUCER);}
    292     ;
    293 
    294 SerializeRuleKeyword
    295     : PARSEOP_SERIALIZERULE_SERIAL          {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_SERIAL);}
    296     | PARSEOP_SERIALIZERULE_NOTSERIAL       {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL);}
    297     ;
    298 
    299 ShareTypeKeyword
    300     : PARSEOP_SHARETYPE_SHARED              {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_SHARED);}
    301     | PARSEOP_SHARETYPE_EXCLUSIVE           {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_EXCLUSIVE);}
    302     | PARSEOP_SHARETYPE_SHAREDWAKE          {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_SHAREDWAKE);}
    303     | PARSEOP_SHARETYPE_EXCLUSIVEWAKE       {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_EXCLUSIVEWAKE);}
    304    ;
    305 
    306 SlaveModeKeyword
    307     : PARSEOP_SLAVEMODE_CONTROLLERINIT      {$$ = TrCreateLeafNode (PARSEOP_SLAVEMODE_CONTROLLERINIT);}
    308     | PARSEOP_SLAVEMODE_DEVICEINIT          {$$ = TrCreateLeafNode (PARSEOP_SLAVEMODE_DEVICEINIT);}
    309     ;
    310 
    311 StopBitsKeyword
    312     : PARSEOP_STOPBITS_TWO                  {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_TWO);}
    313     | PARSEOP_STOPBITS_ONEPLUSHALF          {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ONEPLUSHALF);}
    314     | PARSEOP_STOPBITS_ONE                  {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ONE);}
    315     | PARSEOP_STOPBITS_ZERO                 {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ZERO);}
    316     ;
    317 
    318 TranslationKeyword
    319     : PARSEOP_TRANSLATIONTYPE_SPARSE        {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_SPARSE);}
    320     | PARSEOP_TRANSLATIONTYPE_DENSE         {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_DENSE);}
    321     ;
    322 
    323 TypeKeyword
    324     : PARSEOP_TYPE_TRANSLATION              {$$ = TrCreateLeafNode (PARSEOP_TYPE_TRANSLATION);}
    325     | PARSEOP_TYPE_STATIC                   {$$ = TrCreateLeafNode (PARSEOP_TYPE_STATIC);}
    326     ;
    327 
    328 UpdateRuleKeyword
    329     : PARSEOP_UPDATERULE_PRESERVE           {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_PRESERVE);}
    330     | PARSEOP_UPDATERULE_ONES               {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ONES);}
    331     | PARSEOP_UPDATERULE_ZEROS              {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ZEROS);}
    332     ;
    333 
    334 WireModeKeyword
    335     : PARSEOP_WIREMODE_FOUR                 {$$ = TrCreateLeafNode (PARSEOP_WIREMODE_FOUR);}
    336     | PARSEOP_WIREMODE_THREE                {$$ = TrCreateLeafNode (PARSEOP_WIREMODE_THREE);}
    337     ;
    338 
    339 XferSizeKeyword
    340     : PARSEOP_XFERSIZE_8                    {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_8,   0);}
    341     | PARSEOP_XFERSIZE_16                   {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_16,  1);}
    342     | PARSEOP_XFERSIZE_32                   {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32,  2);}
    343     | PARSEOP_XFERSIZE_64                   {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_64,  3);}
    344     | PARSEOP_XFERSIZE_128                  {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_128, 4);}
    345     | PARSEOP_XFERSIZE_256                  {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_256, 5);}
    346     ;
    347 
    348 XferTypeKeyword
    349     : PARSEOP_XFERTYPE_8                    {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8);}
    350     | PARSEOP_XFERTYPE_8_16                 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8_16);}
    351     | PARSEOP_XFERTYPE_16                   {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_16);}
    352     ;
    353 
    354 
    355 /*******************************************************************************
    356  *
    357  * ASL Resource Template Terms
    358  *
    359  ******************************************************************************/
    360 
    361 /*
    362  * Note: Create two default nodes to allow conversion to a Buffer AML opcode
    363  * Also, insert the EndTag at the end of the template.
    364  */
    365 ResourceTemplateTerm
    366     : PARSEOP_RESOURCETEMPLATE '(' ')'
    367         '{'
    368         ResourceMacroList '}'       {$$ = TrCreateNode (PARSEOP_RESOURCETEMPLATE,4,
    369                                           TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
    370                                           TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
    371                                           $5,
    372                                           TrCreateLeafNode (PARSEOP_ENDTAG));}
    373     ;
    374 
    375 ResourceMacroList
    376     :                               {$$ = NULL;}
    377     | ResourceMacroList
    378         ResourceMacroTerm           {$$ = TrLinkPeerNode ($1,$2);}
    379     ;
    380 
    381 ResourceMacroTerm
    382     : DMATerm                       {}
    383     | DWordIOTerm                   {}
    384     | DWordMemoryTerm               {}
    385     | DWordSpaceTerm                {}
    386     | EndDependentFnTerm            {}
    387     | ExtendedIOTerm                {}
    388     | ExtendedMemoryTerm            {}
    389     | ExtendedSpaceTerm             {}
    390     | FixedDmaTerm                  {}
    391     | FixedIOTerm                   {}
    392     | GpioIntTerm                   {}
    393     | GpioIoTerm                    {}
    394     | I2cSerialBusTerm              {}
    395     | InterruptTerm                 {}
    396     | IOTerm                        {}
    397     | IRQNoFlagsTerm                {}
    398     | IRQTerm                       {}
    399     | Memory24Term                  {}
    400     | Memory32FixedTerm             {}
    401     | Memory32Term                  {}
    402     | QWordIOTerm                   {}
    403     | QWordMemoryTerm               {}
    404     | QWordSpaceTerm                {}
    405     | RegisterTerm                  {}
    406     | SpiSerialBusTerm              {}
    407     | StartDependentFnNoPriTerm     {}
    408     | StartDependentFnTerm          {}
    409     | UartSerialBusTerm             {}
    410     | VendorLongTerm                {}
    411     | VendorShortTerm               {}
    412     | WordBusNumberTerm             {}
    413     | WordIOTerm                    {}
    414     | WordSpaceTerm                 {}
    415     ;
    416 
    417 DMATerm
    418     : PARSEOP_DMA '('               {$<n>$ = TrCreateLeafNode (PARSEOP_DMA);}
    419         DMATypeKeyword
    420         OptionalBusMasterKeyword
    421         ',' XferTypeKeyword
    422         OptionalNameString_Last
    423         ')' '{'
    424             ByteList '}'            {$$ = TrLinkChildren ($<n>3,5,$4,$5,$7,$8,$11);}
    425     | PARSEOP_DMA '('
    426         error ')'                   {$$ = AslDoError(); yyclearin;}
    427     ;
    428 
    429 DWordIOTerm
    430     : PARSEOP_DWORDIO '('           {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDIO);}
    431         OptionalResourceType_First
    432         OptionalMinType
    433         OptionalMaxType
    434         OptionalDecodeType
    435         OptionalRangeType
    436         ',' DWordConstExpr
    437         ',' DWordConstExpr
    438         ',' DWordConstExpr
    439         ',' DWordConstExpr
    440         ',' DWordConstExpr
    441         OptionalByteConstExpr
    442         OptionalStringData
    443         OptionalNameString
    444         OptionalType
    445         OptionalTranslationType_Last
    446         ')'                         {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
    447     | PARSEOP_DWORDIO '('
    448         error ')'                   {$$ = AslDoError(); yyclearin;}
    449     ;
    450 
    451 DWordMemoryTerm
    452     : PARSEOP_DWORDMEMORY '('       {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDMEMORY);}
    453         OptionalResourceType_First
    454         OptionalDecodeType
    455         OptionalMinType
    456         OptionalMaxType
    457         OptionalMemType
    458         ',' OptionalReadWriteKeyword
    459         ',' DWordConstExpr
    460         ',' DWordConstExpr
    461         ',' DWordConstExpr
    462         ',' DWordConstExpr
    463         ',' DWordConstExpr
    464         OptionalByteConstExpr
    465         OptionalStringData
    466         OptionalNameString
    467         OptionalAddressRange
    468         OptionalType_Last
    469         ')'                         {$$ = TrLinkChildren ($<n>3,16,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
    470     | PARSEOP_DWORDMEMORY '('
    471         error ')'                   {$$ = AslDoError(); yyclearin;}
    472     ;
    473 
    474 DWordSpaceTerm
    475     : PARSEOP_DWORDSPACE '('        {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDSPACE);}
    476         ByteConstExpr               {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
    477         OptionalResourceType
    478         OptionalDecodeType
    479         OptionalMinType
    480         OptionalMaxType
    481         ',' ByteConstExpr
    482         ',' DWordConstExpr
    483         ',' DWordConstExpr
    484         ',' DWordConstExpr
    485         ',' DWordConstExpr
    486         ',' DWordConstExpr
    487         OptionalByteConstExpr
    488         OptionalStringData
    489         OptionalNameString_Last
    490         ')'                         {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
    491     | PARSEOP_DWORDSPACE '('
    492         error ')'                   {$$ = AslDoError(); yyclearin;}
    493     ;
    494 
    495 EndDependentFnTerm
    496     : PARSEOP_ENDDEPENDENTFN '('
    497         ')'                         {$$ = TrCreateLeafNode (PARSEOP_ENDDEPENDENTFN);}
    498     | PARSEOP_ENDDEPENDENTFN '('
    499         error ')'                   {$$ = AslDoError(); yyclearin;}
    500     ;
    501 
    502 ExtendedIOTerm
    503     : PARSEOP_EXTENDEDIO '('        {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDIO);}
    504         OptionalResourceType_First
    505         OptionalMinType
    506         OptionalMaxType
    507         OptionalDecodeType
    508         OptionalRangeType
    509         ',' QWordConstExpr
    510         ',' QWordConstExpr
    511         ',' QWordConstExpr
    512         ',' QWordConstExpr
    513         ',' QWordConstExpr
    514         OptionalQWordConstExpr
    515         OptionalNameString
    516         OptionalType
    517         OptionalTranslationType_Last
    518         ')'                         {$$ = TrLinkChildren ($<n>3,14,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22);}
    519     | PARSEOP_EXTENDEDIO '('
    520         error ')'                   {$$ = AslDoError(); yyclearin;}
    521     ;
    522 
    523 ExtendedMemoryTerm
    524     : PARSEOP_EXTENDEDMEMORY '('    {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDMEMORY);}
    525         OptionalResourceType_First
    526         OptionalDecodeType
    527         OptionalMinType
    528         OptionalMaxType
    529         OptionalMemType
    530         ',' OptionalReadWriteKeyword
    531         ',' QWordConstExpr
    532         ',' QWordConstExpr
    533         ',' QWordConstExpr
    534         ',' QWordConstExpr
    535         ',' QWordConstExpr
    536         OptionalQWordConstExpr
    537         OptionalNameString
    538         OptionalAddressRange
    539         OptionalType_Last
    540         ')'                         {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24);}
    541     | PARSEOP_EXTENDEDMEMORY '('
    542         error ')'                   {$$ = AslDoError(); yyclearin;}
    543     ;
    544 
    545 ExtendedSpaceTerm
    546     : PARSEOP_EXTENDEDSPACE '('     {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDSPACE);}
    547         ByteConstExpr               {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
    548         OptionalResourceType
    549         OptionalDecodeType
    550         OptionalMinType
    551         OptionalMaxType
    552         ',' ByteConstExpr
    553         ',' QWordConstExpr
    554         ',' QWordConstExpr
    555         ',' QWordConstExpr
    556         ',' QWordConstExpr
    557         ',' QWordConstExpr
    558         OptionalQWordConstExpr
    559         OptionalNameString_Last
    560         ')'                         {$$ = TrLinkChildren ($<n>3,13,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23);}
    561     | PARSEOP_EXTENDEDSPACE '('
    562         error ')'                   {$$ = AslDoError(); yyclearin;}
    563     ;
    564 
    565 FixedDmaTerm
    566     : PARSEOP_FIXEDDMA '('          {$<n>$ = TrCreateLeafNode (PARSEOP_FIXEDDMA);}
    567         WordConstExpr               /* 04: DMA RequestLines */
    568         ',' WordConstExpr           /* 06: DMA Channels */
    569         OptionalXferSize            /* 07: DMA TransferSize */
    570         OptionalNameString          /* 08: DescriptorName */
    571         ')'                         {$$ = TrLinkChildren ($<n>3,4,$4,$6,$7,$8);}
    572     | PARSEOP_FIXEDDMA '('
    573         error ')'                   {$$ = AslDoError(); yyclearin;}
    574     ;
    575 
    576 FixedIOTerm
    577     : PARSEOP_FIXEDIO '('           {$<n>$ = TrCreateLeafNode (PARSEOP_FIXEDIO);}
    578         WordConstExpr
    579         ',' ByteConstExpr
    580         OptionalNameString_Last
    581         ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
    582     | PARSEOP_FIXEDIO '('
    583         error ')'                   {$$ = AslDoError(); yyclearin;}
    584     ;
    585 
    586 GpioIntTerm
    587     : PARSEOP_GPIO_INT '('          {$<n>$ = TrCreateLeafNode (PARSEOP_GPIO_INT);}
    588         InterruptTypeKeyword        /* 04: InterruptType */
    589         ',' InterruptLevel          /* 06: InterruptLevel */
    590         OptionalShareType           /* 07: SharedType */
    591         ',' PinConfigByte           /* 09: PinConfig */
    592         OptionalWordConstExpr       /* 10: DebounceTimeout */
    593         ',' StringData              /* 12: ResourceSource */
    594         OptionalByteConstExpr       /* 13: ResourceSourceIndex */
    595         OptionalResourceType        /* 14: ResourceType */
    596         OptionalNameString          /* 15: DescriptorName */
    597         OptionalBuffer_Last         /* 16: VendorData */
    598         ')' '{'
    599             DWordConstExpr '}'      {$$ = TrLinkChildren ($<n>3,11,$4,$6,$7,$9,$10,$12,$13,$14,$15,$16,$19);}
    600     | PARSEOP_GPIO_INT '('
    601         error ')'                   {$$ = AslDoError(); yyclearin;}
    602     ;
    603 
    604 GpioIoTerm
    605     : PARSEOP_GPIO_IO '('           {$<n>$ = TrCreateLeafNode (PARSEOP_GPIO_IO);}
    606         OptionalShareType_First     /* 04: SharedType */
    607         ',' PinConfigByte           /* 06: PinConfig */
    608         OptionalWordConstExpr       /* 07: DebounceTimeout */
    609         OptionalWordConstExpr       /* 08: DriveStrength */
    610         OptionalIoRestriction       /* 09: IoRestriction */
    611         ',' StringData              /* 11: ResourceSource */
    612         OptionalByteConstExpr       /* 12: ResourceSourceIndex */
    613         OptionalResourceType        /* 13: ResourceType */
    614         OptionalNameString          /* 14: DescriptorName */
    615         OptionalBuffer_Last         /* 15: VendorData */
    616         ')' '{'
    617             DWordList '}'           {$$ = TrLinkChildren ($<n>3,11,$4,$6,$7,$8,$9,$11,$12,$13,$14,$15,$18);}
    618     | PARSEOP_GPIO_IO '('
    619         error ')'                   {$$ = AslDoError(); yyclearin;}
    620     ;
    621 
    622 I2cSerialBusTerm
    623     : PARSEOP_I2C_SERIALBUS '('     {$<n>$ = TrCreateLeafNode (PARSEOP_I2C_SERIALBUS);}
    624         WordConstExpr               /* 04: SlaveAddress */
    625         OptionalSlaveMode           /* 05: SlaveMode */
    626         ',' DWordConstExpr          /* 07: ConnectionSpeed */
    627         OptionalAddressingMode      /* 08: AddressingMode */
    628         ',' StringData              /* 10: ResourceSource */
    629         OptionalByteConstExpr       /* 11: ResourceSourceIndex */
    630         OptionalResourceType        /* 12: ResourceType */
    631         OptionalNameString          /* 13: DescriptorName */
    632         OptionalBuffer_Last         /* 14: VendorData */
    633         ')'                         {$$ = TrLinkChildren ($<n>3,9,$4,$5,$7,$8,$10,$11,$12,$13,$14);}
    634     | PARSEOP_I2C_SERIALBUS '('
    635         error ')'                   {$$ = AslDoError(); yyclearin;}
    636     ;
    637 
    638 InterruptTerm
    639     : PARSEOP_INTERRUPT '('         {$<n>$ = TrCreateLeafNode (PARSEOP_INTERRUPT);}
    640         OptionalResourceType_First
    641         ',' InterruptTypeKeyword
    642         ',' InterruptLevel
    643         OptionalShareType
    644         OptionalByteConstExpr
    645         OptionalStringData
    646         OptionalNameString_Last
    647         ')' '{'
    648             DWordList '}'           {$$ = TrLinkChildren ($<n>3,8,$4,$6,$8,$9,$10,$11,$12,$15);}
    649     | PARSEOP_INTERRUPT '('
    650         error ')'                   {$$ = AslDoError(); yyclearin;}
    651     ;
    652 
    653 IOTerm
    654     : PARSEOP_IO '('                {$<n>$ = TrCreateLeafNode (PARSEOP_IO);}
    655         IODecodeKeyword
    656         ',' WordConstExpr
    657         ',' WordConstExpr
    658         ',' ByteConstExpr
    659         ',' ByteConstExpr
    660         OptionalNameString_Last
    661         ')'                         {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
    662     | PARSEOP_IO '('
    663         error ')'                   {$$ = AslDoError(); yyclearin;}
    664     ;
    665 
    666 IRQNoFlagsTerm
    667     : PARSEOP_IRQNOFLAGS '('        {$<n>$ = TrCreateLeafNode (PARSEOP_IRQNOFLAGS);}
    668         OptionalNameString_First
    669         ')' '{'
    670             ByteList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
    671     | PARSEOP_IRQNOFLAGS '('
    672         error ')'                   {$$ = AslDoError(); yyclearin;}
    673     ;
    674 
    675 IRQTerm
    676     : PARSEOP_IRQ '('               {$<n>$ = TrCreateLeafNode (PARSEOP_IRQ);}
    677         InterruptTypeKeyword
    678         ',' InterruptLevel
    679         OptionalShareType
    680         OptionalNameString_Last
    681         ')' '{'
    682             ByteList '}'            {$$ = TrLinkChildren ($<n>3,5,$4,$6,$7,$8,$11);}
    683     | PARSEOP_IRQ '('
    684         error ')'                   {$$ = AslDoError(); yyclearin;}
    685     ;
    686 
    687 Memory24Term
    688     : PARSEOP_MEMORY24 '('          {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY24);}
    689         OptionalReadWriteKeyword
    690         ',' WordConstExpr
    691         ',' WordConstExpr
    692         ',' WordConstExpr
    693         ',' WordConstExpr
    694         OptionalNameString_Last
    695         ')'                         {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
    696     | PARSEOP_MEMORY24 '('
    697         error ')'                   {$$ = AslDoError(); yyclearin;}
    698     ;
    699 
    700 Memory32FixedTerm
    701     : PARSEOP_MEMORY32FIXED '('     {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY32FIXED);}
    702         OptionalReadWriteKeyword
    703         ',' DWordConstExpr
    704         ',' DWordConstExpr
    705         OptionalNameString_Last
    706         ')'                         {$$ = TrLinkChildren ($<n>3,4,$4,$6,$8,$9);}
    707     | PARSEOP_MEMORY32FIXED '('
    708         error ')'                   {$$ = AslDoError(); yyclearin;}
    709     ;
    710 
    711 Memory32Term
    712     : PARSEOP_MEMORY32 '('          {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY32);}
    713         OptionalReadWriteKeyword
    714         ',' DWordConstExpr
    715         ',' DWordConstExpr
    716         ',' DWordConstExpr
    717         ',' DWordConstExpr
    718         OptionalNameString_Last
    719         ')'                         {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
    720     | PARSEOP_MEMORY32 '('
    721         error ')'                   {$$ = AslDoError(); yyclearin;}
    722     ;
    723 
    724 QWordIOTerm
    725     : PARSEOP_QWORDIO '('           {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDIO);}
    726         OptionalResourceType_First
    727         OptionalMinType
    728         OptionalMaxType
    729         OptionalDecodeType
    730         OptionalRangeType
    731         ',' QWordConstExpr
    732         ',' QWordConstExpr
    733         ',' QWordConstExpr
    734         ',' QWordConstExpr
    735         ',' QWordConstExpr
    736         OptionalByteConstExpr
    737         OptionalStringData
    738         OptionalNameString
    739         OptionalType
    740         OptionalTranslationType_Last
    741         ')'                         {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
    742     | PARSEOP_QWORDIO '('
    743         error ')'                   {$$ = AslDoError(); yyclearin;}
    744     ;
    745 
    746 QWordMemoryTerm
    747     : PARSEOP_QWORDMEMORY '('       {$<n>$ = TrCreateLeafNode (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         ')'                         {$$ = TrLinkChildren ($<n>3,16,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
    765     | PARSEOP_QWORDMEMORY '('
    766         error ')'                   {$$ = AslDoError(); yyclearin;}
    767     ;
    768 
    769 QWordSpaceTerm
    770     : PARSEOP_QWORDSPACE '('        {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDSPACE);}
    771         ByteConstExpr               {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
    772         OptionalResourceType
    773         OptionalDecodeType
    774         OptionalMinType
    775         OptionalMaxType
    776         ',' ByteConstExpr
    777         ',' QWordConstExpr
    778         ',' QWordConstExpr
    779         ',' QWordConstExpr
    780         ',' QWordConstExpr
    781         ',' QWordConstExpr
    782         OptionalByteConstExpr
    783         OptionalStringData
    784         OptionalNameString_Last
    785         ')'                         {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
    786     | PARSEOP_QWORDSPACE '('
    787         error ')'                   {$$ = AslDoError(); yyclearin;}
    788     ;
    789 
    790 RegisterTerm
    791     : PARSEOP_REGISTER '('          {$<n>$ = TrCreateLeafNode (PARSEOP_REGISTER);}
    792         AddressSpaceKeyword
    793         ',' ByteConstExpr
    794         ',' ByteConstExpr
    795         ',' QWordConstExpr
    796         OptionalAccessSize
    797         OptionalNameString_Last
    798         ')'                         {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$11,$12);}
    799     | PARSEOP_REGISTER '('
    800         error ')'                   {$$ = AslDoError(); yyclearin;}
    801     ;
    802 
    803 SpiSerialBusTerm
    804     : PARSEOP_SPI_SERIALBUS '('     {$<n>$ = TrCreateLeafNode (PARSEOP_SPI_SERIALBUS);}
    805         WordConstExpr               /* 04: DeviceSelection */
    806         OptionalDevicePolarity      /* 05: DevicePolarity */
    807         OptionalWireMode            /* 06: WireMode */
    808         ',' ByteConstExpr           /* 08: DataBitLength */
    809         OptionalSlaveMode           /* 09: SlaveMode */
    810         ',' DWordConstExpr          /* 11: ConnectionSpeed */
    811         ',' ClockPolarityKeyword    /* 13: ClockPolarity */
    812         ',' ClockPhaseKeyword       /* 15: ClockPhase */
    813         ',' StringData              /* 17: ResourceSource */
    814         OptionalByteConstExpr       /* 18: ResourceSourceIndex */
    815         OptionalResourceType        /* 19: ResourceType */
    816         OptionalNameString          /* 20: DescriptorName */
    817         OptionalBuffer_Last         /* 21: VendorData */
    818         ')'                         {$$ = TrLinkChildren ($<n>3,13,$4,$5,$6,$8,$9,$11,$13,$15,$17,$18,$19,$20,$21);}
    819     | PARSEOP_SPI_SERIALBUS '('
    820         error ')'                   {$$ = AslDoError(); yyclearin;}
    821     ;
    822 
    823 StartDependentFnNoPriTerm
    824     : PARSEOP_STARTDEPENDENTFN_NOPRI '('    {$<n>$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN_NOPRI);}
    825         ')' '{'
    826         ResourceMacroList '}'       {$$ = TrLinkChildren ($<n>3,1,$6);}
    827     | PARSEOP_STARTDEPENDENTFN_NOPRI '('
    828         error ')'                   {$$ = AslDoError(); yyclearin;}
    829     ;
    830 
    831 StartDependentFnTerm
    832     : PARSEOP_STARTDEPENDENTFN '('  {$<n>$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN);}
    833         ByteConstExpr
    834         ',' ByteConstExpr
    835         ')' '{'
    836         ResourceMacroList '}'       {$$ = TrLinkChildren ($<n>3,3,$4,$6,$9);}
    837     | PARSEOP_STARTDEPENDENTFN '('
    838         error ')'                   {$$ = AslDoError(); yyclearin;}
    839     ;
    840 
    841 UartSerialBusTerm
    842     : PARSEOP_UART_SERIALBUS '('    {$<n>$ = TrCreateLeafNode (PARSEOP_UART_SERIALBUS);}
    843         DWordConstExpr              /* 04: ConnectionSpeed */
    844         OptionalBitsPerByte         /* 05: BitsPerByte */
    845         OptionalStopBits            /* 06: StopBits */
    846         ',' ByteConstExpr           /* 08: LinesInUse */
    847         OptionalEndian              /* 09: Endianess */
    848         OptionalParityType          /* 10: Parity */
    849         OptionalFlowControl         /* 11: FlowControl */
    850         ',' WordConstExpr           /* 13: Rx BufferSize */
    851         ',' WordConstExpr           /* 15: Tx BufferSize */
    852         ',' StringData              /* 17: ResourceSource */
    853         OptionalByteConstExpr       /* 18: ResourceSourceIndex */
    854         OptionalResourceType        /* 19: ResourceType */
    855         OptionalNameString          /* 20: DescriptorName */
    856         OptionalBuffer_Last         /* 21: VendorData */
    857         ')'                         {$$ = TrLinkChildren ($<n>3,14,$4,$5,$6,$8,$9,$10,$11,$13,$15,$17,$18,$19,$20,$21);}
    858     | PARSEOP_UART_SERIALBUS '('
    859         error ')'                   {$$ = AslDoError(); yyclearin;}
    860     ;
    861 
    862 VendorLongTerm
    863     : PARSEOP_VENDORLONG '('        {$<n>$ = TrCreateLeafNode (PARSEOP_VENDORLONG);}
    864         OptionalNameString_First
    865         ')' '{'
    866             ByteList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
    867     | PARSEOP_VENDORLONG '('
    868         error ')'                   {$$ = AslDoError(); yyclearin;}
    869     ;
    870 
    871 VendorShortTerm
    872     : PARSEOP_VENDORSHORT '('       {$<n>$ = TrCreateLeafNode (PARSEOP_VENDORSHORT);}
    873         OptionalNameString_First
    874         ')' '{'
    875             ByteList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
    876     | PARSEOP_VENDORSHORT '('
    877         error ')'                   {$$ = AslDoError(); yyclearin;}
    878     ;
    879 
    880 WordBusNumberTerm
    881     : PARSEOP_WORDBUSNUMBER '('     {$<n>$ = TrCreateLeafNode (PARSEOP_WORDBUSNUMBER);}
    882         OptionalResourceType_First
    883         OptionalMinType
    884         OptionalMaxType
    885         OptionalDecodeType
    886         ',' WordConstExpr
    887         ',' WordConstExpr
    888         ',' WordConstExpr
    889         ',' WordConstExpr
    890         ',' WordConstExpr
    891         OptionalByteConstExpr
    892         OptionalStringData
    893         OptionalNameString_Last
    894         ')'                         {$$ = TrLinkChildren ($<n>3,12,$4,$5,$6,$7,$9,$11,$13,$15,$17,$18,$19,$20);}
    895     | PARSEOP_WORDBUSNUMBER '('
    896         error ')'                   {$$ = AslDoError(); yyclearin;}
    897     ;
    898 
    899 WordIOTerm
    900     : PARSEOP_WORDIO '('            {$<n>$ = TrCreateLeafNode (PARSEOP_WORDIO);}
    901         OptionalResourceType_First
    902         OptionalMinType
    903         OptionalMaxType
    904         OptionalDecodeType
    905         OptionalRangeType
    906         ',' WordConstExpr
    907         ',' WordConstExpr
    908         ',' WordConstExpr
    909         ',' WordConstExpr
    910         ',' WordConstExpr
    911         OptionalByteConstExpr
    912         OptionalStringData
    913         OptionalNameString
    914         OptionalType
    915         OptionalTranslationType_Last
    916         ')'                         {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
    917     | PARSEOP_WORDIO '('
    918         error ')'                   {$$ = AslDoError(); yyclearin;}
    919     ;
    920 
    921 WordSpaceTerm
    922     : PARSEOP_WORDSPACE '('         {$<n>$ = TrCreateLeafNode (PARSEOP_WORDSPACE);}
    923         ByteConstExpr               {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
    924         OptionalResourceType
    925         OptionalDecodeType
    926         OptionalMinType
    927         OptionalMaxType
    928         ',' ByteConstExpr
    929         ',' WordConstExpr
    930         ',' WordConstExpr
    931         ',' WordConstExpr
    932         ',' WordConstExpr
    933         ',' WordConstExpr
    934         OptionalByteConstExpr
    935         OptionalStringData
    936         OptionalNameString_Last
    937         ')'                         {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
    938     | PARSEOP_WORDSPACE '('
    939         error ')'                   {$$ = AslDoError(); yyclearin;}
    940     ;
    941 
    942 
    943 /******* Object References ***********************************************/
    944 
    945 /* Allow IO, DMA, IRQ Resource macro names to also be used as identifiers */
    946 
    947 NameString
    948     : NameSeg                       {}
    949     | PARSEOP_NAMESTRING            {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) AslCompilerlval.s);}
    950     | PARSEOP_IO                    {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IO");}
    951     | PARSEOP_DMA                   {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "DMA");}
    952     | PARSEOP_IRQ                   {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IRQ");}
    953     ;
    954 
    955 NameSeg
    956     : PARSEOP_NAMESEG               {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESEG, (ACPI_NATIVE_INT) AslCompilerlval.s);}
    957     ;
    958 
    959 
    960 /*******************************************************************************
    961  *
    962  * ASL Helper Terms
    963  *
    964  ******************************************************************************/
    965 
    966 OptionalBusMasterKeyword
    967     : ','                                       {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);}
    968     | ',' PARSEOP_BUSMASTERTYPE_MASTER          {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);}
    969     | ',' PARSEOP_BUSMASTERTYPE_NOTMASTER       {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_NOTMASTER);}
    970     ;
    971 
    972 OptionalAccessAttribTerm
    973     :                               {$$ = NULL;}
    974     | ','                           {$$ = NULL;}
    975     | ',' ByteConstExpr             {$$ = $2;}
    976     | ',' AccessAttribKeyword       {$$ = $2;}
    977     ;
    978 
    979 OptionalAccessSize
    980     :                               {$$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);}
    981     | ','                           {$$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);}
    982     | ',' ByteConstExpr             {$$ = $2;}
    983     ;
    984 
    985 OptionalAddressingMode
    986     : ','                           {$$ = NULL;}
    987     | ',' AddressingModeKeyword     {$$ = $2;}
    988     ;
    989 
    990 OptionalAddressRange
    991     :                               {$$ = NULL;}
    992     | ','                           {$$ = NULL;}
    993     | ',' AddressKeyword            {$$ = $2;}
    994     ;
    995 
    996 OptionalBitsPerByte
    997     : ','                           {$$ = NULL;}
    998     | ',' BitsPerByteKeyword        {$$ = $2;}
    999     ;
   1000 
   1001 OptionalBuffer_Last
   1002     :                               {$$ = NULL;}
   1003     | ','                           {$$ = NULL;}
   1004     | ',' RawDataBufferTerm         {$$ = $2;}
   1005     ;
   1006 
   1007 OptionalByteConstExpr
   1008     :                               {$$ = NULL;}
   1009     | ','                           {$$ = NULL;}
   1010     | ',' ByteConstExpr             {$$ = $2;}
   1011     ;
   1012 
   1013 OptionalDecodeType
   1014     : ','                           {$$ = NULL;}
   1015     | ',' DecodeKeyword             {$$ = $2;}
   1016     ;
   1017 
   1018 OptionalDevicePolarity
   1019     : ','                           {$$ = NULL;}
   1020     | ',' DevicePolarityKeyword     {$$ = $2;}
   1021     ;
   1022 
   1023 OptionalDWordConstExpr
   1024     :                               {$$ = NULL;}
   1025     | ','                           {$$ = NULL;}
   1026     | ',' DWordConstExpr            {$$ = $2;}
   1027     ;
   1028 
   1029 OptionalEndian
   1030     : ','                           {$$ = NULL;}
   1031     | ',' EndianKeyword             {$$ = $2;}
   1032     ;
   1033 
   1034 OptionalFlowControl
   1035     : ','                           {$$ = NULL;}
   1036     | ',' FlowControlKeyword        {$$ = $2;}
   1037     ;
   1038 
   1039 OptionalIoRestriction
   1040     : ','                           {$$ = NULL;}
   1041     | ',' IoRestrictionKeyword      {$$ = $2;}
   1042     ;
   1043 
   1044 OptionalListString
   1045     :                               {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, ACPI_TO_INTEGER (""));}   /* Placeholder is a NULL string */
   1046     | ','                           {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, ACPI_TO_INTEGER (""));}   /* Placeholder is a NULL string */
   1047     | ',' TermArg                   {$$ = $2;}
   1048     ;
   1049 
   1050 OptionalMaxType
   1051     : ','                           {$$ = NULL;}
   1052     | ',' MaxKeyword                {$$ = $2;}
   1053     ;
   1054 
   1055 OptionalMemType
   1056     : ','                           {$$ = NULL;}
   1057     | ',' MemTypeKeyword            {$$ = $2;}
   1058     ;
   1059 
   1060 OptionalMinType
   1061     : ','                           {$$ = NULL;}
   1062     | ',' MinKeyword                {$$ = $2;}
   1063     ;
   1064 
   1065 OptionalNameString
   1066     :                               {$$ = NULL;}
   1067     | ','                           {$$ = NULL;}
   1068     | ',' NameString                {$$ = $2;}
   1069     ;
   1070 
   1071 OptionalNameString_Last
   1072     :                               {$$ = NULL;}
   1073     | ','                           {$$ = NULL;}
   1074     | ',' NameString                {$$ = $2;}
   1075     ;
   1076 
   1077 OptionalNameString_First
   1078     :                               {$$ = TrCreateLeafNode (PARSEOP_ZERO);}
   1079     | NameString                    {$$ = $1;}
   1080     ;
   1081 
   1082 OptionalObjectTypeKeyword
   1083     :                               {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);}
   1084     | ',' ObjectTypeKeyword         {$$ = $2;}
   1085     ;
   1086 
   1087 OptionalParityType
   1088     : ','                           {$$ = NULL;}
   1089     | ',' ParityTypeKeyword         {$$ = $2;}
   1090     ;
   1091 
   1092 OptionalQWordConstExpr
   1093     :                               {$$ = NULL;}
   1094     | ','                           {$$ = NULL;}
   1095     | ',' QWordConstExpr            {$$ = $2;}
   1096     ;
   1097 
   1098 OptionalRangeType
   1099     : ','                           {$$ = NULL;}
   1100     | ',' RangeTypeKeyword          {$$ = $2;}
   1101     ;
   1102 
   1103 OptionalReadWriteKeyword
   1104     :                                   {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);}
   1105     | PARSEOP_READWRITETYPE_BOTH        {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);}
   1106     | PARSEOP_READWRITETYPE_READONLY    {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_READONLY);}
   1107     ;
   1108 
   1109 OptionalResourceType_First
   1110     :                               {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
   1111     | ResourceTypeKeyword           {$$ = $1;}
   1112     ;
   1113 
   1114 OptionalResourceType
   1115     :                               {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
   1116     | ','                           {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
   1117     | ',' ResourceTypeKeyword       {$$ = $2;}
   1118     ;
   1119 
   1120 OptionalSlaveMode
   1121     : ','                           {$$ = NULL;}
   1122     | ',' SlaveModeKeyword          {$$ = $2;}
   1123     ;
   1124 
   1125 OptionalShareType
   1126     :                               {$$ = NULL;}
   1127     | ','                           {$$ = NULL;}
   1128     | ',' ShareTypeKeyword          {$$ = $2;}
   1129     ;
   1130 
   1131 OptionalShareType_First
   1132     :                               {$$ = NULL;}
   1133     | ShareTypeKeyword              {$$ = $1;}
   1134     ;
   1135 
   1136 OptionalStopBits
   1137     : ','                           {$$ = NULL;}
   1138     | ',' StopBitsKeyword           {$$ = $2;}
   1139     ;
   1140 
   1141 OptionalStringData
   1142     :                               {$$ = NULL;}
   1143     | ','                           {$$ = NULL;}
   1144     | ',' StringData                {$$ = $2;}
   1145     ;
   1146 
   1147 OptionalTranslationType_Last
   1148     :                               {$$ = NULL;}
   1149     | ','                           {$$ = NULL;}
   1150     | ',' TranslationKeyword        {$$ = $2;}
   1151     ;
   1152 
   1153 OptionalType
   1154     :                               {$$ = NULL;}
   1155     | ','                           {$$ = NULL;}
   1156     | ',' TypeKeyword               {$$ = $2;}
   1157     ;
   1158 
   1159 OptionalType_Last
   1160     :                               {$$ = NULL;}
   1161     | ','                           {$$ = NULL;}
   1162     | ',' TypeKeyword               {$$ = $2;}
   1163     ;
   1164 
   1165 OptionalWireMode
   1166     : ','                           {$$ = NULL;}
   1167     | ',' WireModeKeyword           {$$ = $2;}
   1168     ;
   1169 
   1170 OptionalWordConstExpr
   1171     : ','                           {$$ = NULL;}
   1172     | ',' WordConstExpr             {$$ = $2;}
   1173     ;
   1174 
   1175 OptionalXferSize
   1176     :                               {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);}
   1177     | ','                           {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);}
   1178     | ',' XferSizeKeyword           {$$ = $2;}
   1179     ;
   1180