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