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 * Resource Descriptor macros 30 * 31 * Word IO Resource Descriptor Macro 32 */ 33 Name (P420, Package (0x25) 34 { 35 ResourceTemplate () 36 { 37 WordIO (ResourceProducer, MinNotFixed, MaxNotFixed, PosDecode, EntireRange, 38 0xF6F7, // Granularity 39 0xF8F9, // Range Minimum 40 0xFAFB, // Range Maximum 41 0xFCFD, // Translation Offset 42 0xFEFF, // Length 43 ,, , TypeStatic, DenseTranslation) 44 }, 45 46 ResourceTemplate () 47 { 48 WordIO (ResourceProducer, MinNotFixed, MaxNotFixed, SubDecode, EntireRange, 49 0xF6F7, // Granularity 50 0xF8F9, // Range Minimum 51 0xFAFB, // Range Maximum 52 0xFCFD, // Translation Offset 53 0xFEFF, // Length 54 ,, , TypeStatic, DenseTranslation) 55 }, 56 57 ResourceTemplate () 58 { 59 WordIO (ResourceProducer, MinNotFixed, MaxFixed, PosDecode, EntireRange, 60 0xF6F7, // Granularity 61 0xF8F9, // Range Minimum 62 0xFAFB, // Range Maximum 63 0xFCFD, // Translation Offset 64 0xFEFF, // Length 65 ,, , TypeStatic, DenseTranslation) 66 }, 67 68 ResourceTemplate () 69 { 70 WordIO (ResourceProducer, MinNotFixed, MaxFixed, SubDecode, EntireRange, 71 0xF6F7, // Granularity 72 0xF8F9, // Range Minimum 73 0xFAFB, // Range Maximum 74 0xFCFD, // Translation Offset 75 0xFEFF, // Length 76 ,, , TypeStatic, DenseTranslation) 77 }, 78 79 ResourceTemplate () 80 { 81 WordIO (ResourceProducer, MinFixed, MaxNotFixed, PosDecode, EntireRange, 82 0xF6F7, // Granularity 83 0xF8F9, // Range Minimum 84 0xFAFB, // Range Maximum 85 0xFCFD, // Translation Offset 86 0xFEFF, // Length 87 ,, , TypeStatic, DenseTranslation) 88 }, 89 90 ResourceTemplate () 91 { 92 WordIO (ResourceProducer, MinFixed, MaxNotFixed, SubDecode, EntireRange, 93 0xF6F7, // Granularity 94 0xF8F9, // Range Minimum 95 0xFAFB, // Range Maximum 96 0xFCFD, // Translation Offset 97 0xFEFF, // Length 98 ,, , TypeStatic, DenseTranslation) 99 }, 100 101 ResourceTemplate () 102 { 103 WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, 104 0xF6F7, // Granularity 105 0xF8F9, // Range Minimum 106 0xFAFB, // Range Maximum 107 0xFCFD, // Translation Offset 108 0xFEFF, // Length 109 ,, , TypeStatic, DenseTranslation) 110 }, 111 112 ResourceTemplate () 113 { 114 WordIO (ResourceProducer, MinFixed, MaxFixed, SubDecode, EntireRange, 115 0xF6F7, // Granularity 116 0xF8F9, // Range Minimum 117 0xFAFB, // Range Maximum 118 0xFCFD, // Translation Offset 119 0xFEFF, // Length 120 ,, , TypeStatic, DenseTranslation) 121 }, 122 123 ResourceTemplate () 124 { 125 WordIO (ResourceConsumer, MinNotFixed, MaxNotFixed, PosDecode, EntireRange, 126 0xF6F7, // Granularity 127 0xF8F9, // Range Minimum 128 0xFAFB, // Range Maximum 129 0xFCFD, // Translation Offset 130 0xFEFF, // Length 131 ,, , TypeStatic, DenseTranslation) 132 }, 133 134 ResourceTemplate () 135 { 136 WordIO (ResourceConsumer, MinNotFixed, MaxNotFixed, SubDecode, EntireRange, 137 0xF6F7, // Granularity 138 0xF8F9, // Range Minimum 139 0xFAFB, // Range Maximum 140 0xFCFD, // Translation Offset 141 0xFEFF, // Length 142 ,, , TypeStatic, DenseTranslation) 143 }, 144 145 ResourceTemplate () 146 { 147 WordIO (ResourceConsumer, MinNotFixed, MaxFixed, PosDecode, EntireRange, 148 0xF6F7, // Granularity 149 0xF8F9, // Range Minimum 150 0xFAFB, // Range Maximum 151 0xFCFD, // Translation Offset 152 0xFEFF, // Length 153 ,, , TypeStatic, DenseTranslation) 154 }, 155 156 ResourceTemplate () 157 { 158 WordIO (ResourceConsumer, MinNotFixed, MaxFixed, SubDecode, EntireRange, 159 0xF6F7, // Granularity 160 0xF8F9, // Range Minimum 161 0xFAFB, // Range Maximum 162 0xFCFD, // Translation Offset 163 0xFEFF, // Length 164 ,, , TypeStatic, DenseTranslation) 165 }, 166 167 ResourceTemplate () 168 { 169 WordIO (ResourceConsumer, MinFixed, MaxNotFixed, PosDecode, EntireRange, 170 0xF6F7, // Granularity 171 0xF8F9, // Range Minimum 172 0xFAFB, // Range Maximum 173 0xFCFD, // Translation Offset 174 0xFEFF, // Length 175 ,, , TypeStatic, DenseTranslation) 176 }, 177 178 ResourceTemplate () 179 { 180 WordIO (ResourceConsumer, MinFixed, MaxNotFixed, SubDecode, EntireRange, 181 0xF6F7, // Granularity 182 0xF8F9, // Range Minimum 183 0xFAFB, // Range Maximum 184 0xFCFD, // Translation Offset 185 0xFEFF, // Length 186 ,, , TypeStatic, DenseTranslation) 187 }, 188 189 ResourceTemplate () 190 { 191 WordIO (ResourceConsumer, MinFixed, MaxFixed, PosDecode, EntireRange, 192 0xF6F7, // Granularity 193 0xF8F9, // Range Minimum 194 0xFAFB, // Range Maximum 195 0xFCFD, // Translation Offset 196 0xFEFF, // Length 197 ,, , TypeStatic, DenseTranslation) 198 }, 199 200 ResourceTemplate () 201 { 202 WordIO (ResourceConsumer, MinFixed, MaxFixed, SubDecode, EntireRange, 203 0xF6F7, // Granularity 204 0xF8F9, // Range Minimum 205 0xFAFB, // Range Maximum 206 0xFCFD, // Translation Offset 207 0xFEFF, // Length 208 ,, , TypeStatic, DenseTranslation) 209 }, 210 211 ResourceTemplate () 212 { 213 WordIO (ResourceConsumer, MinNotFixed, MaxNotFixed, PosDecode, NonISAOnlyRanges, 214 0xF6F7, // Granularity 215 0xF8F9, // Range Minimum 216 0xFAFB, // Range Maximum 217 0xFCFD, // Translation Offset 218 0xFEFF, // Length 219 ,, , TypeStatic, DenseTranslation) 220 }, 221 222 ResourceTemplate () 223 { 224 WordIO (ResourceConsumer, MinNotFixed, MaxNotFixed, PosDecode, NonISAOnlyRanges, 225 0xF6F7, // Granularity 226 0xF8F9, // Range Minimum 227 0xFAFB, // Range Maximum 228 0xFCFD, // Translation Offset 229 0xFEFF, // Length 230 ,, , TypeStatic, SparseTranslation) 231 }, 232 233 ResourceTemplate () 234 { 235 WordIO (ResourceConsumer, MinNotFixed, MaxNotFixed, PosDecode, NonISAOnlyRanges, 236 0xF6F7, // Granularity 237 0xF8F9, // Range Minimum 238 0xFAFB, // Range Maximum 239 0xFCFD, // Translation Offset 240 0xFEFF, // Length 241 ,, , TypeTranslation, DenseTranslation) 242 }, 243 244 ResourceTemplate () 245 { 246 WordIO (ResourceConsumer, MinNotFixed, MaxNotFixed, PosDecode, NonISAOnlyRanges, 247 0xF6F7, // Granularity 248 0xF8F9, // Range Minimum 249 0xFAFB, // Range Maximum 250 0xFCFD, // Translation Offset 251 0xFEFF, // Length 252 ,, , TypeTranslation, SparseTranslation) 253 }, 254 255 ResourceTemplate () 256 { 257 WordIO (ResourceConsumer, MinNotFixed, MaxNotFixed, PosDecode, ISAOnlyRanges, 258 0xF6F7, // Granularity 259 0xF8F9, // Range Minimum 260 0xFAFB, // Range Maximum 261 0xFCFD, // Translation Offset 262 0xFEFF, // Length 263 ,, , TypeStatic, DenseTranslation) 264 }, 265 266 ResourceTemplate () 267 { 268 WordIO (ResourceConsumer, MinNotFixed, MaxNotFixed, PosDecode, ISAOnlyRanges, 269 0xF6F7, // Granularity 270 0xF8F9, // Range Minimum 271 0xFAFB, // Range Maximum 272 0xFCFD, // Translation Offset 273 0xFEFF, // Length 274 ,, , TypeStatic, SparseTranslation) 275 }, 276 277 ResourceTemplate () 278 { 279 WordIO (ResourceConsumer, MinNotFixed, MaxNotFixed, PosDecode, ISAOnlyRanges, 280 0xF6F7, // Granularity 281 0xF8F9, // Range Minimum 282 0xFAFB, // Range Maximum 283 0xFCFD, // Translation Offset 284 0xFEFF, // Length 285 ,, , TypeTranslation, DenseTranslation) 286 }, 287 288 ResourceTemplate () 289 { 290 WordIO (ResourceConsumer, MinNotFixed, MaxNotFixed, PosDecode, ISAOnlyRanges, 291 0xF6F7, // Granularity 292 0xF8F9, // Range Minimum 293 0xFAFB, // Range Maximum 294 0xFCFD, // Translation Offset 295 0xFEFF, // Length 296 ,, , TypeTranslation, SparseTranslation) 297 }, 298 299 ResourceTemplate () 300 { 301 WordIO (ResourceConsumer, MinNotFixed, MaxNotFixed, PosDecode, EntireRange, 302 0xF6F7, // Granularity 303 0xF8F9, // Range Minimum 304 0xFAFB, // Range Maximum 305 0xFCFD, // Translation Offset 306 0xFEFF, // Length 307 ,, , TypeStatic, DenseTranslation) 308 }, 309 310 ResourceTemplate () 311 { 312 WordIO (ResourceConsumer, MinNotFixed, MaxNotFixed, PosDecode, EntireRange, 313 0xF6F7, // Granularity 314 0xF8F9, // Range Minimum 315 0xFAFB, // Range Maximum 316 0xFCFD, // Translation Offset 317 0xFEFF, // Length 318 ,, , TypeStatic, SparseTranslation) 319 }, 320 321 ResourceTemplate () 322 { 323 WordIO (ResourceConsumer, MinNotFixed, MaxNotFixed, PosDecode, EntireRange, 324 0xF6F7, // Granularity 325 0xF8F9, // Range Minimum 326 0xFAFB, // Range Maximum 327 0xFCFD, // Translation Offset 328 0xFEFF, // Length 329 ,, , TypeTranslation, DenseTranslation) 330 }, 331 332 ResourceTemplate () 333 { 334 WordIO (ResourceConsumer, MinNotFixed, MaxNotFixed, PosDecode, EntireRange, 335 0xF6F7, // Granularity 336 0xF8F9, // Range Minimum 337 0xFAFB, // Range Maximum 338 0xFCFD, // Translation Offset 339 0xFEFF, // Length 340 ,, , TypeTranslation, SparseTranslation) 341 }, 342 343 ResourceTemplate () 344 { 345 WordIO (ResourceConsumer, MinNotFixed, MaxNotFixed, PosDecode, EntireRange, 346 0xF6F7, // Granularity 347 0xF8F9, // Range Minimum 348 0xFAFB, // Range Maximum 349 0xFCFD, // Translation Offset 350 0xFEFF, // Length 351 ,, , TypeStatic, DenseTranslation) 352 }, 353 354 ResourceTemplate () 355 { 356 WordIO (ResourceConsumer, MinNotFixed, MaxNotFixed, PosDecode, EntireRange, 357 0xF6F7, // Granularity 358 0xF8F9, // Range Minimum 359 0xFAFB, // Range Maximum 360 0xFCFD, // Translation Offset 361 0xFEFF, // Length 362 ,, , TypeStatic, DenseTranslation) 363 }, 364 365 ResourceTemplate () 366 { 367 WordIO (ResourceConsumer, MinNotFixed, MaxNotFixed, PosDecode, EntireRange, 368 0xF6F7, // Granularity 369 0xF8F9, // Range Minimum 370 0xFAFB, // Range Maximum 371 0xFCFD, // Translation Offset 372 0xFEFF, // Length 373 0x01, "", , TypeStatic, DenseTranslation) 374 }, 375 376 ResourceTemplate () 377 { 378 WordIO (ResourceConsumer, MinNotFixed, MaxNotFixed, PosDecode, EntireRange, 379 0xF6F7, // Granularity 380 0xF8F9, // Range Minimum 381 0xFAFB, // Range Maximum 382 0xFCFD, // Translation Offset 383 0xFEFF, // Length 384 0x0F, "P", , TypeStatic, DenseTranslation) 385 }, 386 387 ResourceTemplate () 388 { 389 WordIO (ResourceConsumer, MinNotFixed, MaxNotFixed, PosDecode, EntireRange, 390 0xF6F7, // Granularity 391 0xF8F9, // Range Minimum 392 0xFAFB, // Range Maximum 393 0xFCFD, // Translation Offset 394 0xFEFF, // Length 395 0xF0, "PATH", , TypeStatic, DenseTranslation) 396 }, 397 398 ResourceTemplate () 399 { 400 WordIO (ResourceConsumer, MinNotFixed, MaxNotFixed, PosDecode, EntireRange, 401 0xF6F7, // Granularity 402 0xF8F9, // Range Minimum 403 0xFAFB, // Range Maximum 404 0xFCFD, // Translation Offset 405 0xFEFF, // Length 406 0xFF, "!\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !\"#$%&\'()*", , TypeStatic, DenseTranslation) 407 }, 408 409 ResourceTemplate () 410 { 411 WordIO (ResourceConsumer, MinFixed, MaxFixed, SubDecode, EntireRange, 412 0xF6F7, // Granularity 413 0xF8F9, // Range Minimum 414 0xFAFB, // Range Maximum 415 0xFCFD, // Translation Offset 416 0xFEFF, // Length 417 0xFF, "PATHPATHPATH", , TypeTranslation, SparseTranslation) 418 }, 419 420 ResourceTemplate () 421 { 422 WordIO (ResourceConsumer, MinFixed, MaxFixed, SubDecode, EntireRange, 423 0x0000, // Granularity 424 0x0000, // Range Minimum 425 0x0000, // Range Maximum 426 0x0000, // Translation Offset 427 0x0000, // Length 428 0xFF, "PATHPATHPATH", , TypeTranslation, SparseTranslation) 429 }, 430 431 ResourceTemplate () 432 { 433 WordIO (ResourceConsumer, MinNotFixed, MaxNotFixed, PosDecode, EntireRange, 434 0xF6F7, // Granularity 435 0xF8F9, // Range Minimum 436 0xFAFB, // Range Maximum 437 0xFCFD, // Translation Offset 438 0xFEFF, // Length 439 0x0F,, , TypeStatic, DenseTranslation) 440 } 441 }) 442 /* 443 ACPI Specification, Revision 3.0, September 2, 2004 444 6.4.3.5.3 Word Address Space Descriptor 445 I/O Word Address Space Descriptor layout: 446 Byte 0 (Tag Bits): Value=10001000B (0x88) (Type = 1, Large item name = 0x8) 447 Byte 1 (Length, bits[7:0]): Variable: Value = 13 (minimum) 448 Byte 2 (Length, bits[15:8]): Variable: Value = 0 (minimum) 449 Byte 3 (Resource Type): 450 1 I/O range 451 Byte 4 (General Flags): 452 Bits[7:4] Reserved (must be 0) 453 Bit[3] Min Address Fixed, _MAF: 454 1 The specified maximum address is fixed 455 0 The specified maximum address is not fixed 456 and can be changed 457 Bit[2] Max Address Fixed,_MIF: 458 1 The specified minimum address is fixed 459 0 The specified minimum address is not fixed 460 and can be changed 461 Bit[1] Decode Type, _DEC: 462 1 This bridge subtractively decodes this address 463 (top level bridges only) 464 0 This bridge positively decodes this address 465 Bit[0] Consumer/Producer: 466 1-This device consumes this resource 467 0-This device produces and consumes this resource 468 Byte 5 (Type Specific Flags): 469 Flags that are specific to each resource type. The meaning of the flags 470 in this field depends on the value of the Resource Type field (see above) 471 Bits[7:6] Reserved (must be 0) 472 Bit[5] Sparse Translation, _TRS. This bit is only meaningful if Bit[4] is set. 473 1 SparseTranslation: The primary-side memory address of any specific 474 I/O port within the secondary-side range can be found using 475 the following function. 476 address = (((port & 0xFFFc) << 10) || (port & 0xFFF)) + _TRA 477 In the address used to access the I/O port, bits[11:2] must be identical 478 to bits[21:12], this gives four bytes of I/O ports on each 4 KB page. 479 0 DenseTranslation: The primary-side memory address of any specific I/O port 480 within the secondary-side range can be found using the following function. 481 address = port + _TRA 482 Bit[4] I/O to Memory Translation, _TTP 483 1 TypeTranslation: This resource, which is I/O on the secondary side of 484 the bridge, is memory on the primary side of the bridge. 485 0 TypeStatic: This resource, which is I/O on the secondary side of 486 the bridge, is also I/O on the primary side of the bridge. 487 Bit[3:2] Reserved (must be 0) 488 Bit[1:0] _RNG 489 3 Memory window covers the entire range 490 2 ISARangesOnly. This flag is for bridges on systems with multiple bridges. 491 Setting this bit means the memory window specified in this descriptor is 492 limited to the ISA I/O addresses that fall within the specified window. 493 The ISA I/O ranges are: n000-n0FF, n400-n4FF, n800-n8FF, nC00-nCFF. This 494 bit can only be set for bridges entirely configured through ACPI namespace. 495 1 NonISARangesOnly. This flag is for bridges on systems with multiple bridges. 496 Setting this bit means the memory window specified in this descriptor is 497 limited to the non-ISA I/O addresses that fall within the specified window. 498 The non-ISA I/O ranges are: n100-n3FF, n500-n7FF, n900-nBFF, nD00-nFFF. 499 This bit can only be set for bridges entirely configured through ACPI namespace. 500 0 Reserved 501 Byte 6 (Address space granularity, _GRA bits[7:0]): 502 A set bit in this mask means that this bit is decoded. All bits less 503 significant than the most significant set bit must be set. (in other 504 words, the value of the full Address Space Granularity field (all 16 505 bits) must be a number (2**n-1). 506 Byte 7 (Address space granularity, _GRA bits[15:8]) 507 Byte 8 (Address range minimum, _MIN bits [7:0]): 508 For bridges that translate addresses, this is the address space 509 on the secondary side of the bridge 510 Byte 9 (Address range minimum, _MIN bits[15:8]) 511 Byte 10 (Address range maximum, _MAX bits [7:0]): See comment for _MIN 512 Byte 11 (Address range maximum, _MAX bits[15:8]) 513 Byte 12 (Address Translation offset, _TRA bits [7:0]): 514 For bridges that translate addresses across the bridge, this is the 515 offset that must be added to the address on the secondary side to obtain 516 the address on the primary side. Non-bridge devices must list 0 for all 517 Address Translation offset bits 518 Byte 13 (Address Translation offset, _TRA bits[15:8]) 519 Byte 14 (Address Length, _LEN bits [7:0]) 520 Byte 15 (Address Length, _LEN bits[15:8]) 521 Byte 16 (Resource Source Index): 522 (Optional) Only present if Resource Source (below) is present. This 523 field gives an index to the specific resource descriptor that this 524 device consumes from in the current resource template for the device 525 object pointed to in Resource Source 526 String (Resource Source): 527 (Optional) If present, the device that uses this descriptor consumes 528 its resources from the resources produced by the named device object. 529 If not present, the device consumes its resources out of a global pool. 530 If not present, the device consumes this resource from its hierarchical 531 parent. 532 */ 533 Name (P421, Package (0x25) 534 { 535 /* Byte 4 (General Flags) of Word Address Space Descriptor */ 536 537 ResourceTemplate () 538 { 539 WordIO (ResourceProducer, MinNotFixed, MaxNotFixed, PosDecode, EntireRange, 540 0xF6F7, // Granularity 541 0xF8F9, // Range Minimum 542 0xFAFB, // Range Maximum 543 0xFCFD, // Translation Offset 544 0xFEFF, // Length 545 ,, , TypeStatic, DenseTranslation) 546 }, 547 548 ResourceTemplate () 549 { 550 WordIO (ResourceProducer, MinNotFixed, MaxNotFixed, SubDecode, EntireRange, 551 0xF6F7, // Granularity 552 0xF8F9, // Range Minimum 553 0xFAFB, // Range Maximum 554 0xFCFD, // Translation Offset 555 0xFEFF, // Length 556 ,, , TypeStatic, DenseTranslation) 557 }, 558 559 ResourceTemplate () 560 { 561 WordIO (ResourceProducer, MinNotFixed, MaxFixed, PosDecode, EntireRange, 562 0xF6F7, // Granularity 563 0xF8F9, // Range Minimum 564 0xFAFB, // Range Maximum 565 0xFCFD, // Translation Offset 566 0xFEFF, // Length 567 ,, , TypeStatic, DenseTranslation) 568 }, 569 570 ResourceTemplate () 571 { 572 WordIO (ResourceProducer, MinNotFixed, MaxFixed, SubDecode, EntireRange, 573 0xF6F7, // Granularity 574 0xF8F9, // Range Minimum 575 0xFAFB, // Range Maximum 576 0xFCFD, // Translation Offset 577 0xFEFF, // Length 578 ,, , TypeStatic, DenseTranslation) 579 }, 580 581 ResourceTemplate () 582 { 583 WordIO (ResourceProducer, MinFixed, MaxNotFixed, PosDecode, EntireRange, 584 0xF6F7, // Granularity 585 0xF8F9, // Range Minimum 586 0xFAFB, // Range Maximum 587 0xFCFD, // Translation Offset 588 0xFEFF, // Length 589 ,, , TypeStatic, DenseTranslation) 590 }, 591 592 ResourceTemplate () 593 { 594 WordIO (ResourceProducer, MinFixed, MaxNotFixed, SubDecode, EntireRange, 595 0xF6F7, // Granularity 596 0xF8F9, // Range Minimum 597 0xFAFB, // Range Maximum 598 0xFCFD, // Translation Offset 599 0xFEFF, // Length 600 ,, , TypeStatic, DenseTranslation) 601 }, 602 603 ResourceTemplate () 604 { 605 WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, 606 0xF6F7, // Granularity 607 0xF8F9, // Range Minimum 608 0xFAFB, // Range Maximum 609 0xFCFD, // Translation Offset 610 0xFEFF, // Length 611 ,, , TypeStatic, DenseTranslation) 612 }, 613 614 ResourceTemplate () 615 { 616 WordIO (ResourceProducer, MinFixed, MaxFixed, SubDecode, EntireRange, 617 0xF6F7, // Granularity 618 0xF8F9, // Range Minimum 619 0xFAFB, // Range Maximum 620 0xFCFD, // Translation Offset 621 0xFEFF, // Length 622 ,, , TypeStatic, DenseTranslation) 623 }, 624 625 ResourceTemplate () 626 { 627 WordIO (ResourceConsumer, MinNotFixed, MaxNotFixed, PosDecode, EntireRange, 628 0xF6F7, // Granularity 629 0xF8F9, // Range Minimum 630 0xFAFB, // Range Maximum 631 0xFCFD, // Translation Offset 632 0xFEFF, // Length 633 ,, , TypeStatic, DenseTranslation) 634 }, 635 636 ResourceTemplate () 637 { 638 WordIO (ResourceConsumer, MinNotFixed, MaxNotFixed, SubDecode, EntireRange, 639 0xF6F7, // Granularity 640 0xF8F9, // Range Minimum 641 0xFAFB, // Range Maximum 642 0xFCFD, // Translation Offset 643 0xFEFF, // Length 644 ,, , TypeStatic, DenseTranslation) 645 }, 646 647 ResourceTemplate () 648 { 649 WordIO (ResourceConsumer, MinNotFixed, MaxFixed, PosDecode, EntireRange, 650 0xF6F7, // Granularity 651 0xF8F9, // Range Minimum 652 0xFAFB, // Range Maximum 653 0xFCFD, // Translation Offset 654 0xFEFF, // Length 655 ,, , TypeStatic, DenseTranslation) 656 }, 657 658 ResourceTemplate () 659 { 660 WordIO (ResourceConsumer, MinNotFixed, MaxFixed, SubDecode, EntireRange, 661 0xF6F7, // Granularity 662 0xF8F9, // Range Minimum 663 0xFAFB, // Range Maximum 664 0xFCFD, // Translation Offset 665 0xFEFF, // Length 666 ,, , TypeStatic, DenseTranslation) 667 }, 668 669 ResourceTemplate () 670 { 671 WordIO (ResourceConsumer, MinFixed, MaxNotFixed, PosDecode, EntireRange, 672 0xF6F7, // Granularity 673 0xF8F9, // Range Minimum 674 0xFAFB, // Range Maximum 675 0xFCFD, // Translation Offset 676 0xFEFF, // Length 677 ,, , TypeStatic, DenseTranslation) 678 }, 679 680 ResourceTemplate () 681 { 682 WordIO (ResourceConsumer, MinFixed, MaxNotFixed, SubDecode, EntireRange, 683 0xF6F7, // Granularity 684 0xF8F9, // Range Minimum 685 0xFAFB, // Range Maximum 686 0xFCFD, // Translation Offset 687 0xFEFF, // Length 688 ,, , TypeStatic, DenseTranslation) 689 }, 690 691 ResourceTemplate () 692 { 693 WordIO (ResourceConsumer, MinFixed, MaxFixed, PosDecode, EntireRange, 694 0xF6F7, // Granularity 695 0xF8F9, // Range Minimum 696 0xFAFB, // Range Maximum 697 0xFCFD, // Translation Offset 698 0xFEFF, // Length 699 ,, , TypeStatic, DenseTranslation) 700 }, 701 702 ResourceTemplate () 703 { 704 WordIO (ResourceConsumer, MinFixed, MaxFixed, SubDecode, EntireRange, 705 0xF6F7, // Granularity 706 0xF8F9, // Range Minimum 707 0xFAFB, // Range Maximum 708 0xFCFD, // Translation Offset 709 0xFEFF, // Length 710 ,, , TypeStatic, DenseTranslation) 711 }, 712 713 /* Byte 5 (Type Specific Flags) of Word Address Space Descriptor */ 714 715 ResourceTemplate () 716 { 717 WordIO (ResourceConsumer, MinNotFixed, MaxNotFixed, PosDecode, NonISAOnlyRanges, 718 0xF6F7, // Granularity 719 0xF8F9, // Range Minimum 720 0xFAFB, // Range Maximum 721 0xFCFD, // Translation Offset 722 0xFEFF, // Length 723 ,, , TypeStatic, DenseTranslation) 724 }, 725 726 ResourceTemplate () 727 { 728 WordIO (ResourceConsumer, MinNotFixed, MaxNotFixed, PosDecode, NonISAOnlyRanges, 729 0xF6F7, // Granularity 730 0xF8F9, // Range Minimum 731 0xFAFB, // Range Maximum 732 0xFCFD, // Translation Offset 733 0xFEFF, // Length 734 ,, , TypeStatic, SparseTranslation) 735 }, 736 737 ResourceTemplate () 738 { 739 WordIO (ResourceConsumer, MinNotFixed, MaxNotFixed, PosDecode, NonISAOnlyRanges, 740 0xF6F7, // Granularity 741 0xF8F9, // Range Minimum 742 0xFAFB, // Range Maximum 743 0xFCFD, // Translation Offset 744 0xFEFF, // Length 745 ,, , TypeTranslation, DenseTranslation) 746 }, 747 748 ResourceTemplate () 749 { 750 WordIO (ResourceConsumer, MinNotFixed, MaxNotFixed, PosDecode, NonISAOnlyRanges, 751 0xF6F7, // Granularity 752 0xF8F9, // Range Minimum 753 0xFAFB, // Range Maximum 754 0xFCFD, // Translation Offset 755 0xFEFF, // Length 756 ,, , TypeTranslation, SparseTranslation) 757 }, 758 759 ResourceTemplate () 760 { 761 WordIO (ResourceConsumer, MinNotFixed, MaxNotFixed, PosDecode, ISAOnlyRanges, 762 0xF6F7, // Granularity 763 0xF8F9, // Range Minimum 764 0xFAFB, // Range Maximum 765 0xFCFD, // Translation Offset 766 0xFEFF, // Length 767 ,, , TypeStatic, DenseTranslation) 768 }, 769 770 ResourceTemplate () 771 { 772 WordIO (ResourceConsumer, MinNotFixed, MaxNotFixed, PosDecode, ISAOnlyRanges, 773 0xF6F7, // Granularity 774 0xF8F9, // Range Minimum 775 0xFAFB, // Range Maximum 776 0xFCFD, // Translation Offset 777 0xFEFF, // Length 778 ,, , TypeStatic, SparseTranslation) 779 }, 780 781 ResourceTemplate () 782 { 783 WordIO (ResourceConsumer, MinNotFixed, MaxNotFixed, PosDecode, ISAOnlyRanges, 784 0xF6F7, // Granularity 785 0xF8F9, // Range Minimum 786 0xFAFB, // Range Maximum 787 0xFCFD, // Translation Offset 788 0xFEFF, // Length 789 ,, , TypeTranslation, DenseTranslation) 790 }, 791 792 ResourceTemplate () 793 { 794 WordIO (ResourceConsumer, MinNotFixed, MaxNotFixed, PosDecode, ISAOnlyRanges, 795 0xF6F7, // Granularity 796 0xF8F9, // Range Minimum 797 0xFAFB, // Range Maximum 798 0xFCFD, // Translation Offset 799 0xFEFF, // Length 800 ,, , TypeTranslation, SparseTranslation) 801 }, 802 803 ResourceTemplate () 804 { 805 WordIO (ResourceConsumer, MinNotFixed, MaxNotFixed, PosDecode, EntireRange, 806 0xF6F7, // Granularity 807 0xF8F9, // Range Minimum 808 0xFAFB, // Range Maximum 809 0xFCFD, // Translation Offset 810 0xFEFF, // Length 811 ,, , TypeStatic, DenseTranslation) 812 }, 813 814 ResourceTemplate () 815 { 816 WordIO (ResourceConsumer, MinNotFixed, MaxNotFixed, PosDecode, EntireRange, 817 0xF6F7, // Granularity 818 0xF8F9, // Range Minimum 819 0xFAFB, // Range Maximum 820 0xFCFD, // Translation Offset 821 0xFEFF, // Length 822 ,, , TypeStatic, SparseTranslation) 823 }, 824 825 ResourceTemplate () 826 { 827 WordIO (ResourceConsumer, MinNotFixed, MaxNotFixed, PosDecode, EntireRange, 828 0xF6F7, // Granularity 829 0xF8F9, // Range Minimum 830 0xFAFB, // Range Maximum 831 0xFCFD, // Translation Offset 832 0xFEFF, // Length 833 ,, , TypeTranslation, DenseTranslation) 834 }, 835 836 ResourceTemplate () 837 { 838 WordIO (ResourceConsumer, MinNotFixed, MaxNotFixed, PosDecode, EntireRange, 839 0xF6F7, // Granularity 840 0xF8F9, // Range Minimum 841 0xFAFB, // Range Maximum 842 0xFCFD, // Translation Offset 843 0xFEFF, // Length 844 ,, , TypeTranslation, SparseTranslation) 845 }, 846 847 /* Particular cases */ 848 849 ResourceTemplate () 850 { 851 WordIO (ResourceConsumer, MinNotFixed, MaxNotFixed, PosDecode, EntireRange, 852 0xF6F7, // Granularity 853 0xF8F9, // Range Minimum 854 0xFAFB, // Range Maximum 855 0xFCFD, // Translation Offset 856 0xFEFF, // Length 857 ,, , TypeStatic, DenseTranslation) 858 }, 859 860 ResourceTemplate () 861 { 862 WordIO (ResourceConsumer, MinNotFixed, MaxNotFixed, PosDecode, EntireRange, 863 0xF6F7, // Granularity 864 0xF8F9, // Range Minimum 865 0xFAFB, // Range Maximum 866 0xFCFD, // Translation Offset 867 0xFEFF, // Length 868 ,, , TypeStatic, DenseTranslation) 869 }, 870 871 /* Resource Source */ 872 873 ResourceTemplate () 874 { 875 WordIO (ResourceConsumer, MinNotFixed, MaxNotFixed, PosDecode, EntireRange, 876 0xF6F7, // Granularity 877 0xF8F9, // Range Minimum 878 0xFAFB, // Range Maximum 879 0xFCFD, // Translation Offset 880 0xFEFF, // Length 881 0x01, "", , TypeStatic, DenseTranslation) 882 }, 883 884 ResourceTemplate () 885 { 886 WordIO (ResourceConsumer, MinNotFixed, MaxNotFixed, PosDecode, EntireRange, 887 0xF6F7, // Granularity 888 0xF8F9, // Range Minimum 889 0xFAFB, // Range Maximum 890 0xFCFD, // Translation Offset 891 0xFEFF, // Length 892 0x0F, "P", , TypeStatic, DenseTranslation) 893 }, 894 895 ResourceTemplate () 896 { 897 WordIO (ResourceConsumer, MinNotFixed, MaxNotFixed, PosDecode, EntireRange, 898 0xF6F7, // Granularity 899 0xF8F9, // Range Minimum 900 0xFAFB, // Range Maximum 901 0xFCFD, // Translation Offset 902 0xFEFF, // Length 903 0xF0, "PATH", , TypeStatic, DenseTranslation) 904 }, 905 906 ResourceTemplate () 907 { 908 WordIO (ResourceConsumer, MinNotFixed, MaxNotFixed, PosDecode, EntireRange, 909 0xF6F7, // Granularity 910 0xF8F9, // Range Minimum 911 0xFAFB, // Range Maximum 912 0xFCFD, // Translation Offset 913 0xFEFF, // Length 914 0xFF, "!\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !\"#$%&\'()*", , TypeStatic, DenseTranslation) 915 }, 916 917 /* Particular cases */ 918 919 ResourceTemplate () 920 { 921 WordIO (ResourceConsumer, MinFixed, MaxFixed, SubDecode, EntireRange, 922 0xF6F7, // Granularity 923 0xF8F9, // Range Minimum 924 0xFAFB, // Range Maximum 925 0xFCFD, // Translation Offset 926 0xFEFF, // Length 927 0xFF, "PATHPATHPATH", , TypeTranslation, SparseTranslation) 928 }, 929 930 ResourceTemplate () 931 { 932 WordIO (ResourceConsumer, MinFixed, MaxFixed, SubDecode, EntireRange, 933 0x0000, // Granularity 934 0x0000, // Range Minimum 935 0x0000, // Range Maximum 936 0x0000, // Translation Offset 937 0x0000, // Length 938 0xFF, "PATHPATHPATH", , TypeTranslation, SparseTranslation) 939 }, 940 941 /* 20051021, relaxation for omitted ResourceSource (bug-fix 70 rejection) */ 942 943 ResourceTemplate () 944 { 945 WordIO (ResourceConsumer, MinNotFixed, MaxNotFixed, PosDecode, EntireRange, 946 0xF6F7, // Granularity 947 0xF8F9, // Range Minimum 948 0xFAFB, // Range Maximum 949 0xFCFD, // Translation Offset 950 0xFEFF, // Length 951 0x0F,, , TypeStatic, DenseTranslation) 952 } 953 }) 954 Method (RT0E, 0, Serialized) 955 { 956 /* Emit test header, set the filename */ 957 958 THDR (__METHOD__, "WordIO Resource Descriptor Macro", "wordio.asl") 959 /* Main test case for packages above */ 960 961 M330 (__METHOD__, 0x25, "p420", P420, P421) 962 /* Check resource descriptor tag offsets */ 963 964 Local0 = ResourceTemplate () 965 { 966 WordIO (ResourceProducer, MinNotFixed, MaxNotFixed, PosDecode, EntireRange, 967 0xF6F7, // Granularity 968 0xF8F9, // Range Minimum 969 0xFAFB, // Range Maximum 970 0xFCFD, // Translation Offset 971 0xFEFF, // Length 972 ,, , TypeStatic, DenseTranslation) 973 WordIO (ResourceConsumer, MinNotFixed, MaxNotFixed, PosDecode, EntireRange, 974 0xF6F7, // Granularity 975 0xF8F9, // Range Minimum 976 0xFAFB, // Range Maximum 977 0xFCFD, // Translation Offset 978 0xFEFF, // Length 979 ,, , TypeStatic, DenseTranslation) 980 } 981 M331 (__METHOD__, 0x01, 0x21, 0x21, 0xA1, 0xA1, "_DEC") 982 M331 (__METHOD__, 0x02, 0x22, 0x22, 0xA2, 0xA2, "_MIF") 983 M331 (__METHOD__, 0x03, 0x23, 0x23, 0xA3, 0xA3, "_MAF") 984 M331 (__METHOD__, 0x04, 0x28, 0x28, 0xA8, 0xA8, "_RNG") 985 M331 (__METHOD__, 0x05, 0x2C, 0x2C, 0xAC, 0xAC, "_TTP") 986 M331 (__METHOD__, 0x06, 0x2D, 0x2D, 0xAD, 0xAD, "_TRS") 987 M331 (__METHOD__, 0x07, 0x30, 0x30, 0xB0, 0xB0, "_GRA") 988 M331 (__METHOD__, 0x08, 0x40, 0x40, 0xC0, 0xC0, "_MIN") 989 M331 (__METHOD__, 0x09, 0x50, 0x50, 0xD0, 0xD0, "_MAX") 990 M331 (__METHOD__, 0x0A, 0x60, 0x60, 0xE0, 0xE0, "_TRA") 991 M331 (__METHOD__, 0x0B, 0x70, 0x70, 0xF0, 0xF0, "_LEN") 992 } 993