1/* 2 * Some or all of this work - Copyright (c) 2006 - 2021, Intel Corp. 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without modification, 6 * are permitted provided that the following conditions are met: 7 * 8 * Redistributions of source code must retain the above copyright notice, 9 * this list of conditions and the following disclaimer. 10 * Redistributions in binary form must reproduce the above copyright notice, 11 * this list of conditions and the following disclaimer in the documentation 12 * and/or other materials provided with the distribution. 13 * Neither the name of Intel Corporation nor the names of its contributors 14 * may be used to endorse or promote products derived from this software 15 * without specific prior written permission. 16 * 17 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 23 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 25 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 26 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 */ 28 29/* 30 * 2-level model: \\m12e.<Method> 31 * 32 * Data for DerefOf(<String>) are 1 levels up. 33 * 34 * DataLevel<number_of_levels_in_model><data_are_N_levels_up>.asl 35 */ 36 37Method(m12e,, Serialized) 38{ 39 40/* 41 * 0 - Check different ways to pass String 42 */ 43Method(mdac) 44{ 45 Store("b000", Local0) 46 CopyObject("b000", i000) 47 Store(s000, Local7) 48 49 // Checkings 50 51 CH03("", 0, 0x000, __LINE__, 0) 52 53 Store(DerefOf("b000"), Local1) 54 mf88(Local1, c00b, bb00, 0x001, 0x002, 1) 55 56 Store(DerefOf(Local0), Local1) 57 mf88(Local1, c00b, bb00, 0x003, 0x004, 1) 58 59 Store(DerefOf(Local7), Local1) 60 mf88(Local1, c00b, bb00, 0x005, 0x006, 1) 61 62 Store(DerefOf(s000), Local1) 63 Store(DerefOf(s000), Local1) 64 Store(DerefOf(s000), Local1) 65 Store(DerefOf(s000), Local1) 66 Store(DerefOf(s000), Local1) 67 Store(DerefOf(s000), Local1) 68 Store(DerefOf(s000), Local1) 69 Store(DerefOf(s000), Local1) 70 Store(DerefOf(s000), Local1) 71 mf88(Local1, c00b, bb00, 0x007, 0x008, 1) 72 73 Store(DerefOf(mm00()), Local1) 74 mf88(Local1, c00b, bb00, 0x009, 0x00a, 1) 75 76 Store(DerefOf(mm01(ss00)), Local1) 77 mf88(Local1, c00b, bb00, 0x00b, 0x00c, 1) 78 79 Store(DerefOf(ToString("b000")), Local1) 80 mf88(Local1, c00b, bb00, 0x00d, 0x00e, 1) 81 82 Store(DerefOf(Store("b000", Local6)), Local1) 83 mf88(Local1, c00b, bb00, 0x00f, 0x010, 1) 84 85 Store(DerefOf(i000), Local1) 86 mf88(Local1, c00b, bb00, 0x011, 0x012, 1) 87 88 Store(mm02("^b000"), Local1) 89 mf88(Local1, c00b, bb00, 0x013, 0x014, 1) 90 91 CH03("", 0, 0x015, __LINE__, 0) 92} 93 94/* 95 * 1 - Check different ways to specify elements of NameSpace 96 */ 97Method(mf89) 98{ 99 // Checkings 100 101 Store(DerefOf("b001"), Local1) 102 mf88(Local1, c00b, bb01, 0x016, 0x017, 1) 103 104 Store(DerefOf("^b001"), Local1) 105 mf88(Local1, c00b, bb01, 0x018, 0x019, 1) 106 107 Store(DerefOf("^pr01.i000"), Local1) 108 mf88(Local1, c009, 0xaabc0000, 0x01a, 0x01b, 1) 109 110 Store(DerefOf("\\m12e.pr01.i000"), Local1) 111 if (FLG9) { 112 mf88(Local1, c009, 0xaabc0000, 0x01c, 0x01d, 1) 113 } else { 114 CH04("", 0, 0xff, 0, __LINE__, 0, 0) // AE_NOT_FOUND 115 } 116 117 Store(DerefOf("^i010"), Local1) 118 mf88(Local1, c009, ii00, 0x01f, 0x020, 1) 119 120 Store(DerefOf("^i987"), Local1) 121 mf88(Local1, c009, ii01, 0x021, 0x022, 1) 122 123 CH03("", 0, 0x023, __LINE__, 0) 124} 125 126/* 127 * 2 - Check access to calculated type objects - DerefOf(<String>) 128 */ 129Method(mf8a) 130{ 131 CH03("", 0, 0x01f, __LINE__, 0) 132 133 // Checkings 134 135 Store(DerefOf("b002"), Local1) 136 mf88(Local1, c00b, bb02, 0x020, 0x021, 1) 137 138 Store(DerefOf("s002"), Local1) 139 mf88(Local1, c00a, ss02, 0x022, 0x023, 1) 140 141 Store(DerefOf("i002"), Local1) 142 mf88(Local1, c009, ii02, 0x024, 0x025, 1) 143 144 Store(DerefOf("p002"), Local1) 145 mf88(Local1, c00c, 0, 0x026, 0x027, 0) 146 147 CH03("", 0, 0x028, __LINE__, 0) 148} 149 150/* 151 * 3 - Check access to special type objects - DerefOf(<String>) 152 */ 153Method(mf8b) 154{ 155 // Checkings 156 157 CH03("", 0, 0x029, __LINE__, 0) 158 CopyObject(DerefOf("e003"), Local1) 159 mf88(Local1, c00f, 0, 0x02a, 0x02b, 0) 160 161 CH03("", 0, 0x02c, __LINE__, 0) 162 CopyObject(DerefOf("mx03"), Local1) 163 mf88(Local1, c011, 0, 0x02d, 0x02e, 0) 164 165 CH03("", 0, 0x02f, __LINE__, 0) 166 CopyObject(DerefOf("d003"), Local1) 167 mf88(Local1, c00e, 0, 0x030, 0x031, 0) 168 169 CH03("", 0, 0x032, __LINE__, 0) 170 CopyObject(DerefOf("tz03"), Local1) 171 mf88(Local1, c015, 0, 0x033, 0x034, 0) 172 173 CH03("", 0, 0x035, __LINE__, 0) 174 CopyObject(DerefOf("pr03"), Local1) 175 mf88(Local1, c014, 0, 0x036, 0x037, 0) 176 177 if (y510) { 178 CH03("", 0, 0x038, __LINE__, 0) 179 CopyObject(DerefOf("r003"), Local1) 180 mf88(Local1, c012, 0, 0x039, 0x03a, 0) 181 } 182 183 CH03("", 0, 0x03b, __LINE__, 0) 184 CopyObject(DerefOf("pw03"), Local1) 185 mf88(Local1, c013, 0, 0x03c, 0x03d, 0) 186} 187 188/* 189 * 4 - Check DerefOf(<Not-String>) - calculated type objects 190 */ 191Method(mf8c) 192{ 193 // Checkings 194 195 CH03("", 0, 0x03e, __LINE__, 0) 196 Store(DerefOf(b004), Local1) 197 CH04("", 0, 0xff, 0, __LINE__, 0, 0) 198 199 CH03("", 0, 0x040, __LINE__, 0) 200 Store(DerefOf(i004), Local1) 201 CH04("", 0, 0xff, 0, __LINE__, 0, 0) 202 203 CH03("", 0, 0x042, __LINE__, 0) 204 Store(DerefOf(p004), Local1) 205 CH04("", 0, 0xff, 0, __LINE__, 0, 0) 206} 207 208/* 209 * 5 - Check DerefOf(<String>) - but String doesn't refer NameSpace object 210 */ 211Method(mf8d) 212{ 213 CH03("", 0, 0x044, __LINE__, 0) 214 Store(DerefOf("0123"), Local1) 215 CH04("", 0, 0xff, 0, __LINE__, 0, 0) 216 217 CH03("", 0, 0x046, __LINE__, 0) 218 Store(DerefOf("zxcvbnm,./;'\][0123"), Local1) 219 CH04("", 0, 0xff, 0, __LINE__, 0, 0) 220 221 CH03("", 0, 0x048, __LINE__, 0) 222 Store(DerefOf("b0qv"), Local1) 223 CH04("", 0, 0xff, 0, __LINE__, 0, 0) 224} 225 226/* 227 * 6 - Check different ways to pass String (mdac 228 * but without Store). Check - no exceptions. 229 */ 230Method(mf8e) 231{ 232 Store("b006", Local0) 233 CopyObject("b006", i006) 234 Store(s006, Local7) 235 236 // Checkings 237 238 CH03("", 0, 0x04a, __LINE__, 0) 239 240 Store(DerefOf("b006"), Local2) 241 242 Store(DerefOf(Local0), Local2) 243 244 Store(DerefOf(Local7), Local2) 245 246 Store(DerefOf(s006), Local2) 247 Store(DerefOf(s006), Local2) 248 Store(DerefOf(s006), Local2) 249 Store(DerefOf(s006), Local2) 250 Store(DerefOf(s006), Local2) 251 Store(DerefOf(s006), Local2) 252 Store(DerefOf(s006), Local2) 253 Store(DerefOf(s006), Local2) 254 Store(DerefOf(s006), Local2) 255 256 Store(DerefOf(mm60()), Local2) 257 258 Store(DerefOf(mm61(ss06)), Local2) 259 260 Store(DerefOf(ToString("b006")), Local2) 261 262 Store(DerefOf(Store("b006", Local6)), Local2) 263 264 Store(DerefOf(i006), Local2) 265 266 CH03("", 0, 0x04b, __LINE__, 0) 267} 268 269/* 270 * 7 - Check access to special type objects - DerefOf(<String>) 271 */ 272Method(mf8f) 273{ 274 // Checkings 275 276 CH03("", 0, 0x04c, __LINE__, 0) 277 Store(DerefOf("e007"), Local2) 278 if(LNot(SLCK)){ 279 CH04("", 0, 47, 0, __LINE__, 0, 0) 280 } 281 282 CH03("", 0, 0x04e, __LINE__, 0) 283 Store(DerefOf("mx07"), Local2) 284 if(LNot(SLCK)){ 285 CH04("", 0, 47, 0, __LINE__, 0, 0) 286 } 287 288 CH03("", 0, 0x050, __LINE__, 0) 289 Store(DerefOf("d007"), Local2) 290 if(LNot(SLCK)){ 291 CH04("", 0, 47, 0, __LINE__, 0, 0) 292 } 293 294 CH03("", 0, 0x052, __LINE__, 0) 295 Store(DerefOf("tz07"), Local2) 296 if(LNot(SLCK)){ 297 CH04("", 0, 47, 0, __LINE__, 0, 0) 298 } 299 300 CH03("", 0, 0x054, __LINE__, 0) 301 Store(DerefOf("pr07"), Local2) 302 if(LNot(SLCK)){ 303 CH04("", 0, 47, 0, __LINE__, 0, 0) 304 } 305 306 CH03("", 0, 0x056, __LINE__, 0) 307 Store(DerefOf("r007"), Local2) 308 if(LNot(SLCK)){ 309 CH04("", 0, 47, 0, __LINE__, 0, 0) 310 } 311 312 CH03("", 0, 0x058, __LINE__, 0) 313 Store(DerefOf("pw07"), Local2) 314 if(LNot(SLCK)){ 315 CH04("", 0, 47, 0, __LINE__, 0, 0) 316 } 317} 318 319/* 320 * 8 - Check DerefOf(<Not-String>) - calculated type objects 321 */ 322Method(mf90) 323{ 324 // Checkings 325 326 CH03("", 0, 0x05a, __LINE__, 0) 327 Store(DerefOf(b008), Local2) 328 CH04("", 0, 0xff, 0, __LINE__, 0, 0) 329 330 CH03("", 0, 0x05c, __LINE__, 0) 331 Store(DerefOf(i008), Local2) 332 CH04("", 0, 0xff, 0, __LINE__, 0, 0) 333 334 CH03("", 0, 0x05e, __LINE__, 0) 335 Store(DerefOf(p008), Local2) 336 CH04("", 0, 0xff, 0, __LINE__, 0, 0) 337} 338 339/* 340 * 9 - Check DerefOf(<String>) - but String doesn't refer NameSpace object 341 */ 342Method(mf91) 343{ 344 CH03("", 0, 0x060, __LINE__, 0) 345 Store(DerefOf("0123"), Local2) 346 CH04("", 0, 0xff, 0, __LINE__, 0, 0) 347 348 CH03("", 0, 0x062, __LINE__, 0) 349 Store(DerefOf("zxcvbnm,./;'\][0123"), Local2) 350 CH04("", 0, 0xff, 0, __LINE__, 0, 0) 351 352 CH03("", 0, 0x064, __LINE__, 0) 353 Store(DerefOf("mf_d"), Local2) 354 CH04("", 0, 0xff, 0, __LINE__, 0, 0) 355 356 CH03("", 0, 0x066, __LINE__, 0) 357 Store(DerefOf("b009"), Local2) 358 CH04("", 0, 0xff, 0, __LINE__, 0, 0) 359} 360 361/* 362 * a - Check access to special type objects - DerefOf(<String>) 363 */ 364Method(mfa0) 365{ 366 CH03("", 0, 0x068, __LINE__, 0) 367 368 Store(DerefOf("bfa0"), Local1) 369 mf88(Local1, c009, 0xb1, 0x069, 0x06a, 1) 370 371 Store(DerefOf("f0a0"), Local1) 372 mf88(Local1, c009, 0, 0x06b, 0x06c, 0) 373 374 Store(DerefOf("f0a1"), Local1) 375 mf88(Local1, c009, 0, 0x06d, 0x06e, 0) 376 377 Store(DerefOf("f0a2"), Local1) 378 mf88(Local1, c009, 0, 0x06f, 0x070, 0) 379 380 Store(DerefOf("f0a3"), Local1) 381 mf88(Local1, c009, 0, 0x071, 0x072, 0) 382 383 Store(DerefOf("bna0"), Local1) 384 mf88(Local1, c009, 0, 0x073, 0x074, 0) 385 386 Store(DerefOf("ifa0"), Local1) 387 mf88(Local1, c009, 0, 0x075, 0x076, 0) 388 389 Store(DerefOf("ifa1"), Local1) 390 mf88(Local1, c009, 0, 0x077, 0x078, 0) 391 392 CH03("", 0, 0x079, __LINE__, 0) 393} 394 395// b 396Method(mfa1) 397{ 398 CH03("", 0, 0x07a, __LINE__, 0) 399 Store(DerefOf(bfb0), Local1) 400 CH04("", 0, 0xff, 0, __LINE__, 0, 0) 401 402 CH03("", 0, 0x07c, __LINE__, 0) 403 Store(DerefOf(f0b0), Local1) 404 CH04("", 0, 0xff, 0, __LINE__, 0, 0) 405 406 CH03("", 0, 0x07e, __LINE__, 0) 407 Store(DerefOf(f0b1), Local1) 408 CH04("", 0, 0xff, 0, __LINE__, 0, 0) 409 410 CH03("", 0, 0x080, __LINE__, 0) 411 Store(DerefOf(f0b2), Local1) 412 CH04("", 0, 0xff, 0, __LINE__, 0, 0) 413 414 CH03("", 0, 0x082, __LINE__, 0) 415 Store(DerefOf(f0b3), Local1) 416 CH04("", 0, 0xff, 0, __LINE__, 0, 0) 417 418 CH03("", 0, 0x084, __LINE__, 0) 419 Store(DerefOf(bnb0), Local1) 420 CH04("", 0, 0xff, 0, __LINE__, 0, 0) 421 422 CH03("", 0, 0x086, __LINE__, 0) 423 Store(DerefOf(ifb0), Local1) 424 CH04("", 0, 0xff, 0, __LINE__, 0, 0) 425 426 CH03("", 0, 0x088, __LINE__, 0) 427 Store(DerefOf(ifb1), Local1) 428 CH04("", 0, 0xff, 0, __LINE__, 0, 0) 429} 430 431// c 432Method(mfa2) 433{ 434 // Checkings 435 436 CH03("", 0, 0x08a, __LINE__, 0) 437 Store(DerefOf(e00c), Local2) 438 CH04("", 0, 0xff, 0, __LINE__, 0, 0) 439 440 CH03("", 0, 0x08c, __LINE__, 0) 441 Store(DerefOf(mx0c), Local2) 442 CH04("", 0, 0xff, 0, __LINE__, 0, 0) 443 444 CH03("", 0, 0x08e, __LINE__, 0) 445 Store(DerefOf(d00c), Local2) 446 CH04("", 0, 0xff, 0, __LINE__, 0, 0) 447 448 CH03("", 0, 0x090, __LINE__, 0) 449 Store(DerefOf(tz0c), Local2) 450 CH04("", 0, 0xff, 0, __LINE__, 0, 0) 451 452 CH03("", 0, 0x092, __LINE__, 0) 453 Store(DerefOf(pr0c), Local2) 454 CH04("", 0, 0xff, 0, __LINE__, 0, 0) 455 456 CH03("", 0, 0x094, __LINE__, 0) 457 Store(DerefOf(r00c), Local2) 458 CH04("", 0, 0xff, 0, __LINE__, 0, 0) 459 460 CH03("", 0, 0x096, __LINE__, 0) 461 Store(DerefOf(pw0c), Local2) 462 CH04("", 0, 0xff, 0, __LINE__, 0, 0) 463} 464 465Method(m12a) 466{ 467 SRMT("mdac-21-down") 468 mdac() 469 SRMT("mf89-21-down") 470 mf89() 471 SRMT("mf8a-21-down") 472 mf8a() 473 SRMT("mf8b-21-down") 474 mf8b() 475 SRMT("mf8c-21-down") 476 mf8c() 477 SRMT("mf8d-21-down") 478 mf8d() 479 SRMT("mf8e-21-down") 480 mf8e() 481 SRMT("mf8f-21-down") 482 mf8f() 483 SRMT("mf90-21-down") 484 mf90() 485 SRMT("mf91-21-down") 486 mf91() 487 SRMT("mfa0-21-down") 488 mfa0() 489 SRMT("mfa1-21-down") 490 mfa1() 491 SRMT("mfa2-21-down") 492 mfa2() 493} 494 495 /* 0 */ 496 497 Method(mm00) 498 { 499 Return("b000") 500 } 501 502 Method(mm01, 1) 503 { 504 Return(arg0) 505 } 506 507 Method(mm02, 1) 508 { 509 Store(DerefOf(arg0), Local7) 510 511 Return(Local7) 512 } 513 514 Name(b000, Buffer(){ 1, 2, 3, 4, 0x95, 6, 7, 8}) 515 Name(bb00, Buffer(){ 1, 2, 3, 4, 0x95, 6, 7, 8}) 516 Name(s000, "b000") 517 Name(ss00, "b000") 518 Name(i000, 0) 519 520 /* 1 */ 521 522 Name(i010, 0xaabc0123) 523 Name(i987, 0xaabc0987) 524 Processor(pr01, 0, 0xFFFFFFFF, 0) 525 { 526 Name(i000, 0xaabc0000) 527 } 528 Name(ii00, 0xaabc0123) 529 Name(ii01, 0xaabc0987) 530 531 Name(b001, Buffer(){ 1, 2, 3, 4, 0x95, 6, 7, 8}) 532 Name(bb01, Buffer(){ 1, 2, 3, 4, 0x95, 6, 7, 8}) 533 534 /* 2 */ 535 536 Name(b002, Buffer(){ 1, 2, 3, 4, 0x95, 6, 7, 8}) 537 Name(bb02, Buffer(){ 1, 2, 3, 4, 0x95, 6, 7, 8}) 538 Name(s002, "String") 539 Name(ss02, "String") 540 Name(i002, 0xabbc0000) 541 Name(ii02, 0xabbc0000) 542 Name(p002, Package() {1,2,3,4}) 543 544 /* 3 */ 545 546 Event(e003) 547 Mutex(mx03, 0) 548 Device(d003) { Name(i900, 0xabcd0017) } 549 ThermalZone(tz03) {} 550 Processor(pr03, 0, 0xFFFFFFFF, 0) {} 551 OperationRegion(r003, SystemMemory, 0x100, 0x100) 552 PowerResource(pw03, 1, 0) {Method(mmmm){return (0)}} 553 554 /* 4 */ 555 556 Name(b004, Buffer(){ 1, 2, 3, 4, 0x95, 6, 7, 8}) 557 Name(i004, 0xabbc0000) 558 Name(p004, Package() {1,2,3,4}) 559 560 /* 6 */ 561 562 Method(mm60) 563 { 564 Return("b006") 565 } 566 567 Method(mm61, 1) 568 { 569 Return(arg0) 570 } 571 572 Name(b006, Buffer(){ 1, 2, 3, 4, 0x95, 6, 7, 8}) 573 Name(bb06, Buffer(){ 1, 2, 3, 4, 0x95, 6, 7, 8}) 574 Name(s006, "b006") 575 Name(ss06, "b006") 576 Name(i006, 0) 577 578 /* 7 */ 579 580 Event(e007) 581 Mutex(mx07, 0) 582 Device(d007) { Name(i900, 0xabcd0017) } 583 ThermalZone(tz07) {} 584 Processor(pr07, 0, 0xFFFFFFFF, 0) {} 585 OperationRegion(r007, SystemMemory, 0x100, 0x100) 586 PowerResource(pw07, 1, 0) {Method(mmmm){return (0)}} 587 588 /* 8 */ 589 590 Name(b008, Buffer(){ 1, 2, 3, 4, 0x95, 6, 7, 8}) 591 Name(i008, 0xabbc0000) 592 Name(p008, Package() {1,2,3,4}) 593 594 /* a */ 595 596 Name(b00a, Buffer() {0xb0,0xb1,0xb2,0xb3,0xb4}) 597 OperationRegion(r00a, SystemMemory, 0x100, 0x100) 598 599 CreateField(b00a, 8, 8, bfa0) 600 Field(r00a, ByteAcc, NoLock, Preserve) {f0a0,8,f0a1,8,f0a2,8,f0a3,8} 601 BankField(r00a, f0a1, 0, ByteAcc, NoLock, Preserve) {bna0,4} 602 IndexField(f0a2, f0a3, ByteAcc, NoLock, Preserve) {ifa0,8,ifa1,8} 603 604 /* b */ 605 606 Name(b00b, Buffer() {0xb0,0xb1,0xb2,0xb3,0xb4}) 607 OperationRegion(r00b, SystemMemory, 0x100, 0x100) 608 609 CreateField(b00b, 8, 8, bfb0) 610 Field(r00b, ByteAcc, NoLock, Preserve) {f0b0,8,f0b1,8,f0b2,8,f0b3,8} 611 BankField(r00b, f0b1, 0, ByteAcc, NoLock, Preserve) {bnb0,4} 612 IndexField(f0b2, f0b3, ByteAcc, NoLock, Preserve) {ifb0,8,ifb1,8} 613 614 /* c */ 615 616 Event(e00c) 617 Mutex(mx0c, 0) 618 Device(d00c) { Name(i900, 0xabcd0017) } 619 ThermalZone(tz0c) {} 620 Processor(pr0c, 0, 0xFFFFFFFF, 0) {} 621 OperationRegion(r00c, SystemMemory, 0x100, 0x100) 622 PowerResource(pw0c, 1, 0) {Method(mmmm){return (0)}} 623 624 m12a() 625} /* m12e */ 626