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