aslresources.y revision 1.1.1.3 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 *
50 * ASL Resource Template Terms
51 *
52 ******************************************************************************/
53
54 /*
55 * Note: Create two default nodes to allow conversion to a Buffer AML opcode
56 * Also, insert the EndTag at the end of the template.
57 */
58 ResourceTemplateTerm
59 : PARSEOP_RESOURCETEMPLATE OptionalParentheses
60 '{'
61 ResourceMacroList '}' {$$ = TrCreateNode (PARSEOP_RESOURCETEMPLATE,4,
62 TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
63 TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
64 $4,
65 TrCreateLeafNode (PARSEOP_ENDTAG));}
66 ;
67
68 OptionalParentheses
69 : {$$ = NULL;}
70 | '(' ')' {$$ = NULL;}
71 ;
72
73 ResourceMacroList
74 : {$$ = NULL;}
75 | ResourceMacroList
76 ResourceMacroTerm {$$ = TrLinkPeerNode ($1,$2);}
77 ;
78
79 ResourceMacroTerm
80 : DMATerm {}
81 | DWordIOTerm {}
82 | DWordMemoryTerm {}
83 | DWordSpaceTerm {}
84 | EndDependentFnTerm {}
85 | ExtendedIOTerm {}
86 | ExtendedMemoryTerm {}
87 | ExtendedSpaceTerm {}
88 | FixedDmaTerm {}
89 | FixedIOTerm {}
90 | GpioIntTerm {}
91 | GpioIoTerm {}
92 | I2cSerialBusTerm {}
93 | I2cSerialBusTermV2 {}
94 | InterruptTerm {}
95 | IOTerm {}
96 | IRQNoFlagsTerm {}
97 | IRQTerm {}
98 | Memory24Term {}
99 | Memory32FixedTerm {}
100 | Memory32Term {}
101 | QWordIOTerm {}
102 | QWordMemoryTerm {}
103 | QWordSpaceTerm {}
104 | RegisterTerm {}
105 | SpiSerialBusTerm {}
106 | SpiSerialBusTermV2 {}
107 | StartDependentFnNoPriTerm {}
108 | StartDependentFnTerm {}
109 | UartSerialBusTerm {}
110 | UartSerialBusTermV2 {}
111 | VendorLongTerm {}
112 | VendorShortTerm {}
113 | WordBusNumberTerm {}
114 | WordIOTerm {}
115 | WordSpaceTerm {}
116 ;
117
118 DMATerm
119 : PARSEOP_DMA '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DMA);}
120 DMATypeKeyword
121 OptionalBusMasterKeyword
122 ',' XferTypeKeyword
123 OptionalNameString_Last
124 ')' '{'
125 ByteList '}' {$$ = TrLinkChildren ($<n>3,5,$4,$5,$7,$8,$11);}
126 | PARSEOP_DMA '('
127 error ')' {$$ = AslDoError(); yyclearin;}
128 ;
129
130 DWordIOTerm
131 : PARSEOP_DWORDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDIO);}
132 OptionalResourceType_First
133 OptionalMinType
134 OptionalMaxType
135 OptionalDecodeType
136 OptionalRangeType
137 ',' DWordConstExpr
138 ',' DWordConstExpr
139 ',' DWordConstExpr
140 ',' DWordConstExpr
141 ',' DWordConstExpr
142 OptionalByteConstExpr
143 OptionalStringData
144 OptionalNameString
145 OptionalType
146 OptionalTranslationType_Last
147 ')' {$$ = TrLinkChildren ($<n>3,15,
148 $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
149 | PARSEOP_DWORDIO '('
150 error ')' {$$ = AslDoError(); yyclearin;}
151 ;
152
153 DWordMemoryTerm
154 : PARSEOP_DWORDMEMORY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDMEMORY);}
155 OptionalResourceType_First
156 OptionalDecodeType
157 OptionalMinType
158 OptionalMaxType
159 OptionalMemType
160 ',' OptionalReadWriteKeyword
161 ',' DWordConstExpr
162 ',' DWordConstExpr
163 ',' DWordConstExpr
164 ',' DWordConstExpr
165 ',' DWordConstExpr
166 OptionalByteConstExpr
167 OptionalStringData
168 OptionalNameString
169 OptionalAddressRange
170 OptionalType_Last
171 ')' {$$ = TrLinkChildren ($<n>3,16,
172 $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
173 | PARSEOP_DWORDMEMORY '('
174 error ')' {$$ = AslDoError(); yyclearin;}
175 ;
176
177 DWordSpaceTerm
178 : PARSEOP_DWORDSPACE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDSPACE);}
179 ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
180 OptionalResourceType
181 OptionalDecodeType
182 OptionalMinType
183 OptionalMaxType
184 ',' ByteConstExpr
185 ',' DWordConstExpr
186 ',' DWordConstExpr
187 ',' DWordConstExpr
188 ',' DWordConstExpr
189 ',' DWordConstExpr
190 OptionalByteConstExpr
191 OptionalStringData
192 OptionalNameString_Last
193 ')' {$$ = TrLinkChildren ($<n>3,14,
194 $4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
195 | PARSEOP_DWORDSPACE '('
196 error ')' {$$ = AslDoError(); yyclearin;}
197 ;
198
199 EndDependentFnTerm
200 : PARSEOP_ENDDEPENDENTFN '('
201 ')' {$$ = TrCreateLeafNode (PARSEOP_ENDDEPENDENTFN);}
202 | PARSEOP_ENDDEPENDENTFN '('
203 error ')' {$$ = AslDoError(); yyclearin;}
204 ;
205
206 ExtendedIOTerm
207 : PARSEOP_EXTENDEDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDIO);}
208 OptionalResourceType_First
209 OptionalMinType
210 OptionalMaxType
211 OptionalDecodeType
212 OptionalRangeType
213 ',' QWordConstExpr
214 ',' QWordConstExpr
215 ',' QWordConstExpr
216 ',' QWordConstExpr
217 ',' QWordConstExpr
218 OptionalQWordConstExpr
219 OptionalNameString
220 OptionalType
221 OptionalTranslationType_Last
222 ')' {$$ = TrLinkChildren ($<n>3,14,
223 $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22);}
224 | PARSEOP_EXTENDEDIO '('
225 error ')' {$$ = AslDoError(); yyclearin;}
226 ;
227
228 ExtendedMemoryTerm
229 : PARSEOP_EXTENDEDMEMORY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDMEMORY);}
230 OptionalResourceType_First
231 OptionalDecodeType
232 OptionalMinType
233 OptionalMaxType
234 OptionalMemType
235 ',' OptionalReadWriteKeyword
236 ',' QWordConstExpr
237 ',' QWordConstExpr
238 ',' QWordConstExpr
239 ',' QWordConstExpr
240 ',' QWordConstExpr
241 OptionalQWordConstExpr
242 OptionalNameString
243 OptionalAddressRange
244 OptionalType_Last
245 ')' {$$ = TrLinkChildren ($<n>3,15,
246 $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24);}
247 | PARSEOP_EXTENDEDMEMORY '('
248 error ')' {$$ = AslDoError(); yyclearin;}
249 ;
250
251 ExtendedSpaceTerm
252 : PARSEOP_EXTENDEDSPACE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDSPACE);}
253 ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
254 OptionalResourceType
255 OptionalDecodeType
256 OptionalMinType
257 OptionalMaxType
258 ',' ByteConstExpr
259 ',' QWordConstExpr
260 ',' QWordConstExpr
261 ',' QWordConstExpr
262 ',' QWordConstExpr
263 ',' QWordConstExpr
264 OptionalQWordConstExpr
265 OptionalNameString_Last
266 ')' {$$ = TrLinkChildren ($<n>3,13,
267 $4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23);}
268 | PARSEOP_EXTENDEDSPACE '('
269 error ')' {$$ = AslDoError(); yyclearin;}
270 ;
271
272 FixedDmaTerm
273 : PARSEOP_FIXEDDMA '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FIXEDDMA);}
274 WordConstExpr /* 04: DMA RequestLines */
275 ',' WordConstExpr /* 06: DMA Channels */
276 OptionalXferSize /* 07: DMA TransferSize */
277 OptionalNameString /* 08: DescriptorName */
278 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$6,$7,$8);}
279 | PARSEOP_FIXEDDMA '('
280 error ')' {$$ = AslDoError(); yyclearin;}
281 ;
282
283 FixedIOTerm
284 : PARSEOP_FIXEDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FIXEDIO);}
285 WordConstExpr
286 ',' ByteConstExpr
287 OptionalNameString_Last
288 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
289 | PARSEOP_FIXEDIO '('
290 error ')' {$$ = AslDoError(); yyclearin;}
291 ;
292
293 GpioIntTerm
294 : PARSEOP_GPIO_INT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_GPIO_INT);}
295 InterruptTypeKeyword /* 04: InterruptType */
296 ',' InterruptLevel /* 06: InterruptLevel */
297 OptionalShareType /* 07: SharedType */
298 ',' PinConfigByte /* 09: PinConfig */
299 OptionalWordConstExpr /* 10: DebounceTimeout */
300 ',' StringData /* 12: ResourceSource */
301 OptionalByteConstExpr /* 13: ResourceSourceIndex */
302 OptionalResourceType /* 14: ResourceType */
303 OptionalNameString /* 15: DescriptorName */
304 OptionalBuffer_Last /* 16: VendorData */
305 ')' '{'
306 DWordConstExpr '}' {$$ = TrLinkChildren ($<n>3,11,
307 $4,$6,$7,$9,$10,$12,$13,$14,$15,$16,$19);}
308 | PARSEOP_GPIO_INT '('
309 error ')' {$$ = AslDoError(); yyclearin;}
310 ;
311
312 GpioIoTerm
313 : PARSEOP_GPIO_IO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_GPIO_IO);}
314 OptionalShareType_First /* 04: SharedType */
315 ',' PinConfigByte /* 06: PinConfig */
316 OptionalWordConstExpr /* 07: DebounceTimeout */
317 OptionalWordConstExpr /* 08: DriveStrength */
318 OptionalIoRestriction /* 09: IoRestriction */
319 ',' StringData /* 11: ResourceSource */
320 OptionalByteConstExpr /* 12: ResourceSourceIndex */
321 OptionalResourceType /* 13: ResourceType */
322 OptionalNameString /* 14: DescriptorName */
323 OptionalBuffer_Last /* 15: VendorData */
324 ')' '{'
325 DWordList '}' {$$ = TrLinkChildren ($<n>3,11,
326 $4,$6,$7,$8,$9,$11,$12,$13,$14,$15,$18);}
327 | PARSEOP_GPIO_IO '('
328 error ')' {$$ = AslDoError(); yyclearin;}
329 ;
330
331 I2cSerialBusTerm
332 : PARSEOP_I2C_SERIALBUS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_I2C_SERIALBUS);}
333 WordConstExpr /* 04: SlaveAddress */
334 OptionalSlaveMode /* 05: SlaveMode */
335 ',' DWordConstExpr /* 07: ConnectionSpeed */
336 OptionalAddressingMode /* 08: AddressingMode */
337 ',' StringData /* 10: ResourceSource */
338 OptionalByteConstExpr /* 11: ResourceSourceIndex */
339 OptionalResourceType /* 12: ResourceType */
340 OptionalNameString /* 13: DescriptorName */
341 OptionalBuffer_Last /* 14: VendorData */
342 ')' {$$ = TrLinkChildren ($<n>3,10,
343 $4,$5,$7,$8,$10,$11,$12,$13,
344 TrCreateLeafNode (PARSEOP_DEFAULT_ARG),$14);}
345 | PARSEOP_I2C_SERIALBUS '('
346 error ')' {$$ = AslDoError(); yyclearin;}
347 ;
348
349 I2cSerialBusTermV2
350 : PARSEOP_I2C_SERIALBUS_V2 '(' {$<n>$ = TrCreateLeafNode (PARSEOP_I2C_SERIALBUS_V2);}
351 WordConstExpr /* 04: SlaveAddress */
352 OptionalSlaveMode /* 05: SlaveMode */
353 ',' DWordConstExpr /* 07: ConnectionSpeed */
354 OptionalAddressingMode /* 08: AddressingMode */
355 ',' StringData /* 10: ResourceSource */
356 OptionalByteConstExpr /* 11: ResourceSourceIndex */
357 OptionalResourceType /* 12: ResourceType */
358 OptionalNameString /* 13: DescriptorName */
359 OptionalShareType /* 14: Share */
360 OptionalBuffer_Last /* 15: VendorData */
361 ')' {$$ = TrLinkChildren ($<n>3,10,
362 $4,$5,$7,$8,$10,$11,$12,$13,$14,$15);}
363 | PARSEOP_I2C_SERIALBUS_V2 '('
364 error ')' {$$ = AslDoError(); yyclearin;}
365 ;
366
367 InterruptTerm
368 : PARSEOP_INTERRUPT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INTERRUPT);}
369 OptionalResourceType_First
370 ',' InterruptTypeKeyword
371 ',' InterruptLevel
372 OptionalShareType
373 OptionalByteConstExpr
374 OptionalStringData
375 OptionalNameString_Last
376 ')' '{'
377 DWordList '}' {$$ = TrLinkChildren ($<n>3,8,
378 $4,$6,$8,$9,$10,$11,$12,$15);}
379 | PARSEOP_INTERRUPT '('
380 error ')' {$$ = AslDoError(); yyclearin;}
381 ;
382
383 IOTerm
384 : PARSEOP_IO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IO);}
385 IODecodeKeyword
386 ',' WordConstExpr
387 ',' WordConstExpr
388 ',' ByteConstExpr
389 ',' ByteConstExpr
390 OptionalNameString_Last
391 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
392 | PARSEOP_IO '('
393 error ')' {$$ = AslDoError(); yyclearin;}
394 ;
395
396 IRQNoFlagsTerm
397 : PARSEOP_IRQNOFLAGS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IRQNOFLAGS);}
398 OptionalNameString_First
399 ')' '{'
400 ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
401 | PARSEOP_IRQNOFLAGS '('
402 error ')' {$$ = AslDoError(); yyclearin;}
403 ;
404
405 IRQTerm
406 : PARSEOP_IRQ '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IRQ);}
407 InterruptTypeKeyword
408 ',' InterruptLevel
409 OptionalShareType
410 OptionalNameString_Last
411 ')' '{'
412 ByteList '}' {$$ = TrLinkChildren ($<n>3,5,$4,$6,$7,$8,$11);}
413 | PARSEOP_IRQ '('
414 error ')' {$$ = AslDoError(); yyclearin;}
415 ;
416
417 Memory24Term
418 : PARSEOP_MEMORY24 '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY24);}
419 OptionalReadWriteKeyword
420 ',' WordConstExpr
421 ',' WordConstExpr
422 ',' WordConstExpr
423 ',' WordConstExpr
424 OptionalNameString_Last
425 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
426 | PARSEOP_MEMORY24 '('
427 error ')' {$$ = AslDoError(); yyclearin;}
428 ;
429
430 Memory32FixedTerm
431 : PARSEOP_MEMORY32FIXED '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY32FIXED);}
432 OptionalReadWriteKeyword
433 ',' DWordConstExpr
434 ',' DWordConstExpr
435 OptionalNameString_Last
436 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$6,$8,$9);}
437 | PARSEOP_MEMORY32FIXED '('
438 error ')' {$$ = AslDoError(); yyclearin;}
439 ;
440
441 Memory32Term
442 : PARSEOP_MEMORY32 '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY32);}
443 OptionalReadWriteKeyword
444 ',' DWordConstExpr
445 ',' DWordConstExpr
446 ',' DWordConstExpr
447 ',' DWordConstExpr
448 OptionalNameString_Last
449 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
450 | PARSEOP_MEMORY32 '('
451 error ')' {$$ = AslDoError(); yyclearin;}
452 ;
453
454 QWordIOTerm
455 : PARSEOP_QWORDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDIO);}
456 OptionalResourceType_First
457 OptionalMinType
458 OptionalMaxType
459 OptionalDecodeType
460 OptionalRangeType
461 ',' QWordConstExpr
462 ',' QWordConstExpr
463 ',' QWordConstExpr
464 ',' QWordConstExpr
465 ',' QWordConstExpr
466 OptionalByteConstExpr
467 OptionalStringData
468 OptionalNameString
469 OptionalType
470 OptionalTranslationType_Last
471 ')' {$$ = TrLinkChildren ($<n>3,15,
472 $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
473 | PARSEOP_QWORDIO '('
474 error ')' {$$ = AslDoError(); yyclearin;}
475 ;
476
477 QWordMemoryTerm
478 : PARSEOP_QWORDMEMORY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDMEMORY);}
479 OptionalResourceType_First
480 OptionalDecodeType
481 OptionalMinType
482 OptionalMaxType
483 OptionalMemType
484 ',' OptionalReadWriteKeyword
485 ',' QWordConstExpr
486 ',' QWordConstExpr
487 ',' QWordConstExpr
488 ',' QWordConstExpr
489 ',' QWordConstExpr
490 OptionalByteConstExpr
491 OptionalStringData
492 OptionalNameString
493 OptionalAddressRange
494 OptionalType_Last
495 ')' {$$ = TrLinkChildren ($<n>3,16,
496 $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
497 | PARSEOP_QWORDMEMORY '('
498 error ')' {$$ = AslDoError(); yyclearin;}
499 ;
500
501 QWordSpaceTerm
502 : PARSEOP_QWORDSPACE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDSPACE);}
503 ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
504 OptionalResourceType
505 OptionalDecodeType
506 OptionalMinType
507 OptionalMaxType
508 ',' ByteConstExpr
509 ',' QWordConstExpr
510 ',' QWordConstExpr
511 ',' QWordConstExpr
512 ',' QWordConstExpr
513 ',' QWordConstExpr
514 OptionalByteConstExpr
515 OptionalStringData
516 OptionalNameString_Last
517 ')' {$$ = TrLinkChildren ($<n>3,14,
518 $4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
519 | PARSEOP_QWORDSPACE '('
520 error ')' {$$ = AslDoError(); yyclearin;}
521 ;
522
523 RegisterTerm
524 : PARSEOP_REGISTER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_REGISTER);}
525 AddressSpaceKeyword
526 ',' ByteConstExpr
527 ',' ByteConstExpr
528 ',' QWordConstExpr
529 OptionalAccessSize
530 OptionalNameString_Last
531 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$11,$12);}
532 | PARSEOP_REGISTER '('
533 error ')' {$$ = AslDoError(); yyclearin;}
534 ;
535
536 SpiSerialBusTerm
537 : PARSEOP_SPI_SERIALBUS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SPI_SERIALBUS);}
538 WordConstExpr /* 04: DeviceSelection */
539 OptionalDevicePolarity /* 05: DevicePolarity */
540 OptionalWireMode /* 06: WireMode */
541 ',' ByteConstExpr /* 08: DataBitLength */
542 OptionalSlaveMode /* 09: SlaveMode */
543 ',' DWordConstExpr /* 11: ConnectionSpeed */
544 ',' ClockPolarityKeyword /* 13: ClockPolarity */
545 ',' ClockPhaseKeyword /* 15: ClockPhase */
546 ',' StringData /* 17: ResourceSource */
547 OptionalByteConstExpr /* 18: ResourceSourceIndex */
548 OptionalResourceType /* 19: ResourceType */
549 OptionalNameString /* 20: DescriptorName */
550 OptionalBuffer_Last /* 21: VendorData */
551 ')' {$$ = TrLinkChildren ($<n>3,14,
552 $4,$5,$6,$8,$9,$11,$13,$15,$17,$18,$19,$20,
553 TrCreateLeafNode (PARSEOP_DEFAULT_ARG),$21);}
554 | PARSEOP_SPI_SERIALBUS '('
555 error ')' {$$ = AslDoError(); yyclearin;}
556 ;
557
558 SpiSerialBusTermV2
559 : PARSEOP_SPI_SERIALBUS_V2 '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SPI_SERIALBUS_V2);}
560 WordConstExpr /* 04: DeviceSelection */
561 OptionalDevicePolarity /* 05: DevicePolarity */
562 OptionalWireMode /* 06: WireMode */
563 ',' ByteConstExpr /* 08: DataBitLength */
564 OptionalSlaveMode /* 09: SlaveMode */
565 ',' DWordConstExpr /* 11: ConnectionSpeed */
566 ',' ClockPolarityKeyword /* 13: ClockPolarity */
567 ',' ClockPhaseKeyword /* 15: ClockPhase */
568 ',' StringData /* 17: ResourceSource */
569 OptionalByteConstExpr /* 18: ResourceSourceIndex */
570 OptionalResourceType /* 19: ResourceType */
571 OptionalNameString /* 20: DescriptorName */
572 OptionalShareType /* 21: Share */
573 OptionalBuffer_Last /* 22: VendorData */
574 ')' {$$ = TrLinkChildren ($<n>3,14,
575 $4,$5,$6,$8,$9,$11,$13,$15,$17,$18,$19,$20,$21,$22);}
576 | PARSEOP_SPI_SERIALBUS_V2 '('
577 error ')' {$$ = AslDoError(); yyclearin;}
578 ;
579
580 StartDependentFnNoPriTerm
581 : PARSEOP_STARTDEPENDENTFN_NOPRI '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN_NOPRI);}
582 ')' '{'
583 ResourceMacroList '}' {$$ = TrLinkChildren ($<n>3,1,$6);}
584 | PARSEOP_STARTDEPENDENTFN_NOPRI '('
585 error ')' {$$ = AslDoError(); yyclearin;}
586 ;
587
588 StartDependentFnTerm
589 : PARSEOP_STARTDEPENDENTFN '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN);}
590 ByteConstExpr
591 ',' ByteConstExpr
592 ')' '{'
593 ResourceMacroList '}' {$$ = TrLinkChildren ($<n>3,3,$4,$6,$9);}
594 | PARSEOP_STARTDEPENDENTFN '('
595 error ')' {$$ = AslDoError(); yyclearin;}
596 ;
597
598 UartSerialBusTerm
599 : PARSEOP_UART_SERIALBUS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_UART_SERIALBUS);}
600 DWordConstExpr /* 04: ConnectionSpeed */
601 OptionalBitsPerByte /* 05: BitsPerByte */
602 OptionalStopBits /* 06: StopBits */
603 ',' ByteConstExpr /* 08: LinesInUse */
604 OptionalEndian /* 09: Endianess */
605 OptionalParityType /* 10: Parity */
606 OptionalFlowControl /* 11: FlowControl */
607 ',' WordConstExpr /* 13: Rx BufferSize */
608 ',' WordConstExpr /* 15: Tx BufferSize */
609 ',' StringData /* 17: ResourceSource */
610 OptionalByteConstExpr /* 18: ResourceSourceIndex */
611 OptionalResourceType /* 19: ResourceType */
612 OptionalNameString /* 20: DescriptorName */
613 OptionalBuffer_Last /* 21: VendorData */
614 ')' {$$ = TrLinkChildren ($<n>3,15,
615 $4,$5,$6,$8,$9,$10,$11,$13,$15,$17,$18,$19,$20,
616 TrCreateLeafNode (PARSEOP_DEFAULT_ARG),$21);}
617 | PARSEOP_UART_SERIALBUS '('
618 error ')' {$$ = AslDoError(); yyclearin;}
619 ;
620
621 UartSerialBusTermV2
622 : PARSEOP_UART_SERIALBUS_V2 '(' {$<n>$ = TrCreateLeafNode (PARSEOP_UART_SERIALBUS_V2);}
623 DWordConstExpr /* 04: ConnectionSpeed */
624 OptionalBitsPerByte /* 05: BitsPerByte */
625 OptionalStopBits /* 06: StopBits */
626 ',' ByteConstExpr /* 08: LinesInUse */
627 OptionalEndian /* 09: Endianess */
628 OptionalParityType /* 10: Parity */
629 OptionalFlowControl /* 11: FlowControl */
630 ',' WordConstExpr /* 13: Rx BufferSize */
631 ',' WordConstExpr /* 15: Tx BufferSize */
632 ',' StringData /* 17: ResourceSource */
633 OptionalByteConstExpr /* 18: ResourceSourceIndex */
634 OptionalResourceType /* 19: ResourceType */
635 OptionalNameString /* 20: DescriptorName */
636 OptionalShareType /* 21: Share */
637 OptionalBuffer_Last /* 22: VendorData */
638 ')' {$$ = TrLinkChildren ($<n>3,15,
639 $4,$5,$6,$8,$9,$10,$11,$13,$15,$17,$18,$19,$20,$21,$22);}
640 | PARSEOP_UART_SERIALBUS_V2 '('
641 error ')' {$$ = AslDoError(); yyclearin;}
642 ;
643
644 VendorLongTerm
645 : PARSEOP_VENDORLONG '(' {$<n>$ = TrCreateLeafNode (PARSEOP_VENDORLONG);}
646 OptionalNameString_First
647 ')' '{'
648 ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
649 | PARSEOP_VENDORLONG '('
650 error ')' {$$ = AslDoError(); yyclearin;}
651 ;
652
653 VendorShortTerm
654 : PARSEOP_VENDORSHORT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_VENDORSHORT);}
655 OptionalNameString_First
656 ')' '{'
657 ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
658 | PARSEOP_VENDORSHORT '('
659 error ')' {$$ = AslDoError(); yyclearin;}
660 ;
661
662 WordBusNumberTerm
663 : PARSEOP_WORDBUSNUMBER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WORDBUSNUMBER);}
664 OptionalResourceType_First
665 OptionalMinType
666 OptionalMaxType
667 OptionalDecodeType
668 ',' WordConstExpr
669 ',' WordConstExpr
670 ',' WordConstExpr
671 ',' WordConstExpr
672 ',' WordConstExpr
673 OptionalByteConstExpr
674 OptionalStringData
675 OptionalNameString_Last
676 ')' {$$ = TrLinkChildren ($<n>3,12,
677 $4,$5,$6,$7,$9,$11,$13,$15,$17,$18,$19,$20);}
678 | PARSEOP_WORDBUSNUMBER '('
679 error ')' {$$ = AslDoError(); yyclearin;}
680 ;
681
682 WordIOTerm
683 : PARSEOP_WORDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WORDIO);}
684 OptionalResourceType_First
685 OptionalMinType
686 OptionalMaxType
687 OptionalDecodeType
688 OptionalRangeType
689 ',' WordConstExpr
690 ',' WordConstExpr
691 ',' WordConstExpr
692 ',' WordConstExpr
693 ',' WordConstExpr
694 OptionalByteConstExpr
695 OptionalStringData
696 OptionalNameString
697 OptionalType
698 OptionalTranslationType_Last
699 ')' {$$ = TrLinkChildren ($<n>3,15,
700 $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
701 | PARSEOP_WORDIO '('
702 error ')' {$$ = AslDoError(); yyclearin;}
703 ;
704
705 WordSpaceTerm
706 : PARSEOP_WORDSPACE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WORDSPACE);}
707 ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);}
708 OptionalResourceType
709 OptionalDecodeType
710 OptionalMinType
711 OptionalMaxType
712 ',' ByteConstExpr
713 ',' WordConstExpr
714 ',' WordConstExpr
715 ',' WordConstExpr
716 ',' WordConstExpr
717 ',' WordConstExpr
718 OptionalByteConstExpr
719 OptionalStringData
720 OptionalNameString_Last
721 ')' {$$ = TrLinkChildren ($<n>3,14,
722 $4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
723 | PARSEOP_WORDSPACE '('
724 error ')' {$$ = AslDoError(); yyclearin;}
725 ;
726