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 Space Resource Descriptor Macro
32     */
33    Name (P432, Package (0x18)
34    {
35        ResourceTemplate ()
36        {
37            ExtendedSpace (0xC0, ResourceProducer, PosDecode, MinNotFixed, MaxNotFixed, 0x0A,
38                0xD0D1D2D3D4D5D6D7, // Granularity
39                0xD8D9DADBDCDDDEDF, // Range Minimum
40                0xE0E1E2E3E4E5E6E7, // Range Maximum
41                0xE8E9EAEBECEDEEEF, // Translation Offset
42                0xF0F1F2F3F4F5F6F7, // Length
43                0xF8F9FAFBFCFDFEFF, // Type-Specific Attributes
44                )
45        },
46
47        ResourceTemplate ()
48        {
49            ExtendedSpace (0xC1, ResourceProducer, PosDecode, MinNotFixed, MaxFixed, 0x1A,
50                0xD0D1D2D3D4D5D6D7, // Granularity
51                0xD8D9DADBDCDDDEDF, // Range Minimum
52                0xE0E1E2E3E4E5E6E7, // Range Maximum
53                0xE8E9EAEBECEDEEEF, // Translation Offset
54                0xF0F1F2F3F4F5F6F7, // Length
55                0xF8F9FAFBFCFDFEFF, // Type-Specific Attributes
56                )
57        },
58
59        ResourceTemplate ()
60        {
61            ExtendedSpace (0xC2, ResourceProducer, PosDecode, MinFixed, MaxNotFixed, 0x2A,
62                0xD0D1D2D3D4D5D6D7, // Granularity
63                0xD8D9DADBDCDDDEDF, // Range Minimum
64                0xE0E1E2E3E4E5E6E7, // Range Maximum
65                0xE8E9EAEBECEDEEEF, // Translation Offset
66                0xF0F1F2F3F4F5F6F7, // Length
67                0xF8F9FAFBFCFDFEFF, // Type-Specific Attributes
68                )
69        },
70
71        ResourceTemplate ()
72        {
73            ExtendedSpace (0xC3, ResourceProducer, PosDecode, MinFixed, MaxFixed, 0x3A,
74                0xD0D1D2D3D4D5D6D7, // Granularity
75                0xD8D9DADBDCDDDEDF, // Range Minimum
76                0xE0E1E2E3E4E5E6E7, // Range Maximum
77                0xE8E9EAEBECEDEEEF, // Translation Offset
78                0xF0F1F2F3F4F5F6F7, // Length
79                0xF8F9FAFBFCFDFEFF, // Type-Specific Attributes
80                )
81        },
82
83        ResourceTemplate ()
84        {
85            ExtendedSpace (0xC4, ResourceProducer, SubDecode, MinNotFixed, MaxNotFixed, 0x4A,
86                0xD0D1D2D3D4D5D6D7, // Granularity
87                0xD8D9DADBDCDDDEDF, // Range Minimum
88                0xE0E1E2E3E4E5E6E7, // Range Maximum
89                0xE8E9EAEBECEDEEEF, // Translation Offset
90                0xF0F1F2F3F4F5F6F7, // Length
91                0xF8F9FAFBFCFDFEFF, // Type-Specific Attributes
92                )
93        },
94
95        ResourceTemplate ()
96        {
97            ExtendedSpace (0xC5, ResourceProducer, SubDecode, MinNotFixed, MaxFixed, 0x5A,
98                0xD0D1D2D3D4D5D6D7, // Granularity
99                0xD8D9DADBDCDDDEDF, // Range Minimum
100                0xE0E1E2E3E4E5E6E7, // Range Maximum
101                0xE8E9EAEBECEDEEEF, // Translation Offset
102                0xF0F1F2F3F4F5F6F7, // Length
103                0xF8F9FAFBFCFDFEFF, // Type-Specific Attributes
104                )
105        },
106
107        ResourceTemplate ()
108        {
109            ExtendedSpace (0xC6, ResourceProducer, SubDecode, MinFixed, MaxNotFixed, 0x6A,
110                0xD0D1D2D3D4D5D6D7, // Granularity
111                0xD8D9DADBDCDDDEDF, // Range Minimum
112                0xE0E1E2E3E4E5E6E7, // Range Maximum
113                0xE8E9EAEBECEDEEEF, // Translation Offset
114                0xF0F1F2F3F4F5F6F7, // Length
115                0xF8F9FAFBFCFDFEFF, // Type-Specific Attributes
116                )
117        },
118
119        ResourceTemplate ()
120        {
121            ExtendedSpace (0xC7, ResourceProducer, SubDecode, MinFixed, MaxFixed, 0x7A,
122                0xD0D1D2D3D4D5D6D7, // Granularity
123                0xD8D9DADBDCDDDEDF, // Range Minimum
124                0xE0E1E2E3E4E5E6E7, // Range Maximum
125                0xE8E9EAEBECEDEEEF, // Translation Offset
126                0xF0F1F2F3F4F5F6F7, // Length
127                0xF8F9FAFBFCFDFEFF, // Type-Specific Attributes
128                )
129        },
130
131        ResourceTemplate ()
132        {
133            ExtendedSpace (0xC8, ResourceConsumer, PosDecode, MinNotFixed, MaxNotFixed, 0x8A,
134                0xD0D1D2D3D4D5D6D7, // Granularity
135                0xD8D9DADBDCDDDEDF, // Range Minimum
136                0xE0E1E2E3E4E5E6E7, // Range Maximum
137                0xE8E9EAEBECEDEEEF, // Translation Offset
138                0xF0F1F2F3F4F5F6F7, // Length
139                0xF8F9FAFBFCFDFEFF, // Type-Specific Attributes
140                )
141        },
142
143        ResourceTemplate ()
144        {
145            ExtendedSpace (0xC9, ResourceConsumer, PosDecode, MinNotFixed, MaxFixed, 0x9A,
146                0xD0D1D2D3D4D5D6D7, // Granularity
147                0xD8D9DADBDCDDDEDF, // Range Minimum
148                0xE0E1E2E3E4E5E6E7, // Range Maximum
149                0xE8E9EAEBECEDEEEF, // Translation Offset
150                0xF0F1F2F3F4F5F6F7, // Length
151                0xF8F9FAFBFCFDFEFF, // Type-Specific Attributes
152                )
153        },
154
155        ResourceTemplate ()
156        {
157            ExtendedSpace (0xCA, ResourceConsumer, PosDecode, MinFixed, MaxNotFixed, 0xAA,
158                0xD0D1D2D3D4D5D6D7, // Granularity
159                0xD8D9DADBDCDDDEDF, // Range Minimum
160                0xE0E1E2E3E4E5E6E7, // Range Maximum
161                0xE8E9EAEBECEDEEEF, // Translation Offset
162                0xF0F1F2F3F4F5F6F7, // Length
163                0xF8F9FAFBFCFDFEFF, // Type-Specific Attributes
164                )
165        },
166
167        ResourceTemplate ()
168        {
169            ExtendedSpace (0xCB, ResourceConsumer, PosDecode, MinFixed, MaxFixed, 0xBA,
170                0xD0D1D2D3D4D5D6D7, // Granularity
171                0xD8D9DADBDCDDDEDF, // Range Minimum
172                0xE0E1E2E3E4E5E6E7, // Range Maximum
173                0xE8E9EAEBECEDEEEF, // Translation Offset
174                0xF0F1F2F3F4F5F6F7, // Length
175                0xF8F9FAFBFCFDFEFF, // Type-Specific Attributes
176                )
177        },
178
179        ResourceTemplate ()
180        {
181            ExtendedSpace (0xCC, ResourceConsumer, SubDecode, MinNotFixed, MaxNotFixed, 0xCA,
182                0xD0D1D2D3D4D5D6D7, // Granularity
183                0xD8D9DADBDCDDDEDF, // Range Minimum
184                0xE0E1E2E3E4E5E6E7, // Range Maximum
185                0xE8E9EAEBECEDEEEF, // Translation Offset
186                0xF0F1F2F3F4F5F6F7, // Length
187                0xF8F9FAFBFCFDFEFF, // Type-Specific Attributes
188                )
189        },
190
191        ResourceTemplate ()
192        {
193            ExtendedSpace (0xCD, ResourceConsumer, SubDecode, MinNotFixed, MaxFixed, 0xDA,
194                0xD0D1D2D3D4D5D6D7, // Granularity
195                0xD8D9DADBDCDDDEDF, // Range Minimum
196                0xE0E1E2E3E4E5E6E7, // Range Maximum
197                0xE8E9EAEBECEDEEEF, // Translation Offset
198                0xF0F1F2F3F4F5F6F7, // Length
199                0xF8F9FAFBFCFDFEFF, // Type-Specific Attributes
200                )
201        },
202
203        ResourceTemplate ()
204        {
205            ExtendedSpace (0xCE, ResourceConsumer, SubDecode, MinFixed, MaxNotFixed, 0xEA,
206                0xD0D1D2D3D4D5D6D7, // Granularity
207                0xD8D9DADBDCDDDEDF, // Range Minimum
208                0xE0E1E2E3E4E5E6E7, // Range Maximum
209                0xE8E9EAEBECEDEEEF, // Translation Offset
210                0xF0F1F2F3F4F5F6F7, // Length
211                0xF8F9FAFBFCFDFEFF, // Type-Specific Attributes
212                )
213        },
214
215        ResourceTemplate ()
216        {
217            ExtendedSpace (0xFF, ResourceConsumer, SubDecode, MinFixed, MaxFixed, 0xFA,
218                0xD0D1D2D3D4D5D6D7, // Granularity
219                0xD8D9DADBDCDDDEDF, // Range Minimum
220                0xE0E1E2E3E4E5E6E7, // Range Maximum
221                0xE8E9EAEBECEDEEEF, // Translation Offset
222                0xF0F1F2F3F4F5F6F7, // Length
223                0xF8F9FAFBFCFDFEFF, // Type-Specific Attributes
224                )
225        },
226
227        ResourceTemplate ()
228        {
229            ExtendedSpace (0xC0, ResourceConsumer, PosDecode, MinNotFixed, MaxNotFixed, 0x00,
230                0xD0D1D2D3D4D5D6D7, // Granularity
231                0xD8D9DADBDCDDDEDF, // Range Minimum
232                0xE0E1E2E3E4E5E6E7, // Range Maximum
233                0xE8E9EAEBECEDEEEF, // Translation Offset
234                0xF0F1F2F3F4F5F6F7, // Length
235                0xF8F9FAFBFCFDFEFF, // Type-Specific Attributes
236                )
237        },
238
239        ResourceTemplate ()
240        {
241            ExtendedSpace (0xC0, ResourceConsumer, PosDecode, MinNotFixed, MaxNotFixed, 0xFF,
242                0xD0D1D2D3D4D5D6D7, // Granularity
243                0xD8D9DADBDCDDDEDF, // Range Minimum
244                0xE0E1E2E3E4E5E6E7, // Range Maximum
245                0xE8E9EAEBECEDEEEF, // Translation Offset
246                0xF0F1F2F3F4F5F6F7, // Length
247                0xF8F9FAFBFCFDFEFF, // Type-Specific Attributes
248                )
249        },
250
251        ResourceTemplate ()
252        {
253            ExtendedSpace (0xC0, ResourceConsumer, PosDecode, MinNotFixed, MaxNotFixed, 0x5A,
254                0xD0D1D2D3D4D5D6D7, // Granularity
255                0xD8D9DADBDCDDDEDF, // Range Minimum
256                0xE0E1E2E3E4E5E6E7, // Range Maximum
257                0xE8E9EAEBECEDEEEF, // Translation Offset
258                0xF0F1F2F3F4F5F6F7, // Length
259                0xF8F9FAFBFCFDFEFF, // Type-Specific Attributes
260                )
261        },
262
263        ResourceTemplate ()
264        {
265            ExtendedSpace (0xC0, ResourceConsumer, PosDecode, MinNotFixed, MaxNotFixed, 0x5A,
266                0xD0D1D2D3D4D5D6D7, // Granularity
267                0xD8D9DADBDCDDDEDF, // Range Minimum
268                0xE0E1E2E3E4E5E6E7, // Range Maximum
269                0xE8E9EAEBECEDEEEF, // Translation Offset
270                0xF0F1F2F3F4F5F6F7, // Length
271                0x0000000000000000, // Type-Specific Attributes
272                )
273        },
274
275        ResourceTemplate ()
276        {
277            ExtendedSpace (0xC0, ResourceConsumer, PosDecode, MinNotFixed, MaxNotFixed, 0x5A,
278                0xD0D1D2D3D4D5D6D7, // Granularity
279                0xD8D9DADBDCDDDEDF, // Range Minimum
280                0xE0E1E2E3E4E5E6E7, // Range Maximum
281                0xE8E9EAEBECEDEEEF, // Translation Offset
282                0xF0F1F2F3F4F5F6F7, // Length
283                0xF8F9FAFBFCFDFEFF, // Type-Specific Attributes
284                )
285        },
286
287        ResourceTemplate ()
288        {
289            ExtendedSpace (0xC0, ResourceConsumer, PosDecode, MinNotFixed, MaxNotFixed, 0x5A,
290                0xD0D1D2D3D4D5D6D7, // Granularity
291                0xD8D9DADBDCDDDEDF, // Range Minimum
292                0xE0E1E2E3E4E5E6E7, // Range Maximum
293                0xE8E9EAEBECEDEEEF, // Translation Offset
294                0xF0F1F2F3F4F5F6F7, // Length
295                0x0000000000000000, // Type-Specific Attributes
296                )
297        },
298
299        ResourceTemplate ()
300        {
301            ExtendedSpace (0xC0, ResourceConsumer, SubDecode, MinFixed, MaxFixed, 0x5A,
302                0xD0D1D2D3D4D5D6D7, // Granularity
303                0xD8D9DADBDCDDDEDF, // Range Minimum
304                0xE0E1E2E3E4E5E6E7, // Range Maximum
305                0xE8E9EAEBECEDEEEF, // Translation Offset
306                0xF0F1F2F3F4F5F6F7, // Length
307                0xF8F9FAFBFCFDFEFF, // Type-Specific Attributes
308                )
309        },
310
311        ResourceTemplate ()
312        {
313            ExtendedSpace (0xC0, ResourceConsumer, SubDecode, MinFixed, MaxFixed, 0x00,
314                0x0000000000000000, // Granularity
315                0x0000000000000000, // Range Minimum
316                0x0000000000000000, // Range Maximum
317                0x0000000000000000, // Translation Offset
318                0x0000000000000000, // Length
319                0x0000000000000000, // Type-Specific Attributes
320                )
321        }
322    })
323    /*
324     ACPI Specification, Revision 3.0, September 2, 2004
325     6.4.3.5.4   Extended Address Space Descriptor
326     Space Extended Address Space Descriptor layout:
327     Byte 0 (Tag Bits): Value=10001011B (0x8b) (Type = 1, Large item name = 0xB)
328     Byte 1 (Length, bits[7:0]): Variable: Value = 53 (minimum)
329     Byte 2 (Length, bits[15:8]): Variable: Value = 0 (minimum)
330     Byte 3 (Resource Type):
331     192-255	Hardware Vendor Defined
332     Byte 4 (General Flags):
333     Bits[7:4] 	Reserved (must be 0)
334     Bit[3] 		Min Address Fixed, _MAF:
335     1	The specified maximum address is fixed
336     0	The specified maximum address is not fixed
337     and can be changed
338     Bit[2] 		Max Address Fixed,_MIF:
339     1	The specified minimum address is fixed
340     0	The specified minimum address is not fixed
341     and can be changed
342     Bit[1] 		Decode Type, _DEC:
343     1	This bridge subtractively decodes this address
344     (top level bridges only)
345     0	This bridge positively decodes this address
346     Bit[0] 		Consumer/Producer:
347     1-This device consumes this resource
348     0-This device produces and consumes this resource
349     Byte 5 (Type Specific Flags):
350     Flags that are specific to each resource type. The meaning of the flags
351     in this field depends on the value of the Resource Type field (see above)
352     Byte 6 (Revision ID):
353     Indicates the revision of the Extended Address Space descriptor.
354     For ACPI 3.0, this value is 1.
355     Byte 7 (Reserved): 0
356     Byte 8 (Address space granularity, _GRA bits[7:0]):
357     A set bit in this mask means that this bit is decoded. All bits less
358     significant than the most significant set bit must be set. (in other
359     words, the value of the full Address Space Granularity field (all 32
360     bits) must be a number (2**n-1).
361     Byte 9 (Address space granularity, _GRA bits[15:8])
362     Byte 10 (Address space granularity, _GRA bits[23:16])
363     Byte 11 (Address space granularity, _GRA bits[31:24])
364     Byte 12 (Address space granularity, _GRA bits[39:32])
365     Byte 13 (Address space granularity, _GRA bits[47:40])
366     Byte 14 (Address space granularity, _GRA bits[55:48])
367     Byte 15 (Address space granularity, _GRA bits[63:56])
368     Byte 16 (Address range minimum, _MIN bits [7:0]):
369     For bridges that translate addresses, this is the address space
370     on the secondary side of the bridge
371     Byte 17 (Address range minimum, _MIN bits[15:8])
372     Byte 18 (Address range minimum, _MIN bits[23:16])
373     Byte 19 (Address range minimum, _MIN bits[31:24])
374     Byte 20 (Address range minimum, _MIN bits[39:32])
375     Byte 21 (Address range minimum, _MIN bits[47:40])
376     Byte 22 (Address range minimum, _MIN bits[55:48])
377     Byte 23 (Address range minimum, _MIN bits[63:56])
378     Byte 24 (Address range maximum, _MAX bits [7:0]): See comment for _MIN
379     Byte 25 (Address range maximum, _MAX bits[15:8])
380     Byte 26 (Address range maximum, _MAX bits[23:16])
381     Byte 27 (Address range maximum, _MAX bits[31:24])
382     Byte 28 (Address range maximum, _MAX bits[39:32])
383     Byte 29 (Address range maximum, _MAX bits[47:40])
384     Byte 30 (Address range maximum, _MAX bits[55:48])
385     Byte 31 (Address range maximum, _MAX bits[63:56])
386     Byte 32 (Address Translation offset, _TRA bits [7:0]):
387     For bridges that translate addresses across the bridge, this is the
388     offset that must be added to the address on the secondary side to obtain
389     the address on the primary side. Non-bridge devices must list 0 for all
390     Address Translation offset bits
391     Byte 33 (Address Translation offset, _TRA bits[15:8])
392     Byte 34 (Address Translation offset, _TRA bits[23:16])
393     Byte 35 (Address Translation offset, _TRA bits[31:24])
394     Byte 36 (Address Translation offset, _TRA bits[39:32])
395     Byte 37 (Address Translation offset, _TRA bits[47:40])
396     Byte 38 (Address Translation offset, _TRA bits[55:48])
397     Byte 39 (Address Translation offset, _TRA bits[63:56])
398     Byte 40 (Address Length, _LEN bits [7:0])
399     Byte 41 (Address Length, _LEN bits[15:8])
400     Byte 42 (Address Length, _LEN bits[23:16])
401     Byte 43 (Address Length, _LEN bits[31:24])
402     Byte 44 (Address Length, _LEN bits[39:32])
403     Byte 45 (Address Length, _LEN bits[47:40])
404     Byte 46 (Address Length, _LEN bits[55:48])
405     Byte 47 (Address Length, _LEN bits[63:56])
406     Byte 48 (Type Specific Attribute, _ATT bits [7:0]):
407     Attributes that are specific to each resource type. The meaning
408     of the attributes in this field depends on the value of the Resource
409     Type field (see above). For the Memory Resource Type, the definition
410     is defined section 6.4.3.5.4.1. For other Resource Types, this field
411     is reserved to 0
412     Byte 49 (Type Specific Attribute, _ATT bits[15:8])
413     Byte 50 (Type Specific Attribute, _ATT bits[23:16])
414     Byte 51 (Type Specific Attribute, _ATT bits[31:24])
415     Byte 52 (Type Specific Attribute, _ATT bits[39:32])
416     Byte 53 (Type Specific Attribute, _ATT bits[47:40])
417     Byte 54 (Type Specific Attribute, _ATT bits[55:48])
418     Byte 55 (Type Specific Attribute, _ATT bits[63:56])
419     */
420    Name (P433, Package (0x18)
421    {
422        /* Byte 4 (General Flags) of Extended Address Space Descriptor */
423
424        ResourceTemplate ()
425        {
426            ExtendedSpace (0xC0, ResourceProducer, PosDecode, MinNotFixed, MaxNotFixed, 0x0A,
427                0xD0D1D2D3D4D5D6D7, // Granularity
428                0xD8D9DADBDCDDDEDF, // Range Minimum
429                0xE0E1E2E3E4E5E6E7, // Range Maximum
430                0xE8E9EAEBECEDEEEF, // Translation Offset
431                0xF0F1F2F3F4F5F6F7, // Length
432                0xF8F9FAFBFCFDFEFF, // Type-Specific Attributes
433                )
434        },
435
436        ResourceTemplate ()
437        {
438            ExtendedSpace (0xC1, ResourceProducer, PosDecode, MinNotFixed, MaxFixed, 0x1A,
439                0xD0D1D2D3D4D5D6D7, // Granularity
440                0xD8D9DADBDCDDDEDF, // Range Minimum
441                0xE0E1E2E3E4E5E6E7, // Range Maximum
442                0xE8E9EAEBECEDEEEF, // Translation Offset
443                0xF0F1F2F3F4F5F6F7, // Length
444                0xF8F9FAFBFCFDFEFF, // Type-Specific Attributes
445                )
446        },
447
448        ResourceTemplate ()
449        {
450            ExtendedSpace (0xC2, ResourceProducer, PosDecode, MinFixed, MaxNotFixed, 0x2A,
451                0xD0D1D2D3D4D5D6D7, // Granularity
452                0xD8D9DADBDCDDDEDF, // Range Minimum
453                0xE0E1E2E3E4E5E6E7, // Range Maximum
454                0xE8E9EAEBECEDEEEF, // Translation Offset
455                0xF0F1F2F3F4F5F6F7, // Length
456                0xF8F9FAFBFCFDFEFF, // Type-Specific Attributes
457                )
458        },
459
460        ResourceTemplate ()
461        {
462            ExtendedSpace (0xC3, ResourceProducer, PosDecode, MinFixed, MaxFixed, 0x3A,
463                0xD0D1D2D3D4D5D6D7, // Granularity
464                0xD8D9DADBDCDDDEDF, // Range Minimum
465                0xE0E1E2E3E4E5E6E7, // Range Maximum
466                0xE8E9EAEBECEDEEEF, // Translation Offset
467                0xF0F1F2F3F4F5F6F7, // Length
468                0xF8F9FAFBFCFDFEFF, // Type-Specific Attributes
469                )
470        },
471
472        ResourceTemplate ()
473        {
474            ExtendedSpace (0xC4, ResourceProducer, SubDecode, MinNotFixed, MaxNotFixed, 0x4A,
475                0xD0D1D2D3D4D5D6D7, // Granularity
476                0xD8D9DADBDCDDDEDF, // Range Minimum
477                0xE0E1E2E3E4E5E6E7, // Range Maximum
478                0xE8E9EAEBECEDEEEF, // Translation Offset
479                0xF0F1F2F3F4F5F6F7, // Length
480                0xF8F9FAFBFCFDFEFF, // Type-Specific Attributes
481                )
482        },
483
484        ResourceTemplate ()
485        {
486            ExtendedSpace (0xC5, ResourceProducer, SubDecode, MinNotFixed, MaxFixed, 0x5A,
487                0xD0D1D2D3D4D5D6D7, // Granularity
488                0xD8D9DADBDCDDDEDF, // Range Minimum
489                0xE0E1E2E3E4E5E6E7, // Range Maximum
490                0xE8E9EAEBECEDEEEF, // Translation Offset
491                0xF0F1F2F3F4F5F6F7, // Length
492                0xF8F9FAFBFCFDFEFF, // Type-Specific Attributes
493                )
494        },
495
496        ResourceTemplate ()
497        {
498            ExtendedSpace (0xC6, ResourceProducer, SubDecode, MinFixed, MaxNotFixed, 0x6A,
499                0xD0D1D2D3D4D5D6D7, // Granularity
500                0xD8D9DADBDCDDDEDF, // Range Minimum
501                0xE0E1E2E3E4E5E6E7, // Range Maximum
502                0xE8E9EAEBECEDEEEF, // Translation Offset
503                0xF0F1F2F3F4F5F6F7, // Length
504                0xF8F9FAFBFCFDFEFF, // Type-Specific Attributes
505                )
506        },
507
508        ResourceTemplate ()
509        {
510            ExtendedSpace (0xC7, ResourceProducer, SubDecode, MinFixed, MaxFixed, 0x7A,
511                0xD0D1D2D3D4D5D6D7, // Granularity
512                0xD8D9DADBDCDDDEDF, // Range Minimum
513                0xE0E1E2E3E4E5E6E7, // Range Maximum
514                0xE8E9EAEBECEDEEEF, // Translation Offset
515                0xF0F1F2F3F4F5F6F7, // Length
516                0xF8F9FAFBFCFDFEFF, // Type-Specific Attributes
517                )
518        },
519
520        ResourceTemplate ()
521        {
522            ExtendedSpace (0xC8, ResourceConsumer, PosDecode, MinNotFixed, MaxNotFixed, 0x8A,
523                0xD0D1D2D3D4D5D6D7, // Granularity
524                0xD8D9DADBDCDDDEDF, // Range Minimum
525                0xE0E1E2E3E4E5E6E7, // Range Maximum
526                0xE8E9EAEBECEDEEEF, // Translation Offset
527                0xF0F1F2F3F4F5F6F7, // Length
528                0xF8F9FAFBFCFDFEFF, // Type-Specific Attributes
529                )
530        },
531
532        ResourceTemplate ()
533        {
534            ExtendedSpace (0xC9, ResourceConsumer, PosDecode, MinNotFixed, MaxFixed, 0x9A,
535                0xD0D1D2D3D4D5D6D7, // Granularity
536                0xD8D9DADBDCDDDEDF, // Range Minimum
537                0xE0E1E2E3E4E5E6E7, // Range Maximum
538                0xE8E9EAEBECEDEEEF, // Translation Offset
539                0xF0F1F2F3F4F5F6F7, // Length
540                0xF8F9FAFBFCFDFEFF, // Type-Specific Attributes
541                )
542        },
543
544        ResourceTemplate ()
545        {
546            ExtendedSpace (0xCA, ResourceConsumer, PosDecode, MinFixed, MaxNotFixed, 0xAA,
547                0xD0D1D2D3D4D5D6D7, // Granularity
548                0xD8D9DADBDCDDDEDF, // Range Minimum
549                0xE0E1E2E3E4E5E6E7, // Range Maximum
550                0xE8E9EAEBECEDEEEF, // Translation Offset
551                0xF0F1F2F3F4F5F6F7, // Length
552                0xF8F9FAFBFCFDFEFF, // Type-Specific Attributes
553                )
554        },
555
556        ResourceTemplate ()
557        {
558            ExtendedSpace (0xCB, ResourceConsumer, PosDecode, MinFixed, MaxFixed, 0xBA,
559                0xD0D1D2D3D4D5D6D7, // Granularity
560                0xD8D9DADBDCDDDEDF, // Range Minimum
561                0xE0E1E2E3E4E5E6E7, // Range Maximum
562                0xE8E9EAEBECEDEEEF, // Translation Offset
563                0xF0F1F2F3F4F5F6F7, // Length
564                0xF8F9FAFBFCFDFEFF, // Type-Specific Attributes
565                )
566        },
567
568        ResourceTemplate ()
569        {
570            ExtendedSpace (0xCC, ResourceConsumer, SubDecode, MinNotFixed, MaxNotFixed, 0xCA,
571                0xD0D1D2D3D4D5D6D7, // Granularity
572                0xD8D9DADBDCDDDEDF, // Range Minimum
573                0xE0E1E2E3E4E5E6E7, // Range Maximum
574                0xE8E9EAEBECEDEEEF, // Translation Offset
575                0xF0F1F2F3F4F5F6F7, // Length
576                0xF8F9FAFBFCFDFEFF, // Type-Specific Attributes
577                )
578        },
579
580        ResourceTemplate ()
581        {
582            ExtendedSpace (0xCD, ResourceConsumer, SubDecode, MinNotFixed, MaxFixed, 0xDA,
583                0xD0D1D2D3D4D5D6D7, // Granularity
584                0xD8D9DADBDCDDDEDF, // Range Minimum
585                0xE0E1E2E3E4E5E6E7, // Range Maximum
586                0xE8E9EAEBECEDEEEF, // Translation Offset
587                0xF0F1F2F3F4F5F6F7, // Length
588                0xF8F9FAFBFCFDFEFF, // Type-Specific Attributes
589                )
590        },
591
592        ResourceTemplate ()
593        {
594            ExtendedSpace (0xCE, ResourceConsumer, SubDecode, MinFixed, MaxNotFixed, 0xEA,
595                0xD0D1D2D3D4D5D6D7, // Granularity
596                0xD8D9DADBDCDDDEDF, // Range Minimum
597                0xE0E1E2E3E4E5E6E7, // Range Maximum
598                0xE8E9EAEBECEDEEEF, // Translation Offset
599                0xF0F1F2F3F4F5F6F7, // Length
600                0xF8F9FAFBFCFDFEFF, // Type-Specific Attributes
601                )
602        },
603
604        ResourceTemplate ()
605        {
606            ExtendedSpace (0xFF, ResourceConsumer, SubDecode, MinFixed, MaxFixed, 0xFA,
607                0xD0D1D2D3D4D5D6D7, // Granularity
608                0xD8D9DADBDCDDDEDF, // Range Minimum
609                0xE0E1E2E3E4E5E6E7, // Range Maximum
610                0xE8E9EAEBECEDEEEF, // Translation Offset
611                0xF0F1F2F3F4F5F6F7, // Length
612                0xF8F9FAFBFCFDFEFF, // Type-Specific Attributes
613                )
614        },
615
616        /* Byte 5 (Type Specific Flags) of Extended Address Space Descriptor */
617
618        ResourceTemplate ()
619        {
620            ExtendedSpace (0xC0, ResourceConsumer, PosDecode, MinNotFixed, MaxNotFixed, 0x00,
621                0xD0D1D2D3D4D5D6D7, // Granularity
622                0xD8D9DADBDCDDDEDF, // Range Minimum
623                0xE0E1E2E3E4E5E6E7, // Range Maximum
624                0xE8E9EAEBECEDEEEF, // Translation Offset
625                0xF0F1F2F3F4F5F6F7, // Length
626                0xF8F9FAFBFCFDFEFF, // Type-Specific Attributes
627                )
628        },
629
630        ResourceTemplate ()
631        {
632            ExtendedSpace (0xC0, ResourceConsumer, PosDecode, MinNotFixed, MaxNotFixed, 0xFF,
633                0xD0D1D2D3D4D5D6D7, // Granularity
634                0xD8D9DADBDCDDDEDF, // Range Minimum
635                0xE0E1E2E3E4E5E6E7, // Range Maximum
636                0xE8E9EAEBECEDEEEF, // Translation Offset
637                0xF0F1F2F3F4F5F6F7, // Length
638                0xF8F9FAFBFCFDFEFF, // Type-Specific Attributes
639                )
640        },
641
642        /* Particular cases */
643
644        ResourceTemplate ()
645        {
646            ExtendedSpace (0xC0, ResourceConsumer, PosDecode, MinNotFixed, MaxNotFixed, 0x5A,
647                0xD0D1D2D3D4D5D6D7, // Granularity
648                0xD8D9DADBDCDDDEDF, // Range Minimum
649                0xE0E1E2E3E4E5E6E7, // Range Maximum
650                0xE8E9EAEBECEDEEEF, // Translation Offset
651                0xF0F1F2F3F4F5F6F7, // Length
652                0xF8F9FAFBFCFDFEFF, // Type-Specific Attributes
653                )
654        },
655
656        ResourceTemplate ()
657        {
658            ExtendedSpace (0xC0, ResourceConsumer, PosDecode, MinNotFixed, MaxNotFixed, 0x5A,
659                0xD0D1D2D3D4D5D6D7, // Granularity
660                0xD8D9DADBDCDDDEDF, // Range Minimum
661                0xE0E1E2E3E4E5E6E7, // Range Maximum
662                0xE8E9EAEBECEDEEEF, // Translation Offset
663                0xF0F1F2F3F4F5F6F7, // Length
664                0x0000000000000000, // Type-Specific Attributes
665                )
666        },
667
668        ResourceTemplate ()
669        {
670            ExtendedSpace (0xC0, ResourceConsumer, PosDecode, MinNotFixed, MaxNotFixed, 0x5A,
671                0xD0D1D2D3D4D5D6D7, // Granularity
672                0xD8D9DADBDCDDDEDF, // Range Minimum
673                0xE0E1E2E3E4E5E6E7, // Range Maximum
674                0xE8E9EAEBECEDEEEF, // Translation Offset
675                0xF0F1F2F3F4F5F6F7, // Length
676                0xF8F9FAFBFCFDFEFF, // Type-Specific Attributes
677                )
678        },
679
680        ResourceTemplate ()
681        {
682            ExtendedSpace (0xC0, ResourceConsumer, PosDecode, MinNotFixed, MaxNotFixed, 0x5A,
683                0xD0D1D2D3D4D5D6D7, // Granularity
684                0xD8D9DADBDCDDDEDF, // Range Minimum
685                0xE0E1E2E3E4E5E6E7, // Range Maximum
686                0xE8E9EAEBECEDEEEF, // Translation Offset
687                0xF0F1F2F3F4F5F6F7, // Length
688                0x0000000000000000, // Type-Specific Attributes
689                )
690        },
691
692        ResourceTemplate ()
693        {
694            ExtendedSpace (0xC0, ResourceConsumer, SubDecode, MinFixed, MaxFixed, 0x5A,
695                0xD0D1D2D3D4D5D6D7, // Granularity
696                0xD8D9DADBDCDDDEDF, // Range Minimum
697                0xE0E1E2E3E4E5E6E7, // Range Maximum
698                0xE8E9EAEBECEDEEEF, // Translation Offset
699                0xF0F1F2F3F4F5F6F7, // Length
700                0xF8F9FAFBFCFDFEFF, // Type-Specific Attributes
701                )
702        },
703
704        ResourceTemplate ()
705        {
706            ExtendedSpace (0xC0, ResourceConsumer, SubDecode, MinFixed, MaxFixed, 0x00,
707                0x0000000000000000, // Granularity
708                0x0000000000000000, // Range Minimum
709                0x0000000000000000, // Range Maximum
710                0x0000000000000000, // Translation Offset
711                0x0000000000000000, // Length
712                0x0000000000000000, // Type-Specific Attributes
713                )
714        }
715    })
716    Method (RT17, 0, Serialized)
717    {
718        /* Emit test header, set the filename */
719
720        THDR (__METHOD__, "ExtendedSpace Resource Descriptor Macro", "extendedspace.asl")
721        /* Main test case for packages above */
722
723        M330 (__METHOD__, 0x18, "p432", P432, P433)
724        /* Check resource descriptor tag offsets */
725
726        Local0 = ResourceTemplate ()
727            {
728                ExtendedSpace (0xC0, ResourceProducer, PosDecode, MinNotFixed, MaxNotFixed, 0x5A,
729                    0xD0D1D2D3D4D5D6D7, // Granularity
730                    0xD8D9DADBDCDDDEDF, // Range Minimum
731                    0xE0E1E2E3E4E5E6E7, // Range Maximum
732                    0xE8E9EAEBECEDEEEF, // Translation Offset
733                    0xF0F1F2F3F4F5F6F7, // Length
734                    0xF8F9FAFBFCFDFEFF, // Type-Specific Attributes
735                    )
736                ExtendedSpace (0xC0, ResourceConsumer, PosDecode, MinNotFixed, MaxNotFixed, 0x5A,
737                    0xD0D1D2D3D4D5D6D7, // Granularity
738                    0xD8D9DADBDCDDDEDF, // Range Minimum
739                    0xE0E1E2E3E4E5E6E7, // Range Maximum
740                    0xE8E9EAEBECEDEEEF, // Translation Offset
741                    0xF0F1F2F3F4F5F6F7, // Length
742                    0xF8F9FAFBFCFDFEFF, // Type-Specific Attributes
743                    )
744            }
745        M331 (__METHOD__, 0x01, 0x21, 0x21, 0x01E1, 0x01E1, "_DEC")
746        M331 (__METHOD__, 0x02, 0x22, 0x22, 0x01E2, 0x01E2, "_MIF")
747        M331 (__METHOD__, 0x03, 0x23, 0x23, 0x01E3, 0x01E3, "_MAF")
748        M331 (__METHOD__, 0x04, 0x40, 0x40, 0x0200, 0x0200, "_GRA")
749        M331 (__METHOD__, 0x05, 0x80, 0x80, 0x0240, 0x0240, "_MIN")
750        M331 (__METHOD__, 0x06, 0xC0, 0xC0, 0x0280, 0x0280, "_MAX")
751        M331 (__METHOD__, 0x07, 0x0100, 0x0100, 0x02C0, 0x02C0, "_TRA")
752        M331 (__METHOD__, 0x08, 0x0140, 0x0140, 0x0300, 0x0300, "_LEN")
753        M331 (__METHOD__, 0x09, 0x0180, 0x0180, 0x0340, 0x0340, "_ATT")
754    }
755