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