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