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