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