aslresources.y revision 288425
1NoEcho(' 2/****************************************************************************** 3 * 4 * Module Name: aslresources.y - Bison/Yacc production rules for resources 5 * 6 *****************************************************************************/ 7 8/* 9 * Copyright (C) 2000 - 2015, 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 * ASL Parameter Keyword Terms 50 * 51 ******************************************************************************/ 52 53AccessAttribKeyword 54 : PARSEOP_ACCESSATTRIB_BLOCK {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK);} 55 | PARSEOP_ACCESSATTRIB_BLOCK_CALL {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK_CALL);} 56 | PARSEOP_ACCESSATTRIB_BYTE {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BYTE);} 57 | PARSEOP_ACCESSATTRIB_QUICK {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_QUICK );} 58 | PARSEOP_ACCESSATTRIB_SND_RCV {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_SND_RCV);} 59 | PARSEOP_ACCESSATTRIB_WORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD);} 60 | PARSEOP_ACCESSATTRIB_WORD_CALL {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD_CALL);} 61 | PARSEOP_ACCESSATTRIB_MULTIBYTE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_MULTIBYTE);} 62 ByteConst 63 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 64 | PARSEOP_ACCESSATTRIB_RAW_BYTES '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_RAW_BYTES);} 65 ByteConst 66 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 67 | PARSEOP_ACCESSATTRIB_RAW_PROCESS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_RAW_PROCESS);} 68 ByteConst 69 ')' {$$ = TrLinkChildren ($<n>3,1,$4);} 70 ; 71 72AccessTypeKeyword 73 : PARSEOP_ACCESSTYPE_ANY {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_ANY);} 74 | PARSEOP_ACCESSTYPE_BYTE {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_BYTE);} 75 | PARSEOP_ACCESSTYPE_WORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_WORD);} 76 | PARSEOP_ACCESSTYPE_DWORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_DWORD);} 77 | PARSEOP_ACCESSTYPE_QWORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_QWORD);} 78 | PARSEOP_ACCESSTYPE_BUF {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_BUF);} 79 ; 80 81AddressingModeKeyword 82 : PARSEOP_ADDRESSINGMODE_7BIT {$$ = TrCreateLeafNode (PARSEOP_ADDRESSINGMODE_7BIT);} 83 | PARSEOP_ADDRESSINGMODE_10BIT {$$ = TrCreateLeafNode (PARSEOP_ADDRESSINGMODE_10BIT);} 84 ; 85 86AddressKeyword 87 : PARSEOP_ADDRESSTYPE_MEMORY {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_MEMORY);} 88 | PARSEOP_ADDRESSTYPE_RESERVED {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_RESERVED);} 89 | PARSEOP_ADDRESSTYPE_NVS {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_NVS);} 90 | PARSEOP_ADDRESSTYPE_ACPI {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_ACPI);} 91 ; 92 93AddressSpaceKeyword 94 : ByteConst {$$ = UtCheckIntegerRange ($1, 0x0A, 0xFF);} 95 | RegionSpaceKeyword {} 96 ; 97 98BitsPerByteKeyword 99 : PARSEOP_BITSPERBYTE_FIVE {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_FIVE);} 100 | PARSEOP_BITSPERBYTE_SIX {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_SIX);} 101 | PARSEOP_BITSPERBYTE_SEVEN {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_SEVEN);} 102 | PARSEOP_BITSPERBYTE_EIGHT {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_EIGHT);} 103 | PARSEOP_BITSPERBYTE_NINE {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_NINE);} 104 ; 105 106ClockPhaseKeyword 107 : PARSEOP_CLOCKPHASE_FIRST {$$ = TrCreateLeafNode (PARSEOP_CLOCKPHASE_FIRST);} 108 | PARSEOP_CLOCKPHASE_SECOND {$$ = TrCreateLeafNode (PARSEOP_CLOCKPHASE_SECOND);} 109 ; 110 111ClockPolarityKeyword 112 : PARSEOP_CLOCKPOLARITY_LOW {$$ = TrCreateLeafNode (PARSEOP_CLOCKPOLARITY_LOW);} 113 | PARSEOP_CLOCKPOLARITY_HIGH {$$ = TrCreateLeafNode (PARSEOP_CLOCKPOLARITY_HIGH);} 114 ; 115 116DecodeKeyword 117 : PARSEOP_DECODETYPE_POS {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_POS);} 118 | PARSEOP_DECODETYPE_SUB {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_SUB);} 119 ; 120 121DevicePolarityKeyword 122 : PARSEOP_DEVICEPOLARITY_LOW {$$ = TrCreateLeafNode (PARSEOP_DEVICEPOLARITY_LOW);} 123 | PARSEOP_DEVICEPOLARITY_HIGH {$$ = TrCreateLeafNode (PARSEOP_DEVICEPOLARITY_HIGH);} 124 ; 125 126DMATypeKeyword 127 : PARSEOP_DMATYPE_A {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_A);} 128 | PARSEOP_DMATYPE_COMPATIBILITY {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_COMPATIBILITY);} 129 | PARSEOP_DMATYPE_B {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_B);} 130 | PARSEOP_DMATYPE_F {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_F);} 131 ; 132 133EndianKeyword 134 : PARSEOP_ENDIAN_LITTLE {$$ = TrCreateLeafNode (PARSEOP_ENDIAN_LITTLE);} 135 | PARSEOP_ENDIAN_BIG {$$ = TrCreateLeafNode (PARSEOP_ENDIAN_BIG);} 136 ; 137 138FlowControlKeyword 139 : PARSEOP_FLOWCONTROL_HW {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_HW);} 140 | PARSEOP_FLOWCONTROL_NONE {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_NONE);} 141 | PARSEOP_FLOWCONTROL_SW {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_SW);} 142 ; 143 144InterruptLevel 145 : PARSEOP_INTLEVEL_ACTIVEBOTH {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVEBOTH);} 146 | PARSEOP_INTLEVEL_ACTIVEHIGH {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVEHIGH);} 147 | PARSEOP_INTLEVEL_ACTIVELOW {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVELOW);} 148 ; 149 150InterruptTypeKeyword 151 : PARSEOP_INTTYPE_EDGE {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_EDGE);} 152 | PARSEOP_INTTYPE_LEVEL {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_LEVEL);} 153 ; 154 155IODecodeKeyword 156 : PARSEOP_IODECODETYPE_16 {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_16);} 157 | PARSEOP_IODECODETYPE_10 {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_10);} 158 ; 159 160IoRestrictionKeyword 161 : PARSEOP_IORESTRICT_IN {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_IN);} 162 | PARSEOP_IORESTRICT_OUT {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_OUT);} 163 | PARSEOP_IORESTRICT_NONE {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_NONE);} 164 | PARSEOP_IORESTRICT_PRESERVE {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_PRESERVE);} 165 ; 166 167LockRuleKeyword 168 : PARSEOP_LOCKRULE_LOCK {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_LOCK);} 169 | PARSEOP_LOCKRULE_NOLOCK {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_NOLOCK);} 170 ; 171 172MatchOpKeyword 173 : PARSEOP_MATCHTYPE_MTR {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MTR);} 174 | PARSEOP_MATCHTYPE_MEQ {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MEQ);} 175 | PARSEOP_MATCHTYPE_MLE {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MLE);} 176 | PARSEOP_MATCHTYPE_MLT {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MLT);} 177 | PARSEOP_MATCHTYPE_MGE {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MGE);} 178 | PARSEOP_MATCHTYPE_MGT {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MGT);} 179 ; 180 181MaxKeyword 182 : PARSEOP_MAXTYPE_FIXED {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_FIXED);} 183 | PARSEOP_MAXTYPE_NOTFIXED {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_NOTFIXED);} 184 ; 185 186MemTypeKeyword 187 : PARSEOP_MEMTYPE_CACHEABLE {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_CACHEABLE);} 188 | PARSEOP_MEMTYPE_WRITECOMBINING {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_WRITECOMBINING);} 189 | PARSEOP_MEMTYPE_PREFETCHABLE {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_PREFETCHABLE);} 190 | PARSEOP_MEMTYPE_NONCACHEABLE {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_NONCACHEABLE);} 191 ; 192 193MinKeyword 194 : PARSEOP_MINTYPE_FIXED {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_FIXED);} 195 | PARSEOP_MINTYPE_NOTFIXED {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_NOTFIXED);} 196 ; 197 198ObjectTypeKeyword 199 : PARSEOP_OBJECTTYPE_UNK {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);} 200 | PARSEOP_OBJECTTYPE_INT {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_INT);} 201 | PARSEOP_OBJECTTYPE_STR {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_STR);} 202 | PARSEOP_OBJECTTYPE_BUF {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BUF);} 203 | PARSEOP_OBJECTTYPE_PKG {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PKG);} 204 | PARSEOP_OBJECTTYPE_FLD {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_FLD);} 205 | PARSEOP_OBJECTTYPE_DEV {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DEV);} 206 | PARSEOP_OBJECTTYPE_EVT {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_EVT);} 207 | PARSEOP_OBJECTTYPE_MTH {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTH);} 208 | PARSEOP_OBJECTTYPE_MTX {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTX);} 209 | PARSEOP_OBJECTTYPE_OPR {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_OPR);} 210 | PARSEOP_OBJECTTYPE_POW {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_POW);} 211 | PARSEOP_OBJECTTYPE_PRO {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PRO);} 212 | PARSEOP_OBJECTTYPE_THZ {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_THZ);} 213 | PARSEOP_OBJECTTYPE_BFF {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BFF);} 214 | PARSEOP_OBJECTTYPE_DDB {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DDB);} 215 ; 216 217ParityTypeKeyword 218 : PARSEOP_PARITYTYPE_SPACE {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_SPACE);} 219 | PARSEOP_PARITYTYPE_MARK {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_MARK);} 220 | PARSEOP_PARITYTYPE_ODD {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_ODD);} 221 | PARSEOP_PARITYTYPE_EVEN {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_EVEN);} 222 | PARSEOP_PARITYTYPE_NONE {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_NONE);} 223 ; 224 225PinConfigByte 226 : PinConfigKeyword {$$ = $1;} 227 | ByteConstExpr {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);} 228 ; 229 230PinConfigKeyword 231 : PARSEOP_PIN_NOPULL {$$ = TrCreateLeafNode (PARSEOP_PIN_NOPULL);} 232 | PARSEOP_PIN_PULLDOWN {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLDOWN);} 233 | PARSEOP_PIN_PULLUP {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLUP);} 234 | PARSEOP_PIN_PULLDEFAULT {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLDEFAULT);} 235 ; 236 237PldKeyword 238 : PARSEOP_PLD_REVISION {$$ = TrCreateLeafNode (PARSEOP_PLD_REVISION);} 239 | PARSEOP_PLD_IGNORECOLOR {$$ = TrCreateLeafNode (PARSEOP_PLD_IGNORECOLOR);} 240 | PARSEOP_PLD_RED {$$ = TrCreateLeafNode (PARSEOP_PLD_RED);} 241 | PARSEOP_PLD_GREEN {$$ = TrCreateLeafNode (PARSEOP_PLD_GREEN);} 242 | PARSEOP_PLD_BLUE {$$ = TrCreateLeafNode (PARSEOP_PLD_BLUE);} 243 | PARSEOP_PLD_WIDTH {$$ = TrCreateLeafNode (PARSEOP_PLD_WIDTH);} 244 | PARSEOP_PLD_HEIGHT {$$ = TrCreateLeafNode (PARSEOP_PLD_HEIGHT);} 245 | PARSEOP_PLD_USERVISIBLE {$$ = TrCreateLeafNode (PARSEOP_PLD_USERVISIBLE);} 246 | PARSEOP_PLD_DOCK {$$ = TrCreateLeafNode (PARSEOP_PLD_DOCK);} 247 | PARSEOP_PLD_LID {$$ = TrCreateLeafNode (PARSEOP_PLD_LID);} 248 | PARSEOP_PLD_PANEL {$$ = TrCreateLeafNode (PARSEOP_PLD_PANEL);} 249 | PARSEOP_PLD_VERTICALPOSITION {$$ = TrCreateLeafNode (PARSEOP_PLD_VERTICALPOSITION);} 250 | PARSEOP_PLD_HORIZONTALPOSITION {$$ = TrCreateLeafNode (PARSEOP_PLD_HORIZONTALPOSITION);} 251 | PARSEOP_PLD_SHAPE {$$ = TrCreateLeafNode (PARSEOP_PLD_SHAPE);} 252 | PARSEOP_PLD_GROUPORIENTATION {$$ = TrCreateLeafNode (PARSEOP_PLD_GROUPORIENTATION);} 253 | PARSEOP_PLD_GROUPTOKEN {$$ = TrCreateLeafNode (PARSEOP_PLD_GROUPTOKEN);} 254 | PARSEOP_PLD_GROUPPOSITION {$$ = TrCreateLeafNode (PARSEOP_PLD_GROUPPOSITION);} 255 | PARSEOP_PLD_BAY {$$ = TrCreateLeafNode (PARSEOP_PLD_BAY);} 256 | PARSEOP_PLD_EJECTABLE {$$ = TrCreateLeafNode (PARSEOP_PLD_EJECTABLE);} 257 | PARSEOP_PLD_EJECTREQUIRED {$$ = TrCreateLeafNode (PARSEOP_PLD_EJECTREQUIRED);} 258 | PARSEOP_PLD_CABINETNUMBER {$$ = TrCreateLeafNode (PARSEOP_PLD_CABINETNUMBER);} 259 | PARSEOP_PLD_CARDCAGENUMBER {$$ = TrCreateLeafNode (PARSEOP_PLD_CARDCAGENUMBER);} 260 | PARSEOP_PLD_REFERENCE {$$ = TrCreateLeafNode (PARSEOP_PLD_REFERENCE);} 261 | PARSEOP_PLD_ROTATION {$$ = TrCreateLeafNode (PARSEOP_PLD_ROTATION);} 262 | PARSEOP_PLD_ORDER {$$ = TrCreateLeafNode (PARSEOP_PLD_ORDER);} 263 | PARSEOP_PLD_RESERVED {$$ = TrCreateLeafNode (PARSEOP_PLD_RESERVED);} 264 | PARSEOP_PLD_VERTICALOFFSET {$$ = TrCreateLeafNode (PARSEOP_PLD_VERTICALOFFSET);} 265 | PARSEOP_PLD_HORIZONTALOFFSET {$$ = TrCreateLeafNode (PARSEOP_PLD_HORIZONTALOFFSET);} 266 ; 267 268RangeTypeKeyword 269 : PARSEOP_RANGETYPE_ISAONLY {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_ISAONLY);} 270 | PARSEOP_RANGETYPE_NONISAONLY {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_NONISAONLY);} 271 | PARSEOP_RANGETYPE_ENTIRE {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_ENTIRE);} 272 ; 273 274RegionSpaceKeyword 275 : PARSEOP_REGIONSPACE_IO {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IO);} 276 | PARSEOP_REGIONSPACE_MEM {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_MEM);} 277 | PARSEOP_REGIONSPACE_PCI {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCI);} 278 | PARSEOP_REGIONSPACE_EC {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_EC);} 279 | PARSEOP_REGIONSPACE_SMBUS {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_SMBUS);} 280 | PARSEOP_REGIONSPACE_CMOS {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_CMOS);} 281 | PARSEOP_REGIONSPACE_PCIBAR {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCIBAR);} 282 | PARSEOP_REGIONSPACE_IPMI {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IPMI);} 283 | PARSEOP_REGIONSPACE_GPIO {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_GPIO);} 284 | PARSEOP_REGIONSPACE_GSBUS {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_GSBUS);} 285 | PARSEOP_REGIONSPACE_PCC {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCC);} 286 | PARSEOP_REGIONSPACE_FFIXEDHW {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_FFIXEDHW);} 287 ; 288 289ResourceTypeKeyword 290 : PARSEOP_RESOURCETYPE_CONSUMER {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);} 291 | PARSEOP_RESOURCETYPE_PRODUCER {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_PRODUCER);} 292 ; 293 294SerializeRuleKeyword 295 : PARSEOP_SERIALIZERULE_SERIAL {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_SERIAL);} 296 | PARSEOP_SERIALIZERULE_NOTSERIAL {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL);} 297 ; 298 299ShareTypeKeyword 300 : PARSEOP_SHARETYPE_SHARED {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_SHARED);} 301 | PARSEOP_SHARETYPE_EXCLUSIVE {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_EXCLUSIVE);} 302 | PARSEOP_SHARETYPE_SHAREDWAKE {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_SHAREDWAKE);} 303 | PARSEOP_SHARETYPE_EXCLUSIVEWAKE {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_EXCLUSIVEWAKE);} 304 ; 305 306SlaveModeKeyword 307 : PARSEOP_SLAVEMODE_CONTROLLERINIT {$$ = TrCreateLeafNode (PARSEOP_SLAVEMODE_CONTROLLERINIT);} 308 | PARSEOP_SLAVEMODE_DEVICEINIT {$$ = TrCreateLeafNode (PARSEOP_SLAVEMODE_DEVICEINIT);} 309 ; 310 311StopBitsKeyword 312 : PARSEOP_STOPBITS_TWO {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_TWO);} 313 | PARSEOP_STOPBITS_ONEPLUSHALF {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ONEPLUSHALF);} 314 | PARSEOP_STOPBITS_ONE {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ONE);} 315 | PARSEOP_STOPBITS_ZERO {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ZERO);} 316 ; 317 318TranslationKeyword 319 : PARSEOP_TRANSLATIONTYPE_SPARSE {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_SPARSE);} 320 | PARSEOP_TRANSLATIONTYPE_DENSE {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_DENSE);} 321 ; 322 323TypeKeyword 324 : PARSEOP_TYPE_TRANSLATION {$$ = TrCreateLeafNode (PARSEOP_TYPE_TRANSLATION);} 325 | PARSEOP_TYPE_STATIC {$$ = TrCreateLeafNode (PARSEOP_TYPE_STATIC);} 326 ; 327 328UpdateRuleKeyword 329 : PARSEOP_UPDATERULE_PRESERVE {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_PRESERVE);} 330 | PARSEOP_UPDATERULE_ONES {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ONES);} 331 | PARSEOP_UPDATERULE_ZEROS {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ZEROS);} 332 ; 333 334WireModeKeyword 335 : PARSEOP_WIREMODE_FOUR {$$ = TrCreateLeafNode (PARSEOP_WIREMODE_FOUR);} 336 | PARSEOP_WIREMODE_THREE {$$ = TrCreateLeafNode (PARSEOP_WIREMODE_THREE);} 337 ; 338 339XferSizeKeyword 340 : PARSEOP_XFERSIZE_8 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_8, 0);} 341 | PARSEOP_XFERSIZE_16 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_16, 1);} 342 | PARSEOP_XFERSIZE_32 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);} 343 | PARSEOP_XFERSIZE_64 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_64, 3);} 344 | PARSEOP_XFERSIZE_128 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_128, 4);} 345 | PARSEOP_XFERSIZE_256 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_256, 5);} 346 ; 347 348XferTypeKeyword 349 : PARSEOP_XFERTYPE_8 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8);} 350 | PARSEOP_XFERTYPE_8_16 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8_16);} 351 | PARSEOP_XFERTYPE_16 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_16);} 352 ; 353 354 355/******************************************************************************* 356 * 357 * ASL Resource Template Terms 358 * 359 ******************************************************************************/ 360 361/* 362 * Note: Create two default nodes to allow conversion to a Buffer AML opcode 363 * Also, insert the EndTag at the end of the template. 364 */ 365ResourceTemplateTerm 366 : PARSEOP_RESOURCETEMPLATE '(' ')' 367 '{' 368 ResourceMacroList '}' {$$ = TrCreateNode (PARSEOP_RESOURCETEMPLATE,4, 369 TrCreateLeafNode (PARSEOP_DEFAULT_ARG), 370 TrCreateLeafNode (PARSEOP_DEFAULT_ARG), 371 $5, 372 TrCreateLeafNode (PARSEOP_ENDTAG));} 373 ; 374 375ResourceMacroList 376 : {$$ = NULL;} 377 | ResourceMacroList 378 ResourceMacroTerm {$$ = TrLinkPeerNode ($1,$2);} 379 ; 380 381ResourceMacroTerm 382 : DMATerm {} 383 | DWordIOTerm {} 384 | DWordMemoryTerm {} 385 | DWordSpaceTerm {} 386 | EndDependentFnTerm {} 387 | ExtendedIOTerm {} 388 | ExtendedMemoryTerm {} 389 | ExtendedSpaceTerm {} 390 | FixedDmaTerm {} 391 | FixedIOTerm {} 392 | GpioIntTerm {} 393 | GpioIoTerm {} 394 | I2cSerialBusTerm {} 395 | InterruptTerm {} 396 | IOTerm {} 397 | IRQNoFlagsTerm {} 398 | IRQTerm {} 399 | Memory24Term {} 400 | Memory32FixedTerm {} 401 | Memory32Term {} 402 | QWordIOTerm {} 403 | QWordMemoryTerm {} 404 | QWordSpaceTerm {} 405 | RegisterTerm {} 406 | SpiSerialBusTerm {} 407 | StartDependentFnNoPriTerm {} 408 | StartDependentFnTerm {} 409 | UartSerialBusTerm {} 410 | VendorLongTerm {} 411 | VendorShortTerm {} 412 | WordBusNumberTerm {} 413 | WordIOTerm {} 414 | WordSpaceTerm {} 415 ; 416 417DMATerm 418 : PARSEOP_DMA '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DMA);} 419 DMATypeKeyword 420 OptionalBusMasterKeyword 421 ',' XferTypeKeyword 422 OptionalNameString_Last 423 ')' '{' 424 ByteList '}' {$$ = TrLinkChildren ($<n>3,5,$4,$5,$7,$8,$11);} 425 | PARSEOP_DMA '(' 426 error ')' {$$ = AslDoError(); yyclearin;} 427 ; 428 429DWordIOTerm 430 : PARSEOP_DWORDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDIO);} 431 OptionalResourceType_First 432 OptionalMinType 433 OptionalMaxType 434 OptionalDecodeType 435 OptionalRangeType 436 ',' DWordConstExpr 437 ',' DWordConstExpr 438 ',' DWordConstExpr 439 ',' DWordConstExpr 440 ',' DWordConstExpr 441 OptionalByteConstExpr 442 OptionalStringData 443 OptionalNameString 444 OptionalType 445 OptionalTranslationType_Last 446 ')' {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);} 447 | PARSEOP_DWORDIO '(' 448 error ')' {$$ = AslDoError(); yyclearin;} 449 ; 450 451DWordMemoryTerm 452 : PARSEOP_DWORDMEMORY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDMEMORY);} 453 OptionalResourceType_First 454 OptionalDecodeType 455 OptionalMinType 456 OptionalMaxType 457 OptionalMemType 458 ',' OptionalReadWriteKeyword 459 ',' DWordConstExpr 460 ',' DWordConstExpr 461 ',' DWordConstExpr 462 ',' DWordConstExpr 463 ',' DWordConstExpr 464 OptionalByteConstExpr 465 OptionalStringData 466 OptionalNameString 467 OptionalAddressRange 468 OptionalType_Last 469 ')' {$$ = TrLinkChildren ($<n>3,16,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);} 470 | PARSEOP_DWORDMEMORY '(' 471 error ')' {$$ = AslDoError(); yyclearin;} 472 ; 473 474DWordSpaceTerm 475 : PARSEOP_DWORDSPACE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDSPACE);} 476 ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);} 477 OptionalResourceType 478 OptionalDecodeType 479 OptionalMinType 480 OptionalMaxType 481 ',' ByteConstExpr 482 ',' DWordConstExpr 483 ',' DWordConstExpr 484 ',' DWordConstExpr 485 ',' DWordConstExpr 486 ',' DWordConstExpr 487 OptionalByteConstExpr 488 OptionalStringData 489 OptionalNameString_Last 490 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);} 491 | PARSEOP_DWORDSPACE '(' 492 error ')' {$$ = AslDoError(); yyclearin;} 493 ; 494 495EndDependentFnTerm 496 : PARSEOP_ENDDEPENDENTFN '(' 497 ')' {$$ = TrCreateLeafNode (PARSEOP_ENDDEPENDENTFN);} 498 | PARSEOP_ENDDEPENDENTFN '(' 499 error ')' {$$ = AslDoError(); yyclearin;} 500 ; 501 502ExtendedIOTerm 503 : PARSEOP_EXTENDEDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDIO);} 504 OptionalResourceType_First 505 OptionalMinType 506 OptionalMaxType 507 OptionalDecodeType 508 OptionalRangeType 509 ',' QWordConstExpr 510 ',' QWordConstExpr 511 ',' QWordConstExpr 512 ',' QWordConstExpr 513 ',' QWordConstExpr 514 OptionalQWordConstExpr 515 OptionalNameString 516 OptionalType 517 OptionalTranslationType_Last 518 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22);} 519 | PARSEOP_EXTENDEDIO '(' 520 error ')' {$$ = AslDoError(); yyclearin;} 521 ; 522 523ExtendedMemoryTerm 524 : PARSEOP_EXTENDEDMEMORY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDMEMORY);} 525 OptionalResourceType_First 526 OptionalDecodeType 527 OptionalMinType 528 OptionalMaxType 529 OptionalMemType 530 ',' OptionalReadWriteKeyword 531 ',' QWordConstExpr 532 ',' QWordConstExpr 533 ',' QWordConstExpr 534 ',' QWordConstExpr 535 ',' QWordConstExpr 536 OptionalQWordConstExpr 537 OptionalNameString 538 OptionalAddressRange 539 OptionalType_Last 540 ')' {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24);} 541 | PARSEOP_EXTENDEDMEMORY '(' 542 error ')' {$$ = AslDoError(); yyclearin;} 543 ; 544 545ExtendedSpaceTerm 546 : PARSEOP_EXTENDEDSPACE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDSPACE);} 547 ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);} 548 OptionalResourceType 549 OptionalDecodeType 550 OptionalMinType 551 OptionalMaxType 552 ',' ByteConstExpr 553 ',' QWordConstExpr 554 ',' QWordConstExpr 555 ',' QWordConstExpr 556 ',' QWordConstExpr 557 ',' QWordConstExpr 558 OptionalQWordConstExpr 559 OptionalNameString_Last 560 ')' {$$ = TrLinkChildren ($<n>3,13,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23);} 561 | PARSEOP_EXTENDEDSPACE '(' 562 error ')' {$$ = AslDoError(); yyclearin;} 563 ; 564 565FixedDmaTerm 566 : PARSEOP_FIXEDDMA '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FIXEDDMA);} 567 WordConstExpr /* 04: DMA RequestLines */ 568 ',' WordConstExpr /* 06: DMA Channels */ 569 OptionalXferSize /* 07: DMA TransferSize */ 570 OptionalNameString /* 08: DescriptorName */ 571 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$6,$7,$8);} 572 | PARSEOP_FIXEDDMA '(' 573 error ')' {$$ = AslDoError(); yyclearin;} 574 ; 575 576FixedIOTerm 577 : PARSEOP_FIXEDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_FIXEDIO);} 578 WordConstExpr 579 ',' ByteConstExpr 580 OptionalNameString_Last 581 ')' {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);} 582 | PARSEOP_FIXEDIO '(' 583 error ')' {$$ = AslDoError(); yyclearin;} 584 ; 585 586GpioIntTerm 587 : PARSEOP_GPIO_INT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_GPIO_INT);} 588 InterruptTypeKeyword /* 04: InterruptType */ 589 ',' InterruptLevel /* 06: InterruptLevel */ 590 OptionalShareType /* 07: SharedType */ 591 ',' PinConfigByte /* 09: PinConfig */ 592 OptionalWordConstExpr /* 10: DebounceTimeout */ 593 ',' StringData /* 12: ResourceSource */ 594 OptionalByteConstExpr /* 13: ResourceSourceIndex */ 595 OptionalResourceType /* 14: ResourceType */ 596 OptionalNameString /* 15: DescriptorName */ 597 OptionalBuffer_Last /* 16: VendorData */ 598 ')' '{' 599 DWordConstExpr '}' {$$ = TrLinkChildren ($<n>3,11,$4,$6,$7,$9,$10,$12,$13,$14,$15,$16,$19);} 600 | PARSEOP_GPIO_INT '(' 601 error ')' {$$ = AslDoError(); yyclearin;} 602 ; 603 604GpioIoTerm 605 : PARSEOP_GPIO_IO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_GPIO_IO);} 606 OptionalShareType_First /* 04: SharedType */ 607 ',' PinConfigByte /* 06: PinConfig */ 608 OptionalWordConstExpr /* 07: DebounceTimeout */ 609 OptionalWordConstExpr /* 08: DriveStrength */ 610 OptionalIoRestriction /* 09: IoRestriction */ 611 ',' StringData /* 11: ResourceSource */ 612 OptionalByteConstExpr /* 12: ResourceSourceIndex */ 613 OptionalResourceType /* 13: ResourceType */ 614 OptionalNameString /* 14: DescriptorName */ 615 OptionalBuffer_Last /* 15: VendorData */ 616 ')' '{' 617 DWordList '}' {$$ = TrLinkChildren ($<n>3,11,$4,$6,$7,$8,$9,$11,$12,$13,$14,$15,$18);} 618 | PARSEOP_GPIO_IO '(' 619 error ')' {$$ = AslDoError(); yyclearin;} 620 ; 621 622I2cSerialBusTerm 623 : PARSEOP_I2C_SERIALBUS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_I2C_SERIALBUS);} 624 WordConstExpr /* 04: SlaveAddress */ 625 OptionalSlaveMode /* 05: SlaveMode */ 626 ',' DWordConstExpr /* 07: ConnectionSpeed */ 627 OptionalAddressingMode /* 08: AddressingMode */ 628 ',' StringData /* 10: ResourceSource */ 629 OptionalByteConstExpr /* 11: ResourceSourceIndex */ 630 OptionalResourceType /* 12: ResourceType */ 631 OptionalNameString /* 13: DescriptorName */ 632 OptionalBuffer_Last /* 14: VendorData */ 633 ')' {$$ = TrLinkChildren ($<n>3,9,$4,$5,$7,$8,$10,$11,$12,$13,$14);} 634 | PARSEOP_I2C_SERIALBUS '(' 635 error ')' {$$ = AslDoError(); yyclearin;} 636 ; 637 638InterruptTerm 639 : PARSEOP_INTERRUPT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_INTERRUPT);} 640 OptionalResourceType_First 641 ',' InterruptTypeKeyword 642 ',' InterruptLevel 643 OptionalShareType 644 OptionalByteConstExpr 645 OptionalStringData 646 OptionalNameString_Last 647 ')' '{' 648 DWordList '}' {$$ = TrLinkChildren ($<n>3,8,$4,$6,$8,$9,$10,$11,$12,$15);} 649 | PARSEOP_INTERRUPT '(' 650 error ')' {$$ = AslDoError(); yyclearin;} 651 ; 652 653IOTerm 654 : PARSEOP_IO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IO);} 655 IODecodeKeyword 656 ',' WordConstExpr 657 ',' WordConstExpr 658 ',' ByteConstExpr 659 ',' ByteConstExpr 660 OptionalNameString_Last 661 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);} 662 | PARSEOP_IO '(' 663 error ')' {$$ = AslDoError(); yyclearin;} 664 ; 665 666IRQNoFlagsTerm 667 : PARSEOP_IRQNOFLAGS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IRQNOFLAGS);} 668 OptionalNameString_First 669 ')' '{' 670 ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);} 671 | PARSEOP_IRQNOFLAGS '(' 672 error ')' {$$ = AslDoError(); yyclearin;} 673 ; 674 675IRQTerm 676 : PARSEOP_IRQ '(' {$<n>$ = TrCreateLeafNode (PARSEOP_IRQ);} 677 InterruptTypeKeyword 678 ',' InterruptLevel 679 OptionalShareType 680 OptionalNameString_Last 681 ')' '{' 682 ByteList '}' {$$ = TrLinkChildren ($<n>3,5,$4,$6,$7,$8,$11);} 683 | PARSEOP_IRQ '(' 684 error ')' {$$ = AslDoError(); yyclearin;} 685 ; 686 687Memory24Term 688 : PARSEOP_MEMORY24 '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY24);} 689 OptionalReadWriteKeyword 690 ',' WordConstExpr 691 ',' WordConstExpr 692 ',' WordConstExpr 693 ',' WordConstExpr 694 OptionalNameString_Last 695 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);} 696 | PARSEOP_MEMORY24 '(' 697 error ')' {$$ = AslDoError(); yyclearin;} 698 ; 699 700Memory32FixedTerm 701 : PARSEOP_MEMORY32FIXED '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY32FIXED);} 702 OptionalReadWriteKeyword 703 ',' DWordConstExpr 704 ',' DWordConstExpr 705 OptionalNameString_Last 706 ')' {$$ = TrLinkChildren ($<n>3,4,$4,$6,$8,$9);} 707 | PARSEOP_MEMORY32FIXED '(' 708 error ')' {$$ = AslDoError(); yyclearin;} 709 ; 710 711Memory32Term 712 : PARSEOP_MEMORY32 '(' {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY32);} 713 OptionalReadWriteKeyword 714 ',' DWordConstExpr 715 ',' DWordConstExpr 716 ',' DWordConstExpr 717 ',' DWordConstExpr 718 OptionalNameString_Last 719 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);} 720 | PARSEOP_MEMORY32 '(' 721 error ')' {$$ = AslDoError(); yyclearin;} 722 ; 723 724QWordIOTerm 725 : PARSEOP_QWORDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDIO);} 726 OptionalResourceType_First 727 OptionalMinType 728 OptionalMaxType 729 OptionalDecodeType 730 OptionalRangeType 731 ',' QWordConstExpr 732 ',' QWordConstExpr 733 ',' QWordConstExpr 734 ',' QWordConstExpr 735 ',' QWordConstExpr 736 OptionalByteConstExpr 737 OptionalStringData 738 OptionalNameString 739 OptionalType 740 OptionalTranslationType_Last 741 ')' {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);} 742 | PARSEOP_QWORDIO '(' 743 error ')' {$$ = AslDoError(); yyclearin;} 744 ; 745 746QWordMemoryTerm 747 : PARSEOP_QWORDMEMORY '(' {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDMEMORY);} 748 OptionalResourceType_First 749 OptionalDecodeType 750 OptionalMinType 751 OptionalMaxType 752 OptionalMemType 753 ',' OptionalReadWriteKeyword 754 ',' QWordConstExpr 755 ',' QWordConstExpr 756 ',' QWordConstExpr 757 ',' QWordConstExpr 758 ',' QWordConstExpr 759 OptionalByteConstExpr 760 OptionalStringData 761 OptionalNameString 762 OptionalAddressRange 763 OptionalType_Last 764 ')' {$$ = TrLinkChildren ($<n>3,16,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);} 765 | PARSEOP_QWORDMEMORY '(' 766 error ')' {$$ = AslDoError(); yyclearin;} 767 ; 768 769QWordSpaceTerm 770 : PARSEOP_QWORDSPACE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDSPACE);} 771 ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);} 772 OptionalResourceType 773 OptionalDecodeType 774 OptionalMinType 775 OptionalMaxType 776 ',' ByteConstExpr 777 ',' QWordConstExpr 778 ',' QWordConstExpr 779 ',' QWordConstExpr 780 ',' QWordConstExpr 781 ',' QWordConstExpr 782 OptionalByteConstExpr 783 OptionalStringData 784 OptionalNameString_Last 785 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);} 786 | PARSEOP_QWORDSPACE '(' 787 error ')' {$$ = AslDoError(); yyclearin;} 788 ; 789 790RegisterTerm 791 : PARSEOP_REGISTER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_REGISTER);} 792 AddressSpaceKeyword 793 ',' ByteConstExpr 794 ',' ByteConstExpr 795 ',' QWordConstExpr 796 OptionalAccessSize 797 OptionalNameString_Last 798 ')' {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$11,$12);} 799 | PARSEOP_REGISTER '(' 800 error ')' {$$ = AslDoError(); yyclearin;} 801 ; 802 803SpiSerialBusTerm 804 : PARSEOP_SPI_SERIALBUS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_SPI_SERIALBUS);} 805 WordConstExpr /* 04: DeviceSelection */ 806 OptionalDevicePolarity /* 05: DevicePolarity */ 807 OptionalWireMode /* 06: WireMode */ 808 ',' ByteConstExpr /* 08: DataBitLength */ 809 OptionalSlaveMode /* 09: SlaveMode */ 810 ',' DWordConstExpr /* 11: ConnectionSpeed */ 811 ',' ClockPolarityKeyword /* 13: ClockPolarity */ 812 ',' ClockPhaseKeyword /* 15: ClockPhase */ 813 ',' StringData /* 17: ResourceSource */ 814 OptionalByteConstExpr /* 18: ResourceSourceIndex */ 815 OptionalResourceType /* 19: ResourceType */ 816 OptionalNameString /* 20: DescriptorName */ 817 OptionalBuffer_Last /* 21: VendorData */ 818 ')' {$$ = TrLinkChildren ($<n>3,13,$4,$5,$6,$8,$9,$11,$13,$15,$17,$18,$19,$20,$21);} 819 | PARSEOP_SPI_SERIALBUS '(' 820 error ')' {$$ = AslDoError(); yyclearin;} 821 ; 822 823StartDependentFnNoPriTerm 824 : PARSEOP_STARTDEPENDENTFN_NOPRI '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN_NOPRI);} 825 ')' '{' 826 ResourceMacroList '}' {$$ = TrLinkChildren ($<n>3,1,$6);} 827 | PARSEOP_STARTDEPENDENTFN_NOPRI '(' 828 error ')' {$$ = AslDoError(); yyclearin;} 829 ; 830 831StartDependentFnTerm 832 : PARSEOP_STARTDEPENDENTFN '(' {$<n>$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN);} 833 ByteConstExpr 834 ',' ByteConstExpr 835 ')' '{' 836 ResourceMacroList '}' {$$ = TrLinkChildren ($<n>3,3,$4,$6,$9);} 837 | PARSEOP_STARTDEPENDENTFN '(' 838 error ')' {$$ = AslDoError(); yyclearin;} 839 ; 840 841UartSerialBusTerm 842 : PARSEOP_UART_SERIALBUS '(' {$<n>$ = TrCreateLeafNode (PARSEOP_UART_SERIALBUS);} 843 DWordConstExpr /* 04: ConnectionSpeed */ 844 OptionalBitsPerByte /* 05: BitsPerByte */ 845 OptionalStopBits /* 06: StopBits */ 846 ',' ByteConstExpr /* 08: LinesInUse */ 847 OptionalEndian /* 09: Endianess */ 848 OptionalParityType /* 10: Parity */ 849 OptionalFlowControl /* 11: FlowControl */ 850 ',' WordConstExpr /* 13: Rx BufferSize */ 851 ',' WordConstExpr /* 15: Tx BufferSize */ 852 ',' StringData /* 17: ResourceSource */ 853 OptionalByteConstExpr /* 18: ResourceSourceIndex */ 854 OptionalResourceType /* 19: ResourceType */ 855 OptionalNameString /* 20: DescriptorName */ 856 OptionalBuffer_Last /* 21: VendorData */ 857 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$5,$6,$8,$9,$10,$11,$13,$15,$17,$18,$19,$20,$21);} 858 | PARSEOP_UART_SERIALBUS '(' 859 error ')' {$$ = AslDoError(); yyclearin;} 860 ; 861 862VendorLongTerm 863 : PARSEOP_VENDORLONG '(' {$<n>$ = TrCreateLeafNode (PARSEOP_VENDORLONG);} 864 OptionalNameString_First 865 ')' '{' 866 ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);} 867 | PARSEOP_VENDORLONG '(' 868 error ')' {$$ = AslDoError(); yyclearin;} 869 ; 870 871VendorShortTerm 872 : PARSEOP_VENDORSHORT '(' {$<n>$ = TrCreateLeafNode (PARSEOP_VENDORSHORT);} 873 OptionalNameString_First 874 ')' '{' 875 ByteList '}' {$$ = TrLinkChildren ($<n>3,2,$4,$7);} 876 | PARSEOP_VENDORSHORT '(' 877 error ')' {$$ = AslDoError(); yyclearin;} 878 ; 879 880WordBusNumberTerm 881 : PARSEOP_WORDBUSNUMBER '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WORDBUSNUMBER);} 882 OptionalResourceType_First 883 OptionalMinType 884 OptionalMaxType 885 OptionalDecodeType 886 ',' WordConstExpr 887 ',' WordConstExpr 888 ',' WordConstExpr 889 ',' WordConstExpr 890 ',' WordConstExpr 891 OptionalByteConstExpr 892 OptionalStringData 893 OptionalNameString_Last 894 ')' {$$ = TrLinkChildren ($<n>3,12,$4,$5,$6,$7,$9,$11,$13,$15,$17,$18,$19,$20);} 895 | PARSEOP_WORDBUSNUMBER '(' 896 error ')' {$$ = AslDoError(); yyclearin;} 897 ; 898 899WordIOTerm 900 : PARSEOP_WORDIO '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WORDIO);} 901 OptionalResourceType_First 902 OptionalMinType 903 OptionalMaxType 904 OptionalDecodeType 905 OptionalRangeType 906 ',' WordConstExpr 907 ',' WordConstExpr 908 ',' WordConstExpr 909 ',' WordConstExpr 910 ',' WordConstExpr 911 OptionalByteConstExpr 912 OptionalStringData 913 OptionalNameString 914 OptionalType 915 OptionalTranslationType_Last 916 ')' {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);} 917 | PARSEOP_WORDIO '(' 918 error ')' {$$ = AslDoError(); yyclearin;} 919 ; 920 921WordSpaceTerm 922 : PARSEOP_WORDSPACE '(' {$<n>$ = TrCreateLeafNode (PARSEOP_WORDSPACE);} 923 ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);} 924 OptionalResourceType 925 OptionalDecodeType 926 OptionalMinType 927 OptionalMaxType 928 ',' ByteConstExpr 929 ',' WordConstExpr 930 ',' WordConstExpr 931 ',' WordConstExpr 932 ',' WordConstExpr 933 ',' WordConstExpr 934 OptionalByteConstExpr 935 OptionalStringData 936 OptionalNameString_Last 937 ')' {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);} 938 | PARSEOP_WORDSPACE '(' 939 error ')' {$$ = AslDoError(); yyclearin;} 940 ; 941 942 943/******* Object References ***********************************************/ 944 945/* Allow IO, DMA, IRQ Resource macro names to also be used as identifiers */ 946 947NameString 948 : NameSeg {} 949 | PARSEOP_NAMESTRING {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) AslCompilerlval.s);} 950 | PARSEOP_IO {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IO");} 951 | PARSEOP_DMA {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "DMA");} 952 | PARSEOP_IRQ {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IRQ");} 953 ; 954 955NameSeg 956 : PARSEOP_NAMESEG {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESEG, (ACPI_NATIVE_INT) AslCompilerlval.s);} 957 ; 958 959 960/******************************************************************************* 961 * 962 * ASL Helper Terms 963 * 964 ******************************************************************************/ 965 966OptionalBusMasterKeyword 967 : ',' {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);} 968 | ',' PARSEOP_BUSMASTERTYPE_MASTER {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);} 969 | ',' PARSEOP_BUSMASTERTYPE_NOTMASTER {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_NOTMASTER);} 970 ; 971 972OptionalAccessAttribTerm 973 : {$$ = NULL;} 974 | ',' {$$ = NULL;} 975 | ',' ByteConstExpr {$$ = $2;} 976 | ',' AccessAttribKeyword {$$ = $2;} 977 ; 978 979OptionalAccessSize 980 : {$$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);} 981 | ',' {$$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);} 982 | ',' ByteConstExpr {$$ = $2;} 983 ; 984 985OptionalAddressingMode 986 : ',' {$$ = NULL;} 987 | ',' AddressingModeKeyword {$$ = $2;} 988 ; 989 990OptionalAddressRange 991 : {$$ = NULL;} 992 | ',' {$$ = NULL;} 993 | ',' AddressKeyword {$$ = $2;} 994 ; 995 996OptionalBitsPerByte 997 : ',' {$$ = NULL;} 998 | ',' BitsPerByteKeyword {$$ = $2;} 999 ; 1000 1001OptionalBuffer_Last 1002 : {$$ = NULL;} 1003 | ',' {$$ = NULL;} 1004 | ',' RawDataBufferTerm {$$ = $2;} 1005 ; 1006 1007OptionalByteConstExpr 1008 : {$$ = NULL;} 1009 | ',' {$$ = NULL;} 1010 | ',' ByteConstExpr {$$ = $2;} 1011 ; 1012 1013OptionalDecodeType 1014 : ',' {$$ = NULL;} 1015 | ',' DecodeKeyword {$$ = $2;} 1016 ; 1017 1018OptionalDevicePolarity 1019 : ',' {$$ = NULL;} 1020 | ',' DevicePolarityKeyword {$$ = $2;} 1021 ; 1022 1023OptionalDWordConstExpr 1024 : {$$ = NULL;} 1025 | ',' {$$ = NULL;} 1026 | ',' DWordConstExpr {$$ = $2;} 1027 ; 1028 1029OptionalEndian 1030 : ',' {$$ = NULL;} 1031 | ',' EndianKeyword {$$ = $2;} 1032 ; 1033 1034OptionalFlowControl 1035 : ',' {$$ = NULL;} 1036 | ',' FlowControlKeyword {$$ = $2;} 1037 ; 1038 1039OptionalIoRestriction 1040 : ',' {$$ = NULL;} 1041 | ',' IoRestrictionKeyword {$$ = $2;} 1042 ; 1043 1044OptionalListString 1045 : {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, ACPI_TO_INTEGER (""));} /* Placeholder is a NULL string */ 1046 | ',' {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, ACPI_TO_INTEGER (""));} /* Placeholder is a NULL string */ 1047 | ',' TermArg {$$ = $2;} 1048 ; 1049 1050OptionalMaxType 1051 : ',' {$$ = NULL;} 1052 | ',' MaxKeyword {$$ = $2;} 1053 ; 1054 1055OptionalMemType 1056 : ',' {$$ = NULL;} 1057 | ',' MemTypeKeyword {$$ = $2;} 1058 ; 1059 1060OptionalMinType 1061 : ',' {$$ = NULL;} 1062 | ',' MinKeyword {$$ = $2;} 1063 ; 1064 1065OptionalNameString 1066 : {$$ = NULL;} 1067 | ',' {$$ = NULL;} 1068 | ',' NameString {$$ = $2;} 1069 ; 1070 1071OptionalNameString_Last 1072 : {$$ = NULL;} 1073 | ',' {$$ = NULL;} 1074 | ',' NameString {$$ = $2;} 1075 ; 1076 1077OptionalNameString_First 1078 : {$$ = TrCreateLeafNode (PARSEOP_ZERO);} 1079 | NameString {$$ = $1;} 1080 ; 1081 1082OptionalObjectTypeKeyword 1083 : {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);} 1084 | ',' ObjectTypeKeyword {$$ = $2;} 1085 ; 1086 1087OptionalParityType 1088 : ',' {$$ = NULL;} 1089 | ',' ParityTypeKeyword {$$ = $2;} 1090 ; 1091 1092OptionalQWordConstExpr 1093 : {$$ = NULL;} 1094 | ',' {$$ = NULL;} 1095 | ',' QWordConstExpr {$$ = $2;} 1096 ; 1097 1098OptionalRangeType 1099 : ',' {$$ = NULL;} 1100 | ',' RangeTypeKeyword {$$ = $2;} 1101 ; 1102 1103OptionalReadWriteKeyword 1104 : {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);} 1105 | PARSEOP_READWRITETYPE_BOTH {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);} 1106 | PARSEOP_READWRITETYPE_READONLY {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_READONLY);} 1107 ; 1108 1109OptionalResourceType_First 1110 : {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);} 1111 | ResourceTypeKeyword {$$ = $1;} 1112 ; 1113 1114OptionalResourceType 1115 : {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);} 1116 | ',' {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);} 1117 | ',' ResourceTypeKeyword {$$ = $2;} 1118 ; 1119 1120OptionalSlaveMode 1121 : ',' {$$ = NULL;} 1122 | ',' SlaveModeKeyword {$$ = $2;} 1123 ; 1124 1125OptionalShareType 1126 : {$$ = NULL;} 1127 | ',' {$$ = NULL;} 1128 | ',' ShareTypeKeyword {$$ = $2;} 1129 ; 1130 1131OptionalShareType_First 1132 : {$$ = NULL;} 1133 | ShareTypeKeyword {$$ = $1;} 1134 ; 1135 1136OptionalStopBits 1137 : ',' {$$ = NULL;} 1138 | ',' StopBitsKeyword {$$ = $2;} 1139 ; 1140 1141OptionalStringData 1142 : {$$ = NULL;} 1143 | ',' {$$ = NULL;} 1144 | ',' StringData {$$ = $2;} 1145 ; 1146 1147OptionalTranslationType_Last 1148 : {$$ = NULL;} 1149 | ',' {$$ = NULL;} 1150 | ',' TranslationKeyword {$$ = $2;} 1151 ; 1152 1153OptionalType 1154 : {$$ = NULL;} 1155 | ',' {$$ = NULL;} 1156 | ',' TypeKeyword {$$ = $2;} 1157 ; 1158 1159OptionalType_Last 1160 : {$$ = NULL;} 1161 | ',' {$$ = NULL;} 1162 | ',' TypeKeyword {$$ = $2;} 1163 ; 1164 1165OptionalWireMode 1166 : ',' {$$ = NULL;} 1167 | ',' WireModeKeyword {$$ = $2;} 1168 ; 1169 1170OptionalWordConstExpr 1171 : ',' {$$ = NULL;} 1172 | ',' WordConstExpr {$$ = $2;} 1173 ; 1174 1175OptionalXferSize 1176 : {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);} 1177 | ',' {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);} 1178 | ',' XferSizeKeyword {$$ = $2;} 1179 ; 1180