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