aslresources.y revision 288425
1NoEcho('
2/******************************************************************************
3 *
4 * Module Name: aslresources.y - Bison/Yacc production rules for resources
5 *
6 *****************************************************************************/
7
8/*
9 * Copyright (C) 2000 - 2015, 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
53AccessAttribKeyword
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
72AccessTypeKeyword
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
81AddressingModeKeyword
82    : PARSEOP_ADDRESSINGMODE_7BIT           {$$ = TrCreateLeafNode (PARSEOP_ADDRESSINGMODE_7BIT);}
83    | PARSEOP_ADDRESSINGMODE_10BIT          {$$ = TrCreateLeafNode (PARSEOP_ADDRESSINGMODE_10BIT);}
84    ;
85
86AddressKeyword
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
93AddressSpaceKeyword
94    : ByteConst                             {$$ = UtCheckIntegerRange ($1, 0x0A, 0xFF);}
95    | RegionSpaceKeyword                    {}
96    ;
97
98BitsPerByteKeyword
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
106ClockPhaseKeyword
107    : PARSEOP_CLOCKPHASE_FIRST              {$$ = TrCreateLeafNode (PARSEOP_CLOCKPHASE_FIRST);}
108    | PARSEOP_CLOCKPHASE_SECOND             {$$ = TrCreateLeafNode (PARSEOP_CLOCKPHASE_SECOND);}
109    ;
110
111ClockPolarityKeyword
112    : PARSEOP_CLOCKPOLARITY_LOW             {$$ = TrCreateLeafNode (PARSEOP_CLOCKPOLARITY_LOW);}
113    | PARSEOP_CLOCKPOLARITY_HIGH            {$$ = TrCreateLeafNode (PARSEOP_CLOCKPOLARITY_HIGH);}
114    ;
115
116DecodeKeyword
117    : PARSEOP_DECODETYPE_POS                {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_POS);}
118    | PARSEOP_DECODETYPE_SUB                {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_SUB);}
119    ;
120
121DevicePolarityKeyword
122    : PARSEOP_DEVICEPOLARITY_LOW            {$$ = TrCreateLeafNode (PARSEOP_DEVICEPOLARITY_LOW);}
123    | PARSEOP_DEVICEPOLARITY_HIGH           {$$ = TrCreateLeafNode (PARSEOP_DEVICEPOLARITY_HIGH);}
124    ;
125
126DMATypeKeyword
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
133EndianKeyword
134    : PARSEOP_ENDIAN_LITTLE                 {$$ = TrCreateLeafNode (PARSEOP_ENDIAN_LITTLE);}
135    | PARSEOP_ENDIAN_BIG                    {$$ = TrCreateLeafNode (PARSEOP_ENDIAN_BIG);}
136    ;
137
138FlowControlKeyword
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
144InterruptLevel
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
150InterruptTypeKeyword
151    : PARSEOP_INTTYPE_EDGE                  {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_EDGE);}
152    | PARSEOP_INTTYPE_LEVEL                 {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_LEVEL);}
153    ;
154
155IODecodeKeyword
156    : PARSEOP_IODECODETYPE_16               {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_16);}
157    | PARSEOP_IODECODETYPE_10               {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_10);}
158    ;
159
160IoRestrictionKeyword
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
167LockRuleKeyword
168    : PARSEOP_LOCKRULE_LOCK                 {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_LOCK);}
169    | PARSEOP_LOCKRULE_NOLOCK               {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_NOLOCK);}
170    ;
171
172MatchOpKeyword
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
181MaxKeyword
182    : PARSEOP_MAXTYPE_FIXED                 {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_FIXED);}
183    | PARSEOP_MAXTYPE_NOTFIXED              {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_NOTFIXED);}
184    ;
185
186MemTypeKeyword
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
193MinKeyword
194    : PARSEOP_MINTYPE_FIXED                 {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_FIXED);}
195    | PARSEOP_MINTYPE_NOTFIXED              {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_NOTFIXED);}
196    ;
197
198ObjectTypeKeyword
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
217ParityTypeKeyword
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
225PinConfigByte
226    : PinConfigKeyword                      {$$ = $1;}
227    | ByteConstExpr                         {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
228    ;
229
230PinConfigKeyword
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
237PldKeyword
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
268RangeTypeKeyword
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
274RegionSpaceKeyword
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
289ResourceTypeKeyword
290    : PARSEOP_RESOURCETYPE_CONSUMER         {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
291    | PARSEOP_RESOURCETYPE_PRODUCER         {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_PRODUCER);}
292    ;
293
294SerializeRuleKeyword
295    : PARSEOP_SERIALIZERULE_SERIAL          {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_SERIAL);}
296    | PARSEOP_SERIALIZERULE_NOTSERIAL       {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL);}
297    ;
298
299ShareTypeKeyword
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
306SlaveModeKeyword
307    : PARSEOP_SLAVEMODE_CONTROLLERINIT      {$$ = TrCreateLeafNode (PARSEOP_SLAVEMODE_CONTROLLERINIT);}
308    | PARSEOP_SLAVEMODE_DEVICEINIT          {$$ = TrCreateLeafNode (PARSEOP_SLAVEMODE_DEVICEINIT);}
309    ;
310
311StopBitsKeyword
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
318TranslationKeyword
319    : PARSEOP_TRANSLATIONTYPE_SPARSE        {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_SPARSE);}
320    | PARSEOP_TRANSLATIONTYPE_DENSE         {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_DENSE);}
321    ;
322
323TypeKeyword
324    : PARSEOP_TYPE_TRANSLATION              {$$ = TrCreateLeafNode (PARSEOP_TYPE_TRANSLATION);}
325    | PARSEOP_TYPE_STATIC                   {$$ = TrCreateLeafNode (PARSEOP_TYPE_STATIC);}
326    ;
327
328UpdateRuleKeyword
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
334WireModeKeyword
335    : PARSEOP_WIREMODE_FOUR                 {$$ = TrCreateLeafNode (PARSEOP_WIREMODE_FOUR);}
336    | PARSEOP_WIREMODE_THREE                {$$ = TrCreateLeafNode (PARSEOP_WIREMODE_THREE);}
337    ;
338
339XferSizeKeyword
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
348XferTypeKeyword
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 */
365ResourceTemplateTerm
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
375ResourceMacroList
376    :                               {$$ = NULL;}
377    | ResourceMacroList
378        ResourceMacroTerm           {$$ = TrLinkPeerNode ($1,$2);}
379    ;
380
381ResourceMacroTerm
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
417DMATerm
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
429DWordIOTerm
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
451DWordMemoryTerm
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
474DWordSpaceTerm
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
495EndDependentFnTerm
496    : PARSEOP_ENDDEPENDENTFN '('
497        ')'                         {$$ = TrCreateLeafNode (PARSEOP_ENDDEPENDENTFN);}
498    | PARSEOP_ENDDEPENDENTFN '('
499        error ')'                   {$$ = AslDoError(); yyclearin;}
500    ;
501
502ExtendedIOTerm
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
523ExtendedMemoryTerm
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
545ExtendedSpaceTerm
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
565FixedDmaTerm
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
576FixedIOTerm
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
586GpioIntTerm
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
604GpioIoTerm
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
622I2cSerialBusTerm
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
638InterruptTerm
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
653IOTerm
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
666IRQNoFlagsTerm
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
675IRQTerm
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
687Memory24Term
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
700Memory32FixedTerm
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
711Memory32Term
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
724QWordIOTerm
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
746QWordMemoryTerm
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
769QWordSpaceTerm
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
790RegisterTerm
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
803SpiSerialBusTerm
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
823StartDependentFnNoPriTerm
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
831StartDependentFnTerm
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
841UartSerialBusTerm
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
862VendorLongTerm
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
871VendorShortTerm
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
880WordBusNumberTerm
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
899WordIOTerm
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
921WordSpaceTerm
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
947NameString
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
955NameSeg
956    : PARSEOP_NAMESEG               {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESEG, (ACPI_NATIVE_INT) AslCompilerlval.s);}
957    ;
958
959
960/*******************************************************************************
961 *
962 * ASL Helper Terms
963 *
964 ******************************************************************************/
965
966OptionalBusMasterKeyword
967    : ','                                       {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);}
968    | ',' PARSEOP_BUSMASTERTYPE_MASTER          {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);}
969    | ',' PARSEOP_BUSMASTERTYPE_NOTMASTER       {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_NOTMASTER);}
970    ;
971
972OptionalAccessAttribTerm
973    :                               {$$ = NULL;}
974    | ','                           {$$ = NULL;}
975    | ',' ByteConstExpr             {$$ = $2;}
976    | ',' AccessAttribKeyword       {$$ = $2;}
977    ;
978
979OptionalAccessSize
980    :                               {$$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);}
981    | ','                           {$$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);}
982    | ',' ByteConstExpr             {$$ = $2;}
983    ;
984
985OptionalAddressingMode
986    : ','                           {$$ = NULL;}
987    | ',' AddressingModeKeyword     {$$ = $2;}
988    ;
989
990OptionalAddressRange
991    :                               {$$ = NULL;}
992    | ','                           {$$ = NULL;}
993    | ',' AddressKeyword            {$$ = $2;}
994    ;
995
996OptionalBitsPerByte
997    : ','                           {$$ = NULL;}
998    | ',' BitsPerByteKeyword        {$$ = $2;}
999    ;
1000
1001OptionalBuffer_Last
1002    :                               {$$ = NULL;}
1003    | ','                           {$$ = NULL;}
1004    | ',' RawDataBufferTerm         {$$ = $2;}
1005    ;
1006
1007OptionalByteConstExpr
1008    :                               {$$ = NULL;}
1009    | ','                           {$$ = NULL;}
1010    | ',' ByteConstExpr             {$$ = $2;}
1011    ;
1012
1013OptionalDecodeType
1014    : ','                           {$$ = NULL;}
1015    | ',' DecodeKeyword             {$$ = $2;}
1016    ;
1017
1018OptionalDevicePolarity
1019    : ','                           {$$ = NULL;}
1020    | ',' DevicePolarityKeyword     {$$ = $2;}
1021    ;
1022
1023OptionalDWordConstExpr
1024    :                               {$$ = NULL;}
1025    | ','                           {$$ = NULL;}
1026    | ',' DWordConstExpr            {$$ = $2;}
1027    ;
1028
1029OptionalEndian
1030    : ','                           {$$ = NULL;}
1031    | ',' EndianKeyword             {$$ = $2;}
1032    ;
1033
1034OptionalFlowControl
1035    : ','                           {$$ = NULL;}
1036    | ',' FlowControlKeyword        {$$ = $2;}
1037    ;
1038
1039OptionalIoRestriction
1040    : ','                           {$$ = NULL;}
1041    | ',' IoRestrictionKeyword      {$$ = $2;}
1042    ;
1043
1044OptionalListString
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
1050OptionalMaxType
1051    : ','                           {$$ = NULL;}
1052    | ',' MaxKeyword                {$$ = $2;}
1053    ;
1054
1055OptionalMemType
1056    : ','                           {$$ = NULL;}
1057    | ',' MemTypeKeyword            {$$ = $2;}
1058    ;
1059
1060OptionalMinType
1061    : ','                           {$$ = NULL;}
1062    | ',' MinKeyword                {$$ = $2;}
1063    ;
1064
1065OptionalNameString
1066    :                               {$$ = NULL;}
1067    | ','                           {$$ = NULL;}
1068    | ',' NameString                {$$ = $2;}
1069    ;
1070
1071OptionalNameString_Last
1072    :                               {$$ = NULL;}
1073    | ','                           {$$ = NULL;}
1074    | ',' NameString                {$$ = $2;}
1075    ;
1076
1077OptionalNameString_First
1078    :                               {$$ = TrCreateLeafNode (PARSEOP_ZERO);}
1079    | NameString                    {$$ = $1;}
1080    ;
1081
1082OptionalObjectTypeKeyword
1083    :                               {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);}
1084    | ',' ObjectTypeKeyword         {$$ = $2;}
1085    ;
1086
1087OptionalParityType
1088    : ','                           {$$ = NULL;}
1089    | ',' ParityTypeKeyword         {$$ = $2;}
1090    ;
1091
1092OptionalQWordConstExpr
1093    :                               {$$ = NULL;}
1094    | ','                           {$$ = NULL;}
1095    | ',' QWordConstExpr            {$$ = $2;}
1096    ;
1097
1098OptionalRangeType
1099    : ','                           {$$ = NULL;}
1100    | ',' RangeTypeKeyword          {$$ = $2;}
1101    ;
1102
1103OptionalReadWriteKeyword
1104    :                                   {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);}
1105    | PARSEOP_READWRITETYPE_BOTH        {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);}
1106    | PARSEOP_READWRITETYPE_READONLY    {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_READONLY);}
1107    ;
1108
1109OptionalResourceType_First
1110    :                               {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
1111    | ResourceTypeKeyword           {$$ = $1;}
1112    ;
1113
1114OptionalResourceType
1115    :                               {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
1116    | ','                           {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
1117    | ',' ResourceTypeKeyword       {$$ = $2;}
1118    ;
1119
1120OptionalSlaveMode
1121    : ','                           {$$ = NULL;}
1122    | ',' SlaveModeKeyword          {$$ = $2;}
1123    ;
1124
1125OptionalShareType
1126    :                               {$$ = NULL;}
1127    | ','                           {$$ = NULL;}
1128    | ',' ShareTypeKeyword          {$$ = $2;}
1129    ;
1130
1131OptionalShareType_First
1132    :                               {$$ = NULL;}
1133    | ShareTypeKeyword              {$$ = $1;}
1134    ;
1135
1136OptionalStopBits
1137    : ','                           {$$ = NULL;}
1138    | ',' StopBitsKeyword           {$$ = $2;}
1139    ;
1140
1141OptionalStringData
1142    :                               {$$ = NULL;}
1143    | ','                           {$$ = NULL;}
1144    | ',' StringData                {$$ = $2;}
1145    ;
1146
1147OptionalTranslationType_Last
1148    :                               {$$ = NULL;}
1149    | ','                           {$$ = NULL;}
1150    | ',' TranslationKeyword        {$$ = $2;}
1151    ;
1152
1153OptionalType
1154    :                               {$$ = NULL;}
1155    | ','                           {$$ = NULL;}
1156    | ',' TypeKeyword               {$$ = $2;}
1157    ;
1158
1159OptionalType_Last
1160    :                               {$$ = NULL;}
1161    | ','                           {$$ = NULL;}
1162    | ',' TypeKeyword               {$$ = $2;}
1163    ;
1164
1165OptionalWireMode
1166    : ','                           {$$ = NULL;}
1167    | ',' WireModeKeyword           {$$ = $2;}
1168    ;
1169
1170OptionalWordConstExpr
1171    : ','                           {$$ = NULL;}
1172    | ',' WordConstExpr             {$$ = $2;}
1173    ;
1174
1175OptionalXferSize
1176    :                               {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);}
1177    | ','                           {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);}
1178    | ',' XferSizeKeyword           {$$ = $2;}
1179    ;
1180