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