13f5e024cSJung-uk Kim /******************************************************************************
23f5e024cSJung-uk Kim  *
33f5e024cSJung-uk Kim  * Module Name: aslrestype2e - Large Extended address resource descriptors
43f5e024cSJung-uk Kim  *
53f5e024cSJung-uk Kim  *****************************************************************************/
63f5e024cSJung-uk Kim 
70d84335fSJung-uk Kim /******************************************************************************
80d84335fSJung-uk Kim  *
90d84335fSJung-uk Kim  * 1. Copyright Notice
100d84335fSJung-uk Kim  *
11722b1667SJung-uk Kim  * Some or all of this work - Copyright (c) 1999 - 2023, Intel Corp.
123f5e024cSJung-uk Kim  * All rights reserved.
133f5e024cSJung-uk Kim  *
140d84335fSJung-uk Kim  * 2. License
150d84335fSJung-uk Kim  *
160d84335fSJung-uk Kim  * 2.1. This is your license from Intel Corp. under its intellectual property
170d84335fSJung-uk Kim  * rights. You may have additional license terms from the party that provided
180d84335fSJung-uk Kim  * you this software, covering your right to use that party's intellectual
190d84335fSJung-uk Kim  * property rights.
200d84335fSJung-uk Kim  *
210d84335fSJung-uk Kim  * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
220d84335fSJung-uk Kim  * copy of the source code appearing in this file ("Covered Code") an
230d84335fSJung-uk Kim  * irrevocable, perpetual, worldwide license under Intel's copyrights in the
240d84335fSJung-uk Kim  * base code distributed originally by Intel ("Original Intel Code") to copy,
250d84335fSJung-uk Kim  * make derivatives, distribute, use and display any portion of the Covered
260d84335fSJung-uk Kim  * Code in any form, with the right to sublicense such rights; and
270d84335fSJung-uk Kim  *
280d84335fSJung-uk Kim  * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
290d84335fSJung-uk Kim  * license (with the right to sublicense), under only those claims of Intel
300d84335fSJung-uk Kim  * patents that are infringed by the Original Intel Code, to make, use, sell,
310d84335fSJung-uk Kim  * offer to sell, and import the Covered Code and derivative works thereof
320d84335fSJung-uk Kim  * solely to the minimum extent necessary to exercise the above copyright
330d84335fSJung-uk Kim  * license, and in no event shall the patent license extend to any additions
340d84335fSJung-uk Kim  * to or modifications of the Original Intel Code. No other license or right
350d84335fSJung-uk Kim  * is granted directly or by implication, estoppel or otherwise;
360d84335fSJung-uk Kim  *
370d84335fSJung-uk Kim  * The above copyright and patent license is granted only if the following
380d84335fSJung-uk Kim  * conditions are met:
390d84335fSJung-uk Kim  *
400d84335fSJung-uk Kim  * 3. Conditions
410d84335fSJung-uk Kim  *
420d84335fSJung-uk Kim  * 3.1. Redistribution of Source with Rights to Further Distribute Source.
430d84335fSJung-uk Kim  * Redistribution of source code of any substantial portion of the Covered
440d84335fSJung-uk Kim  * Code or modification with rights to further distribute source must include
450d84335fSJung-uk Kim  * the above Copyright Notice, the above License, this list of Conditions,
460d84335fSJung-uk Kim  * and the following Disclaimer and Export Compliance provision. In addition,
470d84335fSJung-uk Kim  * Licensee must cause all Covered Code to which Licensee contributes to
480d84335fSJung-uk Kim  * contain a file documenting the changes Licensee made to create that Covered
490d84335fSJung-uk Kim  * Code and the date of any change. Licensee must include in that file the
500d84335fSJung-uk Kim  * documentation of any changes made by any predecessor Licensee. Licensee
510d84335fSJung-uk Kim  * must include a prominent statement that the modification is derived,
520d84335fSJung-uk Kim  * directly or indirectly, from Original Intel Code.
530d84335fSJung-uk Kim  *
540d84335fSJung-uk Kim  * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
550d84335fSJung-uk Kim  * Redistribution of source code of any substantial portion of the Covered
560d84335fSJung-uk Kim  * Code or modification without rights to further distribute source must
570d84335fSJung-uk Kim  * include the following Disclaimer and Export Compliance provision in the
580d84335fSJung-uk Kim  * documentation and/or other materials provided with distribution. In
590d84335fSJung-uk Kim  * addition, Licensee may not authorize further sublicense of source of any
600d84335fSJung-uk Kim  * portion of the Covered Code, and must include terms to the effect that the
610d84335fSJung-uk Kim  * license from Licensee to its licensee is limited to the intellectual
620d84335fSJung-uk Kim  * property embodied in the software Licensee provides to its licensee, and
630d84335fSJung-uk Kim  * not to intellectual property embodied in modifications its licensee may
640d84335fSJung-uk Kim  * make.
650d84335fSJung-uk Kim  *
660d84335fSJung-uk Kim  * 3.3. Redistribution of Executable. Redistribution in executable form of any
670d84335fSJung-uk Kim  * substantial portion of the Covered Code or modification must reproduce the
680d84335fSJung-uk Kim  * above Copyright Notice, and the following Disclaimer and Export Compliance
690d84335fSJung-uk Kim  * provision in the documentation and/or other materials provided with the
700d84335fSJung-uk Kim  * distribution.
710d84335fSJung-uk Kim  *
720d84335fSJung-uk Kim  * 3.4. Intel retains all right, title, and interest in and to the Original
730d84335fSJung-uk Kim  * Intel Code.
740d84335fSJung-uk Kim  *
750d84335fSJung-uk Kim  * 3.5. Neither the name Intel nor any other trademark owned or controlled by
760d84335fSJung-uk Kim  * Intel shall be used in advertising or otherwise to promote the sale, use or
770d84335fSJung-uk Kim  * other dealings in products derived from or relating to the Covered Code
780d84335fSJung-uk Kim  * without prior written authorization from Intel.
790d84335fSJung-uk Kim  *
800d84335fSJung-uk Kim  * 4. Disclaimer and Export Compliance
810d84335fSJung-uk Kim  *
820d84335fSJung-uk Kim  * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
830d84335fSJung-uk Kim  * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
840d84335fSJung-uk Kim  * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE,
850d84335fSJung-uk Kim  * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY
860d84335fSJung-uk Kim  * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY
870d84335fSJung-uk Kim  * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
880d84335fSJung-uk Kim  * PARTICULAR PURPOSE.
890d84335fSJung-uk Kim  *
900d84335fSJung-uk Kim  * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
910d84335fSJung-uk Kim  * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
920d84335fSJung-uk Kim  * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
930d84335fSJung-uk Kim  * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
940d84335fSJung-uk Kim  * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
950d84335fSJung-uk Kim  * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS
960d84335fSJung-uk Kim  * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
970d84335fSJung-uk Kim  * LIMITED REMEDY.
980d84335fSJung-uk Kim  *
990d84335fSJung-uk Kim  * 4.3. Licensee shall not export, either directly or indirectly, any of this
1000d84335fSJung-uk Kim  * software or system incorporating such software without first obtaining any
1010d84335fSJung-uk Kim  * required license or other approval from the U. S. Department of Commerce or
1020d84335fSJung-uk Kim  * any other agency or department of the United States Government. In the
1030d84335fSJung-uk Kim  * event Licensee exports any such software from the United States or
1040d84335fSJung-uk Kim  * re-exports any such software from a foreign destination, Licensee shall
1050d84335fSJung-uk Kim  * ensure that the distribution and export/re-export of the software is in
1060d84335fSJung-uk Kim  * compliance with all laws, regulations, orders, or other restrictions of the
1070d84335fSJung-uk Kim  * U.S. Export Administration Regulations. Licensee agrees that neither it nor
1080d84335fSJung-uk Kim  * any of its subsidiaries will export/re-export any technical data, process,
1090d84335fSJung-uk Kim  * software, or service, directly or indirectly, to any country for which the
1100d84335fSJung-uk Kim  * United States government or any agency thereof requires an export license,
1110d84335fSJung-uk Kim  * other governmental approval, or letter of assurance, without first obtaining
1120d84335fSJung-uk Kim  * such license, approval or letter.
1130d84335fSJung-uk Kim  *
1140d84335fSJung-uk Kim  *****************************************************************************
1150d84335fSJung-uk Kim  *
1160d84335fSJung-uk Kim  * Alternatively, you may choose to be licensed under the terms of the
1170d84335fSJung-uk Kim  * following license:
1180d84335fSJung-uk Kim  *
119d244b227SJung-uk Kim  * Redistribution and use in source and binary forms, with or without
120d244b227SJung-uk Kim  * modification, are permitted provided that the following conditions
121d244b227SJung-uk Kim  * are met:
122d244b227SJung-uk Kim  * 1. Redistributions of source code must retain the above copyright
123d244b227SJung-uk Kim  *    notice, this list of conditions, and the following disclaimer,
124d244b227SJung-uk Kim  *    without modification.
125d244b227SJung-uk Kim  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
126d244b227SJung-uk Kim  *    substantially similar to the "NO WARRANTY" disclaimer below
127d244b227SJung-uk Kim  *    ("Disclaimer") and any redistribution must be conditioned upon
128d244b227SJung-uk Kim  *    including a substantially similar Disclaimer requirement for further
129d244b227SJung-uk Kim  *    binary redistribution.
130d244b227SJung-uk Kim  * 3. Neither the names of the above-listed copyright holders nor the names
131d244b227SJung-uk Kim  *    of any contributors may be used to endorse or promote products derived
132d244b227SJung-uk Kim  *    from this software without specific prior written permission.
1333f5e024cSJung-uk Kim  *
1340d84335fSJung-uk Kim  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1350d84335fSJung-uk Kim  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
1360d84335fSJung-uk Kim  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
1370d84335fSJung-uk Kim  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
1380d84335fSJung-uk Kim  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
1390d84335fSJung-uk Kim  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
1400d84335fSJung-uk Kim  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
1410d84335fSJung-uk Kim  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
1420d84335fSJung-uk Kim  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
1430d84335fSJung-uk Kim  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
1440d84335fSJung-uk Kim  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1450d84335fSJung-uk Kim  *
1460d84335fSJung-uk Kim  * Alternatively, you may choose to be licensed under the terms of the
147d244b227SJung-uk Kim  * GNU General Public License ("GPL") version 2 as published by the Free
148d244b227SJung-uk Kim  * Software Foundation.
1493f5e024cSJung-uk Kim  *
1500d84335fSJung-uk Kim  *****************************************************************************/
1513f5e024cSJung-uk Kim 
1523f5e024cSJung-uk Kim #include <contrib/dev/acpica/compiler/aslcompiler.h>
1533f5e024cSJung-uk Kim 
1543f5e024cSJung-uk Kim #define _COMPONENT          ACPI_COMPILER
1553f5e024cSJung-uk Kim         ACPI_MODULE_NAME    ("aslrestype2e")
1563f5e024cSJung-uk Kim 
1573f5e024cSJung-uk Kim /*
1583f5e024cSJung-uk Kim  * This module contains the Extended (64-bit) address space descriptors:
1593f5e024cSJung-uk Kim  *
1603f5e024cSJung-uk Kim  * ExtendedIO
1613f5e024cSJung-uk Kim  * ExtendedMemory
1623f5e024cSJung-uk Kim  * ExtendedSpace
1633f5e024cSJung-uk Kim  */
1643f5e024cSJung-uk Kim 
1653f5e024cSJung-uk Kim /*******************************************************************************
1663f5e024cSJung-uk Kim  *
1673f5e024cSJung-uk Kim  * FUNCTION:    RsDoExtendedIoDescriptor
1683f5e024cSJung-uk Kim  *
169313a0c13SJung-uk Kim  * PARAMETERS:  Info                - Parse Op and resource template offset
1703f5e024cSJung-uk Kim  *
1713f5e024cSJung-uk Kim  * RETURN:      Completed resource node
1723f5e024cSJung-uk Kim  *
1733f5e024cSJung-uk Kim  * DESCRIPTION: Construct a long "ExtendedIO" descriptor
1743f5e024cSJung-uk Kim  *
1753f5e024cSJung-uk Kim  ******************************************************************************/
1763f5e024cSJung-uk Kim 
1773f5e024cSJung-uk Kim ASL_RESOURCE_NODE *
RsDoExtendedIoDescriptor(ASL_RESOURCE_INFO * Info)1783f5e024cSJung-uk Kim RsDoExtendedIoDescriptor (
179313a0c13SJung-uk Kim     ASL_RESOURCE_INFO       *Info)
1803f5e024cSJung-uk Kim {
1813f5e024cSJung-uk Kim     AML_RESOURCE            *Descriptor;
1823f5e024cSJung-uk Kim     ACPI_PARSE_OBJECT       *InitializerOp;
1833f5e024cSJung-uk Kim     ACPI_PARSE_OBJECT       *MinOp = NULL;
1843f5e024cSJung-uk Kim     ACPI_PARSE_OBJECT       *MaxOp = NULL;
1853f5e024cSJung-uk Kim     ACPI_PARSE_OBJECT       *LengthOp = NULL;
1863f5e024cSJung-uk Kim     ACPI_PARSE_OBJECT       *GranOp = NULL;
1873f5e024cSJung-uk Kim     ASL_RESOURCE_NODE       *Rnode;
1883f5e024cSJung-uk Kim     UINT16                  StringLength = 0;
189313a0c13SJung-uk Kim     UINT32                  CurrentByteOffset;
1903f5e024cSJung-uk Kim     UINT32                  i;
1913f5e024cSJung-uk Kim 
1923f5e024cSJung-uk Kim 
193313a0c13SJung-uk Kim     InitializerOp = Info->DescriptorTypeOp->Asl.Child;
1943f5e024cSJung-uk Kim     StringLength = RsGetStringDataLength (InitializerOp);
195313a0c13SJung-uk Kim     CurrentByteOffset = Info->CurrentByteOffset;
1963f5e024cSJung-uk Kim 
1973f5e024cSJung-uk Kim     Rnode = RsAllocateResourceNode (
1983f5e024cSJung-uk Kim         sizeof (AML_RESOURCE_EXTENDED_ADDRESS64) + 1 + StringLength);
1993f5e024cSJung-uk Kim 
2003f5e024cSJung-uk Kim     Descriptor = Rnode->Buffer;
2013f5e024cSJung-uk Kim     Descriptor->ExtAddress64.DescriptorType = ACPI_RESOURCE_NAME_EXTENDED_ADDRESS64;
2023f5e024cSJung-uk Kim     Descriptor->ExtAddress64.ResourceType = ACPI_ADDRESS_TYPE_IO_RANGE;
2033f5e024cSJung-uk Kim     Descriptor->ExtAddress64.RevisionID = AML_RESOURCE_EXTENDED_ADDRESS_REVISION;
2043f5e024cSJung-uk Kim 
2053f5e024cSJung-uk Kim     Descriptor->ExtAddress64.ResourceLength = (UINT16)
2063f5e024cSJung-uk Kim         (sizeof (AML_RESOURCE_EXTENDED_ADDRESS64) -
2073f5e024cSJung-uk Kim          sizeof (AML_RESOURCE_LARGE_HEADER));
2083f5e024cSJung-uk Kim 
2093f5e024cSJung-uk Kim     /* Process all child initialization nodes */
2103f5e024cSJung-uk Kim 
2113f5e024cSJung-uk Kim     for (i = 0; InitializerOp; i++)
2123f5e024cSJung-uk Kim     {
2133f5e024cSJung-uk Kim         switch (i)
2143f5e024cSJung-uk Kim         {
2153f5e024cSJung-uk Kim         case 0: /* Resource Usage */
2163f5e024cSJung-uk Kim 
2173f5e024cSJung-uk Kim             RsSetFlagBits (&Descriptor->ExtAddress64.Flags, InitializerOp, 0, 1);
2183f5e024cSJung-uk Kim             break;
2193f5e024cSJung-uk Kim 
2203f5e024cSJung-uk Kim         case 1: /* MinType */
2213f5e024cSJung-uk Kim 
2223f5e024cSJung-uk Kim             RsSetFlagBits (&Descriptor->ExtAddress64.Flags, InitializerOp, 2, 0);
2233f5e024cSJung-uk Kim             RsCreateBitField (InitializerOp, ACPI_RESTAG_MINTYPE,
2243f5e024cSJung-uk Kim                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Flags), 2);
2253f5e024cSJung-uk Kim             break;
2263f5e024cSJung-uk Kim 
2273f5e024cSJung-uk Kim         case 2: /* MaxType */
2283f5e024cSJung-uk Kim 
2293f5e024cSJung-uk Kim             RsSetFlagBits (&Descriptor->ExtAddress64.Flags, InitializerOp, 3, 0);
2303f5e024cSJung-uk Kim             RsCreateBitField (InitializerOp, ACPI_RESTAG_MAXTYPE,
2313f5e024cSJung-uk Kim                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Flags), 3);
2323f5e024cSJung-uk Kim             break;
2333f5e024cSJung-uk Kim 
2343f5e024cSJung-uk Kim         case 3: /* DecodeType */
2353f5e024cSJung-uk Kim 
2363f5e024cSJung-uk Kim             RsSetFlagBits (&Descriptor->ExtAddress64.Flags, InitializerOp, 1, 0);
2373f5e024cSJung-uk Kim             RsCreateBitField (InitializerOp, ACPI_RESTAG_DECODE,
2383f5e024cSJung-uk Kim                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Flags), 1);
2393f5e024cSJung-uk Kim             break;
2403f5e024cSJung-uk Kim 
2413f5e024cSJung-uk Kim         case 4: /* Range Type */
2423f5e024cSJung-uk Kim 
2433f5e024cSJung-uk Kim             RsSetFlagBits (&Descriptor->ExtAddress64.SpecificFlags, InitializerOp, 0, 3);
2443f0275a0SJung-uk Kim             RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_RANGETYPE,
2453f0275a0SJung-uk Kim                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.SpecificFlags), 0, 2);
2463f5e024cSJung-uk Kim             break;
2473f5e024cSJung-uk Kim 
2483f5e024cSJung-uk Kim         case 5: /* Address Granularity */
2493f5e024cSJung-uk Kim 
2503f5e024cSJung-uk Kim             Descriptor->ExtAddress64.Granularity = InitializerOp->Asl.Value.Integer;
2513f0275a0SJung-uk Kim             RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
2523f5e024cSJung-uk Kim                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Granularity));
2533f5e024cSJung-uk Kim             GranOp = InitializerOp;
2543f5e024cSJung-uk Kim             break;
2553f5e024cSJung-uk Kim 
2563f5e024cSJung-uk Kim         case 6: /* Address Min */
2573f5e024cSJung-uk Kim 
2583f5e024cSJung-uk Kim             Descriptor->ExtAddress64.Minimum = InitializerOp->Asl.Value.Integer;
2593f0275a0SJung-uk Kim             RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR,
2603f5e024cSJung-uk Kim                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Minimum));
2613f5e024cSJung-uk Kim             MinOp = InitializerOp;
2623f5e024cSJung-uk Kim             break;
2633f5e024cSJung-uk Kim 
2643f5e024cSJung-uk Kim         case 7: /* Address Max */
2653f5e024cSJung-uk Kim 
2663f5e024cSJung-uk Kim             Descriptor->ExtAddress64.Maximum = InitializerOp->Asl.Value.Integer;
2673f0275a0SJung-uk Kim             RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
2683f5e024cSJung-uk Kim                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Maximum));
2693f5e024cSJung-uk Kim             MaxOp = InitializerOp;
2703f5e024cSJung-uk Kim             break;
2713f5e024cSJung-uk Kim 
2723f5e024cSJung-uk Kim         case 8: /* Translation Offset */
2733f5e024cSJung-uk Kim 
2743f5e024cSJung-uk Kim             Descriptor->ExtAddress64.TranslationOffset = InitializerOp->Asl.Value.Integer;
2753f0275a0SJung-uk Kim             RsCreateQwordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
2763f5e024cSJung-uk Kim                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TranslationOffset));
2773f5e024cSJung-uk Kim             break;
2783f5e024cSJung-uk Kim 
2793f5e024cSJung-uk Kim         case 9: /* Address Length */
2803f5e024cSJung-uk Kim 
2813f5e024cSJung-uk Kim             Descriptor->ExtAddress64.AddressLength = InitializerOp->Asl.Value.Integer;
2823f0275a0SJung-uk Kim             RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH,
2833f5e024cSJung-uk Kim                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.AddressLength));
2843f5e024cSJung-uk Kim             LengthOp = InitializerOp;
2853f5e024cSJung-uk Kim             break;
2863f5e024cSJung-uk Kim 
2873f5e024cSJung-uk Kim         case 10: /* Type-Specific Attributes */
2883f5e024cSJung-uk Kim 
2893f5e024cSJung-uk Kim             Descriptor->ExtAddress64.TypeSpecific = InitializerOp->Asl.Value.Integer;
2903f0275a0SJung-uk Kim             RsCreateQwordField (InitializerOp, ACPI_RESTAG_TYPESPECIFICATTRIBUTES,
2913f5e024cSJung-uk Kim                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TypeSpecific));
2923f5e024cSJung-uk Kim             break;
2933f5e024cSJung-uk Kim 
2943f5e024cSJung-uk Kim         case 11: /* ResourceTag */
2953f5e024cSJung-uk Kim 
296313a0c13SJung-uk Kim             UtAttachNamepathToOwner (Info->DescriptorTypeOp, InitializerOp);
2973f5e024cSJung-uk Kim             break;
2983f5e024cSJung-uk Kim 
2993f5e024cSJung-uk Kim         case 12: /* Type */
3003f5e024cSJung-uk Kim 
3013f5e024cSJung-uk Kim             RsSetFlagBits (&Descriptor->ExtAddress64.SpecificFlags, InitializerOp, 4, 0);
3023f5e024cSJung-uk Kim             RsCreateBitField (InitializerOp, ACPI_RESTAG_TYPE,
3033f5e024cSJung-uk Kim                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.SpecificFlags), 4);
3043f5e024cSJung-uk Kim             break;
3053f5e024cSJung-uk Kim 
3063f5e024cSJung-uk Kim         case 13: /* Translation Type */
3073f5e024cSJung-uk Kim 
3083f5e024cSJung-uk Kim             RsSetFlagBits (&Descriptor->ExtAddress64.SpecificFlags, InitializerOp, 5, 0);
3093f5e024cSJung-uk Kim             RsCreateBitField (InitializerOp, ACPI_RESTAG_TRANSTYPE,
3103f5e024cSJung-uk Kim                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.SpecificFlags), 5);
3113f5e024cSJung-uk Kim             break;
3123f5e024cSJung-uk Kim 
3133f5e024cSJung-uk Kim         default:
3143f5e024cSJung-uk Kim 
3153f5e024cSJung-uk Kim             AslError (ASL_ERROR, ASL_MSG_RESOURCE_LIST, InitializerOp, NULL);
3163f5e024cSJung-uk Kim             break;
3173f5e024cSJung-uk Kim         }
3183f5e024cSJung-uk Kim 
3193f5e024cSJung-uk Kim         InitializerOp = RsCompleteNodeAndGetNext (InitializerOp);
3203f5e024cSJung-uk Kim     }
3213f5e024cSJung-uk Kim 
3223f5e024cSJung-uk Kim     /* Validate the Min/Max/Len/Gran values */
3233f5e024cSJung-uk Kim 
3243f5e024cSJung-uk Kim     RsLargeAddressCheck (
3253f5e024cSJung-uk Kim         Descriptor->ExtAddress64.Minimum,
3263f5e024cSJung-uk Kim         Descriptor->ExtAddress64.Maximum,
3273f5e024cSJung-uk Kim         Descriptor->ExtAddress64.AddressLength,
3283f5e024cSJung-uk Kim         Descriptor->ExtAddress64.Granularity,
3293f5e024cSJung-uk Kim         Descriptor->ExtAddress64.Flags,
330313a0c13SJung-uk Kim         MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp);
3313f5e024cSJung-uk Kim 
332313a0c13SJung-uk Kim     Rnode->BufferLength = sizeof (AML_RESOURCE_EXTENDED_ADDRESS64) +
333313a0c13SJung-uk Kim         StringLength;
3343f5e024cSJung-uk Kim     return (Rnode);
3353f5e024cSJung-uk Kim }
3363f5e024cSJung-uk Kim 
3373f5e024cSJung-uk Kim 
3383f5e024cSJung-uk Kim /*******************************************************************************
3393f5e024cSJung-uk Kim  *
3403f5e024cSJung-uk Kim  * FUNCTION:    RsDoExtendedMemoryDescriptor
3413f5e024cSJung-uk Kim  *
342313a0c13SJung-uk Kim  * PARAMETERS:  Info                - Parse Op and resource template offset
3433f5e024cSJung-uk Kim  *
3443f5e024cSJung-uk Kim  * RETURN:      Completed resource node
3453f5e024cSJung-uk Kim  *
3463f5e024cSJung-uk Kim  * DESCRIPTION: Construct a long "ExtendedMemory" descriptor
3473f5e024cSJung-uk Kim  *
3483f5e024cSJung-uk Kim  ******************************************************************************/
3493f5e024cSJung-uk Kim 
3503f5e024cSJung-uk Kim ASL_RESOURCE_NODE *
RsDoExtendedMemoryDescriptor(ASL_RESOURCE_INFO * Info)3513f5e024cSJung-uk Kim RsDoExtendedMemoryDescriptor (
352313a0c13SJung-uk Kim     ASL_RESOURCE_INFO       *Info)
3533f5e024cSJung-uk Kim {
3543f5e024cSJung-uk Kim     AML_RESOURCE            *Descriptor;
3553f5e024cSJung-uk Kim     ACPI_PARSE_OBJECT       *InitializerOp;
3563f5e024cSJung-uk Kim     ACPI_PARSE_OBJECT       *MinOp = NULL;
3573f5e024cSJung-uk Kim     ACPI_PARSE_OBJECT       *MaxOp = NULL;
3583f5e024cSJung-uk Kim     ACPI_PARSE_OBJECT       *LengthOp = NULL;
3593f5e024cSJung-uk Kim     ACPI_PARSE_OBJECT       *GranOp = NULL;
3603f5e024cSJung-uk Kim     ASL_RESOURCE_NODE       *Rnode;
3613f5e024cSJung-uk Kim     UINT16                  StringLength = 0;
362313a0c13SJung-uk Kim     UINT32                  CurrentByteOffset;
3633f5e024cSJung-uk Kim     UINT32                  i;
3643f5e024cSJung-uk Kim 
3653f5e024cSJung-uk Kim 
366313a0c13SJung-uk Kim     InitializerOp = Info->DescriptorTypeOp->Asl.Child;
3673f5e024cSJung-uk Kim     StringLength = RsGetStringDataLength (InitializerOp);
368313a0c13SJung-uk Kim     CurrentByteOffset = Info->CurrentByteOffset;
3693f5e024cSJung-uk Kim 
3703f5e024cSJung-uk Kim     Rnode = RsAllocateResourceNode (
3713f5e024cSJung-uk Kim                 sizeof (AML_RESOURCE_EXTENDED_ADDRESS64) + 1 + StringLength);
3723f5e024cSJung-uk Kim 
3733f5e024cSJung-uk Kim     Descriptor = Rnode->Buffer;
3743f5e024cSJung-uk Kim     Descriptor->ExtAddress64.DescriptorType = ACPI_RESOURCE_NAME_EXTENDED_ADDRESS64;
3753f5e024cSJung-uk Kim     Descriptor->ExtAddress64.ResourceType = ACPI_ADDRESS_TYPE_MEMORY_RANGE;
3763f5e024cSJung-uk Kim     Descriptor->ExtAddress64.RevisionID = AML_RESOURCE_EXTENDED_ADDRESS_REVISION;
3773f5e024cSJung-uk Kim 
3783f5e024cSJung-uk Kim     Descriptor->ExtAddress64.ResourceLength = (UINT16)
3793f5e024cSJung-uk Kim         (sizeof (AML_RESOURCE_EXTENDED_ADDRESS64) -
3803f5e024cSJung-uk Kim          sizeof (AML_RESOURCE_LARGE_HEADER));
3813f5e024cSJung-uk Kim 
3823f5e024cSJung-uk Kim     /* Process all child initialization nodes */
3833f5e024cSJung-uk Kim 
3843f5e024cSJung-uk Kim     for (i = 0; InitializerOp; i++)
3853f5e024cSJung-uk Kim     {
3863f5e024cSJung-uk Kim         switch (i)
3873f5e024cSJung-uk Kim         {
3883f5e024cSJung-uk Kim         case 0: /* Resource Usage */
3893f5e024cSJung-uk Kim 
3903f5e024cSJung-uk Kim             RsSetFlagBits (&Descriptor->ExtAddress64.Flags, InitializerOp, 0, 1);
3913f5e024cSJung-uk Kim             break;
3923f5e024cSJung-uk Kim 
3933f5e024cSJung-uk Kim         case 1: /* DecodeType */
3943f5e024cSJung-uk Kim 
3953f5e024cSJung-uk Kim             RsSetFlagBits (&Descriptor->ExtAddress64.Flags, InitializerOp, 1, 0);
3963f5e024cSJung-uk Kim             RsCreateBitField (InitializerOp, ACPI_RESTAG_DECODE,
3973f5e024cSJung-uk Kim                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Flags), 1);
3983f5e024cSJung-uk Kim             break;
3993f5e024cSJung-uk Kim 
4003f5e024cSJung-uk Kim         case 2: /* MinType */
4013f5e024cSJung-uk Kim 
4023f5e024cSJung-uk Kim             RsSetFlagBits (&Descriptor->ExtAddress64.Flags, InitializerOp, 2, 0);
4033f5e024cSJung-uk Kim             RsCreateBitField (InitializerOp, ACPI_RESTAG_MINTYPE,
4043f5e024cSJung-uk Kim                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Flags), 2);
4053f5e024cSJung-uk Kim             break;
4063f5e024cSJung-uk Kim 
4073f5e024cSJung-uk Kim         case 3: /* MaxType */
4083f5e024cSJung-uk Kim 
4093f5e024cSJung-uk Kim             RsSetFlagBits (&Descriptor->ExtAddress64.Flags, InitializerOp, 3, 0);
4103f5e024cSJung-uk Kim             RsCreateBitField (InitializerOp, ACPI_RESTAG_MAXTYPE,
4113f5e024cSJung-uk Kim                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Flags), 3);
4123f5e024cSJung-uk Kim             break;
4133f5e024cSJung-uk Kim 
4143f5e024cSJung-uk Kim         case 4: /* Memory Type */
4153f5e024cSJung-uk Kim 
4163f5e024cSJung-uk Kim             RsSetFlagBits (&Descriptor->ExtAddress64.SpecificFlags, InitializerOp, 1, 0);
4173f0275a0SJung-uk Kim             RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_MEMTYPE,
4183f0275a0SJung-uk Kim                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.SpecificFlags), 1, 2);
4193f5e024cSJung-uk Kim             break;
4203f5e024cSJung-uk Kim 
4213f5e024cSJung-uk Kim         case 5: /* Read/Write Type */
4223f5e024cSJung-uk Kim 
4233f5e024cSJung-uk Kim             RsSetFlagBits (&Descriptor->ExtAddress64.SpecificFlags, InitializerOp, 0, 1);
4243f5e024cSJung-uk Kim             RsCreateBitField (InitializerOp, ACPI_RESTAG_READWRITETYPE,
4253f5e024cSJung-uk Kim                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.SpecificFlags), 0);
4263f5e024cSJung-uk Kim             break;
4273f5e024cSJung-uk Kim 
4283f5e024cSJung-uk Kim         case 6: /* Address Granularity */
4293f5e024cSJung-uk Kim 
4303f5e024cSJung-uk Kim             Descriptor->ExtAddress64.Granularity = InitializerOp->Asl.Value.Integer;
4313f0275a0SJung-uk Kim             RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
4323f5e024cSJung-uk Kim                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Granularity));
4333f5e024cSJung-uk Kim             GranOp = InitializerOp;
4343f5e024cSJung-uk Kim             break;
4353f5e024cSJung-uk Kim 
4363f5e024cSJung-uk Kim         case 7: /* Min Address */
4373f5e024cSJung-uk Kim 
4383f5e024cSJung-uk Kim             Descriptor->ExtAddress64.Minimum = InitializerOp->Asl.Value.Integer;
4393f0275a0SJung-uk Kim             RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR,
4403f5e024cSJung-uk Kim                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Minimum));
4413f5e024cSJung-uk Kim             MinOp = InitializerOp;
4423f5e024cSJung-uk Kim             break;
4433f5e024cSJung-uk Kim 
4443f5e024cSJung-uk Kim         case 8: /* Max Address */
4453f5e024cSJung-uk Kim 
4463f5e024cSJung-uk Kim             Descriptor->ExtAddress64.Maximum = InitializerOp->Asl.Value.Integer;
4473f0275a0SJung-uk Kim             RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
4483f5e024cSJung-uk Kim                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Maximum));
4493f5e024cSJung-uk Kim             MaxOp = InitializerOp;
4503f5e024cSJung-uk Kim             break;
4513f5e024cSJung-uk Kim 
4523f5e024cSJung-uk Kim         case 9: /* Translation Offset */
4533f5e024cSJung-uk Kim 
4543f5e024cSJung-uk Kim             Descriptor->ExtAddress64.TranslationOffset = InitializerOp->Asl.Value.Integer;
4553f0275a0SJung-uk Kim             RsCreateQwordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
4563f5e024cSJung-uk Kim                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TranslationOffset));
4573f5e024cSJung-uk Kim             break;
4583f5e024cSJung-uk Kim 
4593f5e024cSJung-uk Kim         case 10: /* Address Length */
4603f5e024cSJung-uk Kim 
4613f5e024cSJung-uk Kim             Descriptor->ExtAddress64.AddressLength = InitializerOp->Asl.Value.Integer;
4623f0275a0SJung-uk Kim             RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH,
4633f5e024cSJung-uk Kim                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.AddressLength));
4643f5e024cSJung-uk Kim             LengthOp = InitializerOp;
4653f5e024cSJung-uk Kim             break;
4663f5e024cSJung-uk Kim 
4673f5e024cSJung-uk Kim         case 11: /* Type-Specific Attributes */
4683f5e024cSJung-uk Kim 
4693f5e024cSJung-uk Kim             Descriptor->ExtAddress64.TypeSpecific = InitializerOp->Asl.Value.Integer;
4703f0275a0SJung-uk Kim             RsCreateQwordField (InitializerOp, ACPI_RESTAG_TYPESPECIFICATTRIBUTES,
4713f5e024cSJung-uk Kim                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TypeSpecific));
4723f5e024cSJung-uk Kim             break;
4733f5e024cSJung-uk Kim 
4743f5e024cSJung-uk Kim         case 12: /* ResourceTag */
4753f5e024cSJung-uk Kim 
476313a0c13SJung-uk Kim             UtAttachNamepathToOwner (Info->DescriptorTypeOp, InitializerOp);
4773f5e024cSJung-uk Kim             break;
4783f5e024cSJung-uk Kim 
4793f5e024cSJung-uk Kim 
4803f5e024cSJung-uk Kim         case 13: /* Address Range */
4813f5e024cSJung-uk Kim 
4823f5e024cSJung-uk Kim             RsSetFlagBits (&Descriptor->ExtAddress64.SpecificFlags, InitializerOp, 3, 0);
4833f0275a0SJung-uk Kim             RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_MEMATTRIBUTES,
4843f0275a0SJung-uk Kim                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.SpecificFlags), 3, 2);
4853f5e024cSJung-uk Kim             break;
4863f5e024cSJung-uk Kim 
4873f5e024cSJung-uk Kim         case 14: /* Type */
4883f5e024cSJung-uk Kim 
4893f5e024cSJung-uk Kim             RsSetFlagBits (&Descriptor->ExtAddress64.SpecificFlags, InitializerOp, 5, 0);
4903f5e024cSJung-uk Kim             RsCreateBitField (InitializerOp, ACPI_RESTAG_TYPE,
4913f5e024cSJung-uk Kim                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.SpecificFlags), 5);
4923f5e024cSJung-uk Kim             break;
4933f5e024cSJung-uk Kim 
4943f5e024cSJung-uk Kim         default:
4953f5e024cSJung-uk Kim 
4963f5e024cSJung-uk Kim             AslError (ASL_ERROR, ASL_MSG_RESOURCE_LIST, InitializerOp, NULL);
4973f5e024cSJung-uk Kim             break;
4983f5e024cSJung-uk Kim         }
4993f5e024cSJung-uk Kim 
5003f5e024cSJung-uk Kim         InitializerOp = RsCompleteNodeAndGetNext (InitializerOp);
5013f5e024cSJung-uk Kim     }
5023f5e024cSJung-uk Kim 
5033f5e024cSJung-uk Kim     /* Validate the Min/Max/Len/Gran values */
5043f5e024cSJung-uk Kim 
5053f5e024cSJung-uk Kim     RsLargeAddressCheck (
5063f5e024cSJung-uk Kim         Descriptor->ExtAddress64.Minimum,
5073f5e024cSJung-uk Kim         Descriptor->ExtAddress64.Maximum,
5083f5e024cSJung-uk Kim         Descriptor->ExtAddress64.AddressLength,
5093f5e024cSJung-uk Kim         Descriptor->ExtAddress64.Granularity,
5103f5e024cSJung-uk Kim         Descriptor->ExtAddress64.Flags,
511313a0c13SJung-uk Kim         MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp);
5123f5e024cSJung-uk Kim 
513313a0c13SJung-uk Kim     Rnode->BufferLength = sizeof (AML_RESOURCE_EXTENDED_ADDRESS64) +
514313a0c13SJung-uk Kim         StringLength;
5153f5e024cSJung-uk Kim     return (Rnode);
5163f5e024cSJung-uk Kim }
5173f5e024cSJung-uk Kim 
5183f5e024cSJung-uk Kim 
5193f5e024cSJung-uk Kim /*******************************************************************************
5203f5e024cSJung-uk Kim  *
5213f5e024cSJung-uk Kim  * FUNCTION:    RsDoExtendedSpaceDescriptor
5223f5e024cSJung-uk Kim  *
523313a0c13SJung-uk Kim  * PARAMETERS:  Info                - Parse Op and resource template offset
5243f5e024cSJung-uk Kim  *
5253f5e024cSJung-uk Kim  * RETURN:      Completed resource node
5263f5e024cSJung-uk Kim  *
5273f5e024cSJung-uk Kim  * DESCRIPTION: Construct a long "ExtendedSpace" descriptor
5283f5e024cSJung-uk Kim  *
5293f5e024cSJung-uk Kim  ******************************************************************************/
5303f5e024cSJung-uk Kim 
5313f5e024cSJung-uk Kim ASL_RESOURCE_NODE *
RsDoExtendedSpaceDescriptor(ASL_RESOURCE_INFO * Info)5323f5e024cSJung-uk Kim RsDoExtendedSpaceDescriptor (
533313a0c13SJung-uk Kim     ASL_RESOURCE_INFO       *Info)
5343f5e024cSJung-uk Kim {
5353f5e024cSJung-uk Kim     AML_RESOURCE            *Descriptor;
5363f5e024cSJung-uk Kim     ACPI_PARSE_OBJECT       *InitializerOp;
5373f5e024cSJung-uk Kim     ACPI_PARSE_OBJECT       *MinOp = NULL;
5383f5e024cSJung-uk Kim     ACPI_PARSE_OBJECT       *MaxOp = NULL;
5393f5e024cSJung-uk Kim     ACPI_PARSE_OBJECT       *LengthOp = NULL;
5403f5e024cSJung-uk Kim     ACPI_PARSE_OBJECT       *GranOp = NULL;
5413f5e024cSJung-uk Kim     ASL_RESOURCE_NODE       *Rnode;
5423f5e024cSJung-uk Kim     UINT16                  StringLength = 0;
543313a0c13SJung-uk Kim     UINT32                  CurrentByteOffset;
5443f5e024cSJung-uk Kim     UINT32                  i;
5453f5e024cSJung-uk Kim 
5463f5e024cSJung-uk Kim 
547313a0c13SJung-uk Kim     InitializerOp = Info->DescriptorTypeOp->Asl.Child;
5483f5e024cSJung-uk Kim     StringLength = RsGetStringDataLength (InitializerOp);
549313a0c13SJung-uk Kim     CurrentByteOffset = Info->CurrentByteOffset;
5503f5e024cSJung-uk Kim 
5513f5e024cSJung-uk Kim     Rnode = RsAllocateResourceNode (
5523f5e024cSJung-uk Kim         sizeof (AML_RESOURCE_EXTENDED_ADDRESS64) + 1 + StringLength);
5533f5e024cSJung-uk Kim 
5543f5e024cSJung-uk Kim     Descriptor = Rnode->Buffer;
5553f5e024cSJung-uk Kim     Descriptor->ExtAddress64.DescriptorType = ACPI_RESOURCE_NAME_EXTENDED_ADDRESS64;
5563f5e024cSJung-uk Kim     Descriptor->ExtAddress64.RevisionID = AML_RESOURCE_EXTENDED_ADDRESS_REVISION;
5573f5e024cSJung-uk Kim 
5583f5e024cSJung-uk Kim     Descriptor->ExtAddress64.ResourceLength = (UINT16)
5593f5e024cSJung-uk Kim         (sizeof (AML_RESOURCE_EXTENDED_ADDRESS64) -
5603f5e024cSJung-uk Kim          sizeof (AML_RESOURCE_LARGE_HEADER));
5613f5e024cSJung-uk Kim 
5623f5e024cSJung-uk Kim     /* Process all child initialization nodes */
5633f5e024cSJung-uk Kim 
5643f5e024cSJung-uk Kim     for (i = 0; InitializerOp; i++)
5653f5e024cSJung-uk Kim     {
5663f5e024cSJung-uk Kim         switch (i)
5673f5e024cSJung-uk Kim         {
5683f5e024cSJung-uk Kim         case 0: /* Resource Type */
5693f5e024cSJung-uk Kim 
5703f5e024cSJung-uk Kim             Descriptor->ExtAddress64.ResourceType =
5713f5e024cSJung-uk Kim                 (UINT8) InitializerOp->Asl.Value.Integer;
5723f5e024cSJung-uk Kim             break;
5733f5e024cSJung-uk Kim 
5743f5e024cSJung-uk Kim         case 1: /* Resource Usage */
5753f5e024cSJung-uk Kim 
5763f5e024cSJung-uk Kim             RsSetFlagBits (&Descriptor->ExtAddress64.Flags, InitializerOp, 0, 1);
5773f5e024cSJung-uk Kim             break;
5783f5e024cSJung-uk Kim 
5793f5e024cSJung-uk Kim         case 2: /* DecodeType */
5803f5e024cSJung-uk Kim 
5813f5e024cSJung-uk Kim             RsSetFlagBits (&Descriptor->ExtAddress64.Flags, InitializerOp, 1, 0);
5823f5e024cSJung-uk Kim             RsCreateBitField (InitializerOp, ACPI_RESTAG_DECODE,
5833f5e024cSJung-uk Kim                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Flags), 1);
5843f5e024cSJung-uk Kim             break;
5853f5e024cSJung-uk Kim 
5863f5e024cSJung-uk Kim         case 3: /* MinType */
5873f5e024cSJung-uk Kim 
5883f5e024cSJung-uk Kim             RsSetFlagBits (&Descriptor->ExtAddress64.Flags, InitializerOp, 2, 0);
5893f5e024cSJung-uk Kim             RsCreateBitField (InitializerOp, ACPI_RESTAG_MINTYPE,
5903f5e024cSJung-uk Kim                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Flags), 2);
5913f5e024cSJung-uk Kim             break;
5923f5e024cSJung-uk Kim 
5933f5e024cSJung-uk Kim         case 4: /* MaxType */
5943f5e024cSJung-uk Kim 
5953f5e024cSJung-uk Kim             RsSetFlagBits (&Descriptor->ExtAddress64.Flags, InitializerOp, 3, 0);
5963f5e024cSJung-uk Kim             RsCreateBitField (InitializerOp, ACPI_RESTAG_MAXTYPE,
5973f5e024cSJung-uk Kim                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Flags), 3);
5983f5e024cSJung-uk Kim             break;
5993f5e024cSJung-uk Kim 
6003f5e024cSJung-uk Kim         case 5: /* Type-Specific flags */
6013f5e024cSJung-uk Kim 
6023f5e024cSJung-uk Kim             Descriptor->ExtAddress64.SpecificFlags =
6033f5e024cSJung-uk Kim                 (UINT8) InitializerOp->Asl.Value.Integer;
6043f5e024cSJung-uk Kim             break;
6053f5e024cSJung-uk Kim 
6063f5e024cSJung-uk Kim         case 6: /* Address Granularity */
6073f5e024cSJung-uk Kim 
6083f5e024cSJung-uk Kim             Descriptor->ExtAddress64.Granularity = InitializerOp->Asl.Value.Integer;
6093f0275a0SJung-uk Kim             RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
6103f5e024cSJung-uk Kim                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Granularity));
6113f5e024cSJung-uk Kim             GranOp = InitializerOp;
6123f5e024cSJung-uk Kim             break;
6133f5e024cSJung-uk Kim 
6143f5e024cSJung-uk Kim         case 7: /* Min Address */
6153f5e024cSJung-uk Kim 
6163f5e024cSJung-uk Kim             Descriptor->ExtAddress64.Minimum = InitializerOp->Asl.Value.Integer;
6173f0275a0SJung-uk Kim             RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR,
6183f5e024cSJung-uk Kim                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Minimum));
6193f5e024cSJung-uk Kim             MinOp = InitializerOp;
6203f5e024cSJung-uk Kim             break;
6213f5e024cSJung-uk Kim 
6223f5e024cSJung-uk Kim         case 8: /* Max Address */
6233f5e024cSJung-uk Kim 
6243f5e024cSJung-uk Kim             Descriptor->ExtAddress64.Maximum = InitializerOp->Asl.Value.Integer;
6253f0275a0SJung-uk Kim             RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
6263f5e024cSJung-uk Kim                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Maximum));
6273f5e024cSJung-uk Kim             MaxOp = InitializerOp;
6283f5e024cSJung-uk Kim             break;
6293f5e024cSJung-uk Kim 
6303f5e024cSJung-uk Kim         case 9: /* Translation Offset */
6313f5e024cSJung-uk Kim 
6323f5e024cSJung-uk Kim             Descriptor->ExtAddress64.TranslationOffset = InitializerOp->Asl.Value.Integer;
6333f0275a0SJung-uk Kim             RsCreateQwordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
6343f5e024cSJung-uk Kim                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TranslationOffset));
6353f5e024cSJung-uk Kim             break;
6363f5e024cSJung-uk Kim 
6373f5e024cSJung-uk Kim         case 10: /* Address Length */
6383f5e024cSJung-uk Kim 
6393f5e024cSJung-uk Kim             Descriptor->ExtAddress64.AddressLength = InitializerOp->Asl.Value.Integer;
6403f0275a0SJung-uk Kim             RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH,
6413f5e024cSJung-uk Kim                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.AddressLength));
6423f5e024cSJung-uk Kim             LengthOp = InitializerOp;
6433f5e024cSJung-uk Kim             break;
6443f5e024cSJung-uk Kim 
6453f5e024cSJung-uk Kim         case 11: /* Type-Specific Attributes */
6463f5e024cSJung-uk Kim 
6473f5e024cSJung-uk Kim             Descriptor->ExtAddress64.TypeSpecific = InitializerOp->Asl.Value.Integer;
6483f0275a0SJung-uk Kim             RsCreateQwordField (InitializerOp, ACPI_RESTAG_TYPESPECIFICATTRIBUTES,
6493f5e024cSJung-uk Kim                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TypeSpecific));
6503f5e024cSJung-uk Kim             break;
6513f5e024cSJung-uk Kim 
6523f5e024cSJung-uk Kim         case 12: /* ResourceTag */
6533f5e024cSJung-uk Kim 
654313a0c13SJung-uk Kim             UtAttachNamepathToOwner (Info->DescriptorTypeOp, InitializerOp);
6553f5e024cSJung-uk Kim             break;
6563f5e024cSJung-uk Kim 
6573f5e024cSJung-uk Kim         default:
6583f5e024cSJung-uk Kim 
6593f5e024cSJung-uk Kim             AslError (ASL_ERROR, ASL_MSG_RESOURCE_LIST, InitializerOp, NULL);
6603f5e024cSJung-uk Kim             break;
6613f5e024cSJung-uk Kim         }
6623f5e024cSJung-uk Kim 
6633f5e024cSJung-uk Kim         InitializerOp = RsCompleteNodeAndGetNext (InitializerOp);
6643f5e024cSJung-uk Kim     }
6653f5e024cSJung-uk Kim 
6663f5e024cSJung-uk Kim     /* Validate the Min/Max/Len/Gran values */
6673f5e024cSJung-uk Kim 
6683f5e024cSJung-uk Kim     RsLargeAddressCheck (
6693f5e024cSJung-uk Kim         Descriptor->ExtAddress64.Minimum,
6703f5e024cSJung-uk Kim         Descriptor->ExtAddress64.Maximum,
6713f5e024cSJung-uk Kim         Descriptor->ExtAddress64.AddressLength,
6723f5e024cSJung-uk Kim         Descriptor->ExtAddress64.Granularity,
6733f5e024cSJung-uk Kim         Descriptor->ExtAddress64.Flags,
674313a0c13SJung-uk Kim         MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp);
6753f5e024cSJung-uk Kim 
676313a0c13SJung-uk Kim     Rnode->BufferLength = sizeof (AML_RESOURCE_EXTENDED_ADDRESS64) +
677313a0c13SJung-uk Kim         StringLength;
6783f5e024cSJung-uk Kim     return (Rnode);
6793f5e024cSJung-uk Kim }
680