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