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