10d02842fSSascha Wildner /******************************************************************************* 20d02842fSSascha Wildner * 30d02842fSSascha Wildner * Module Name: rsaddr - Address resource descriptors (16/32/64) 40d02842fSSascha Wildner * 50d02842fSSascha Wildner ******************************************************************************/ 60d02842fSSascha Wildner 70d02842fSSascha Wildner /* 8fe7b5cb4SSascha Wildner * Copyright (C) 2000 - 2015, Intel Corp. 90d02842fSSascha Wildner * All rights reserved. 100d02842fSSascha Wildner * 110d02842fSSascha Wildner * Redistribution and use in source and binary forms, with or without 120d02842fSSascha Wildner * modification, are permitted provided that the following conditions 130d02842fSSascha Wildner * are met: 140d02842fSSascha Wildner * 1. Redistributions of source code must retain the above copyright 150d02842fSSascha Wildner * notice, this list of conditions, and the following disclaimer, 160d02842fSSascha Wildner * without modification. 170d02842fSSascha Wildner * 2. Redistributions in binary form must reproduce at minimum a disclaimer 180d02842fSSascha Wildner * substantially similar to the "NO WARRANTY" disclaimer below 190d02842fSSascha Wildner * ("Disclaimer") and any redistribution must be conditioned upon 200d02842fSSascha Wildner * including a substantially similar Disclaimer requirement for further 210d02842fSSascha Wildner * binary redistribution. 220d02842fSSascha Wildner * 3. Neither the names of the above-listed copyright holders nor the names 230d02842fSSascha Wildner * of any contributors may be used to endorse or promote products derived 240d02842fSSascha Wildner * from this software without specific prior written permission. 250d02842fSSascha Wildner * 260d02842fSSascha Wildner * Alternatively, this software may be distributed under the terms of the 270d02842fSSascha Wildner * GNU General Public License ("GPL") version 2 as published by the Free 280d02842fSSascha Wildner * Software Foundation. 290d02842fSSascha Wildner * 300d02842fSSascha Wildner * NO WARRANTY 310d02842fSSascha Wildner * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 320d02842fSSascha Wildner * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 330d02842fSSascha Wildner * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 340d02842fSSascha Wildner * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 350d02842fSSascha Wildner * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 360d02842fSSascha Wildner * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 370d02842fSSascha Wildner * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 380d02842fSSascha Wildner * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 390d02842fSSascha Wildner * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 400d02842fSSascha Wildner * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 410d02842fSSascha Wildner * POSSIBILITY OF SUCH DAMAGES. 420d02842fSSascha Wildner */ 430d02842fSSascha Wildner 440d02842fSSascha Wildner #include "acpi.h" 450d02842fSSascha Wildner #include "accommon.h" 460d02842fSSascha Wildner #include "acresrc.h" 470d02842fSSascha Wildner 480d02842fSSascha Wildner #define _COMPONENT ACPI_RESOURCES 490d02842fSSascha Wildner ACPI_MODULE_NAME ("rsaddr") 500d02842fSSascha Wildner 510d02842fSSascha Wildner 520d02842fSSascha Wildner /******************************************************************************* 530d02842fSSascha Wildner * 540d02842fSSascha Wildner * AcpiRsConvertAddress16 - All WORD (16-bit) address resources 550d02842fSSascha Wildner * 560d02842fSSascha Wildner ******************************************************************************/ 570d02842fSSascha Wildner 580d02842fSSascha Wildner ACPI_RSCONVERT_INFO AcpiRsConvertAddress16[5] = 590d02842fSSascha Wildner { 600d02842fSSascha Wildner {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_ADDRESS16, 610d02842fSSascha Wildner ACPI_RS_SIZE (ACPI_RESOURCE_ADDRESS16), 620d02842fSSascha Wildner ACPI_RSC_TABLE_SIZE (AcpiRsConvertAddress16)}, 630d02842fSSascha Wildner 640d02842fSSascha Wildner {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_ADDRESS16, 650d02842fSSascha Wildner sizeof (AML_RESOURCE_ADDRESS16), 660d02842fSSascha Wildner 0}, 670d02842fSSascha Wildner 680d02842fSSascha Wildner /* Resource Type, General Flags, and Type-Specific Flags */ 690d02842fSSascha Wildner 700d02842fSSascha Wildner {ACPI_RSC_ADDRESS, 0, 0, 0}, 710d02842fSSascha Wildner 720d02842fSSascha Wildner /* 730d02842fSSascha Wildner * These fields are contiguous in both the source and destination: 740d02842fSSascha Wildner * Address Granularity 750d02842fSSascha Wildner * Address Range Minimum 760d02842fSSascha Wildner * Address Range Maximum 770d02842fSSascha Wildner * Address Translation Offset 780d02842fSSascha Wildner * Address Length 790d02842fSSascha Wildner */ 805943f66cSSascha Wildner {ACPI_RSC_MOVE16, ACPI_RS_OFFSET (Data.Address16.Address.Granularity), 810d02842fSSascha Wildner AML_OFFSET (Address16.Granularity), 820d02842fSSascha Wildner 5}, 830d02842fSSascha Wildner 840d02842fSSascha Wildner /* Optional ResourceSource (Index and String) */ 850d02842fSSascha Wildner 860d02842fSSascha Wildner {ACPI_RSC_SOURCE, ACPI_RS_OFFSET (Data.Address16.ResourceSource), 870d02842fSSascha Wildner 0, 880d02842fSSascha Wildner sizeof (AML_RESOURCE_ADDRESS16)} 890d02842fSSascha Wildner }; 900d02842fSSascha Wildner 910d02842fSSascha Wildner 920d02842fSSascha Wildner /******************************************************************************* 930d02842fSSascha Wildner * 940d02842fSSascha Wildner * AcpiRsConvertAddress32 - All DWORD (32-bit) address resources 950d02842fSSascha Wildner * 960d02842fSSascha Wildner ******************************************************************************/ 970d02842fSSascha Wildner 980d02842fSSascha Wildner ACPI_RSCONVERT_INFO AcpiRsConvertAddress32[5] = 990d02842fSSascha Wildner { 1000d02842fSSascha Wildner {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_ADDRESS32, 1010d02842fSSascha Wildner ACPI_RS_SIZE (ACPI_RESOURCE_ADDRESS32), 1020d02842fSSascha Wildner ACPI_RSC_TABLE_SIZE (AcpiRsConvertAddress32)}, 1030d02842fSSascha Wildner 1040d02842fSSascha Wildner {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_ADDRESS32, 1050d02842fSSascha Wildner sizeof (AML_RESOURCE_ADDRESS32), 1060d02842fSSascha Wildner 0}, 1070d02842fSSascha Wildner 1080d02842fSSascha Wildner /* Resource Type, General Flags, and Type-Specific Flags */ 1090d02842fSSascha Wildner 1100d02842fSSascha Wildner {ACPI_RSC_ADDRESS, 0, 0, 0}, 1110d02842fSSascha Wildner 1120d02842fSSascha Wildner /* 1130d02842fSSascha Wildner * These fields are contiguous in both the source and destination: 1140d02842fSSascha Wildner * Address Granularity 1150d02842fSSascha Wildner * Address Range Minimum 1160d02842fSSascha Wildner * Address Range Maximum 1170d02842fSSascha Wildner * Address Translation Offset 1180d02842fSSascha Wildner * Address Length 1190d02842fSSascha Wildner */ 1205943f66cSSascha Wildner {ACPI_RSC_MOVE32, ACPI_RS_OFFSET (Data.Address32.Address.Granularity), 1210d02842fSSascha Wildner AML_OFFSET (Address32.Granularity), 1220d02842fSSascha Wildner 5}, 1230d02842fSSascha Wildner 1240d02842fSSascha Wildner /* Optional ResourceSource (Index and String) */ 1250d02842fSSascha Wildner 1260d02842fSSascha Wildner {ACPI_RSC_SOURCE, ACPI_RS_OFFSET (Data.Address32.ResourceSource), 1270d02842fSSascha Wildner 0, 1280d02842fSSascha Wildner sizeof (AML_RESOURCE_ADDRESS32)} 1290d02842fSSascha Wildner }; 1300d02842fSSascha Wildner 1310d02842fSSascha Wildner 1320d02842fSSascha Wildner /******************************************************************************* 1330d02842fSSascha Wildner * 1340d02842fSSascha Wildner * AcpiRsConvertAddress64 - All QWORD (64-bit) address resources 1350d02842fSSascha Wildner * 1360d02842fSSascha Wildner ******************************************************************************/ 1370d02842fSSascha Wildner 1380d02842fSSascha Wildner ACPI_RSCONVERT_INFO AcpiRsConvertAddress64[5] = 1390d02842fSSascha Wildner { 1400d02842fSSascha Wildner {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_ADDRESS64, 1410d02842fSSascha Wildner ACPI_RS_SIZE (ACPI_RESOURCE_ADDRESS64), 1420d02842fSSascha Wildner ACPI_RSC_TABLE_SIZE (AcpiRsConvertAddress64)}, 1430d02842fSSascha Wildner 1440d02842fSSascha Wildner {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_ADDRESS64, 1450d02842fSSascha Wildner sizeof (AML_RESOURCE_ADDRESS64), 1460d02842fSSascha Wildner 0}, 1470d02842fSSascha Wildner 1480d02842fSSascha Wildner /* Resource Type, General Flags, and Type-Specific Flags */ 1490d02842fSSascha Wildner 1500d02842fSSascha Wildner {ACPI_RSC_ADDRESS, 0, 0, 0}, 1510d02842fSSascha Wildner 1520d02842fSSascha Wildner /* 1530d02842fSSascha Wildner * These fields are contiguous in both the source and destination: 1540d02842fSSascha Wildner * Address Granularity 1550d02842fSSascha Wildner * Address Range Minimum 1560d02842fSSascha Wildner * Address Range Maximum 1570d02842fSSascha Wildner * Address Translation Offset 1580d02842fSSascha Wildner * Address Length 1590d02842fSSascha Wildner */ 1605943f66cSSascha Wildner {ACPI_RSC_MOVE64, ACPI_RS_OFFSET (Data.Address64.Address.Granularity), 1610d02842fSSascha Wildner AML_OFFSET (Address64.Granularity), 1620d02842fSSascha Wildner 5}, 1630d02842fSSascha Wildner 1640d02842fSSascha Wildner /* Optional ResourceSource (Index and String) */ 1650d02842fSSascha Wildner 1660d02842fSSascha Wildner {ACPI_RSC_SOURCE, ACPI_RS_OFFSET (Data.Address64.ResourceSource), 1670d02842fSSascha Wildner 0, 1680d02842fSSascha Wildner sizeof (AML_RESOURCE_ADDRESS64)} 1690d02842fSSascha Wildner }; 1700d02842fSSascha Wildner 1710d02842fSSascha Wildner 1720d02842fSSascha Wildner /******************************************************************************* 1730d02842fSSascha Wildner * 1740d02842fSSascha Wildner * AcpiRsConvertExtAddress64 - All Extended (64-bit) address resources 1750d02842fSSascha Wildner * 1760d02842fSSascha Wildner ******************************************************************************/ 1770d02842fSSascha Wildner 1780d02842fSSascha Wildner ACPI_RSCONVERT_INFO AcpiRsConvertExtAddress64[5] = 1790d02842fSSascha Wildner { 1800d02842fSSascha Wildner {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64, 1810d02842fSSascha Wildner ACPI_RS_SIZE (ACPI_RESOURCE_EXTENDED_ADDRESS64), 1820d02842fSSascha Wildner ACPI_RSC_TABLE_SIZE (AcpiRsConvertExtAddress64)}, 1830d02842fSSascha Wildner 1840d02842fSSascha Wildner {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_EXTENDED_ADDRESS64, 1850d02842fSSascha Wildner sizeof (AML_RESOURCE_EXTENDED_ADDRESS64), 1860d02842fSSascha Wildner 0}, 1870d02842fSSascha Wildner 1880d02842fSSascha Wildner /* Resource Type, General Flags, and Type-Specific Flags */ 1890d02842fSSascha Wildner 1900d02842fSSascha Wildner {ACPI_RSC_ADDRESS, 0, 0, 0}, 1910d02842fSSascha Wildner 1920d02842fSSascha Wildner /* Revision ID */ 1930d02842fSSascha Wildner 1940d02842fSSascha Wildner {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.ExtAddress64.RevisionID), 1950d02842fSSascha Wildner AML_OFFSET (ExtAddress64.RevisionID), 1960d02842fSSascha Wildner 1}, 1970d02842fSSascha Wildner /* 1980d02842fSSascha Wildner * These fields are contiguous in both the source and destination: 1990d02842fSSascha Wildner * Address Granularity 2000d02842fSSascha Wildner * Address Range Minimum 2010d02842fSSascha Wildner * Address Range Maximum 2020d02842fSSascha Wildner * Address Translation Offset 2030d02842fSSascha Wildner * Address Length 2040d02842fSSascha Wildner * Type-Specific Attribute 2050d02842fSSascha Wildner */ 2065943f66cSSascha Wildner {ACPI_RSC_MOVE64, ACPI_RS_OFFSET (Data.ExtAddress64.Address.Granularity), 2070d02842fSSascha Wildner AML_OFFSET (ExtAddress64.Granularity), 2080d02842fSSascha Wildner 6} 2090d02842fSSascha Wildner }; 2100d02842fSSascha Wildner 2110d02842fSSascha Wildner 2120d02842fSSascha Wildner /******************************************************************************* 2130d02842fSSascha Wildner * 2140d02842fSSascha Wildner * AcpiRsConvertGeneralFlags - Flags common to all address descriptors 2150d02842fSSascha Wildner * 2160d02842fSSascha Wildner ******************************************************************************/ 2170d02842fSSascha Wildner 2180d02842fSSascha Wildner static ACPI_RSCONVERT_INFO AcpiRsConvertGeneralFlags[6] = 2190d02842fSSascha Wildner { 2200d02842fSSascha Wildner {ACPI_RSC_FLAGINIT, 0, AML_OFFSET (Address.Flags), 2210d02842fSSascha Wildner ACPI_RSC_TABLE_SIZE (AcpiRsConvertGeneralFlags)}, 2220d02842fSSascha Wildner 2230d02842fSSascha Wildner /* Resource Type (Memory, Io, BusNumber, etc.) */ 2240d02842fSSascha Wildner 2250d02842fSSascha Wildner {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.Address.ResourceType), 2260d02842fSSascha Wildner AML_OFFSET (Address.ResourceType), 2270d02842fSSascha Wildner 1}, 2280d02842fSSascha Wildner 2290d02842fSSascha Wildner /* General Flags - Consume, Decode, MinFixed, MaxFixed */ 2300d02842fSSascha Wildner 2310d02842fSSascha Wildner {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Address.ProducerConsumer), 2320d02842fSSascha Wildner AML_OFFSET (Address.Flags), 2330d02842fSSascha Wildner 0}, 2340d02842fSSascha Wildner 2350d02842fSSascha Wildner {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Address.Decode), 2360d02842fSSascha Wildner AML_OFFSET (Address.Flags), 2370d02842fSSascha Wildner 1}, 2380d02842fSSascha Wildner 2390d02842fSSascha Wildner {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Address.MinAddressFixed), 2400d02842fSSascha Wildner AML_OFFSET (Address.Flags), 2410d02842fSSascha Wildner 2}, 2420d02842fSSascha Wildner 2430d02842fSSascha Wildner {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Address.MaxAddressFixed), 2440d02842fSSascha Wildner AML_OFFSET (Address.Flags), 2450d02842fSSascha Wildner 3} 2460d02842fSSascha Wildner }; 2470d02842fSSascha Wildner 2480d02842fSSascha Wildner 2490d02842fSSascha Wildner /******************************************************************************* 2500d02842fSSascha Wildner * 2510d02842fSSascha Wildner * AcpiRsConvertMemFlags - Flags common to Memory address descriptors 2520d02842fSSascha Wildner * 2530d02842fSSascha Wildner ******************************************************************************/ 2540d02842fSSascha Wildner 2550d02842fSSascha Wildner static ACPI_RSCONVERT_INFO AcpiRsConvertMemFlags[5] = 2560d02842fSSascha Wildner { 2570d02842fSSascha Wildner {ACPI_RSC_FLAGINIT, 0, AML_OFFSET (Address.SpecificFlags), 2580d02842fSSascha Wildner ACPI_RSC_TABLE_SIZE (AcpiRsConvertMemFlags)}, 2590d02842fSSascha Wildner 2600d02842fSSascha Wildner /* Memory-specific flags */ 2610d02842fSSascha Wildner 2620d02842fSSascha Wildner {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Address.Info.Mem.WriteProtect), 2630d02842fSSascha Wildner AML_OFFSET (Address.SpecificFlags), 2640d02842fSSascha Wildner 0}, 2650d02842fSSascha Wildner 2660d02842fSSascha Wildner {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET (Data.Address.Info.Mem.Caching), 2670d02842fSSascha Wildner AML_OFFSET (Address.SpecificFlags), 2680d02842fSSascha Wildner 1}, 2690d02842fSSascha Wildner 2700d02842fSSascha Wildner {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET (Data.Address.Info.Mem.RangeType), 2710d02842fSSascha Wildner AML_OFFSET (Address.SpecificFlags), 2720d02842fSSascha Wildner 3}, 2730d02842fSSascha Wildner 2740d02842fSSascha Wildner {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Address.Info.Mem.Translation), 2750d02842fSSascha Wildner AML_OFFSET (Address.SpecificFlags), 2760d02842fSSascha Wildner 5} 2770d02842fSSascha Wildner }; 2780d02842fSSascha Wildner 2790d02842fSSascha Wildner 2800d02842fSSascha Wildner /******************************************************************************* 2810d02842fSSascha Wildner * 2820d02842fSSascha Wildner * AcpiRsConvertIoFlags - Flags common to I/O address descriptors 2830d02842fSSascha Wildner * 2840d02842fSSascha Wildner ******************************************************************************/ 2850d02842fSSascha Wildner 2860d02842fSSascha Wildner static ACPI_RSCONVERT_INFO AcpiRsConvertIoFlags[4] = 2870d02842fSSascha Wildner { 2880d02842fSSascha Wildner {ACPI_RSC_FLAGINIT, 0, AML_OFFSET (Address.SpecificFlags), 2890d02842fSSascha Wildner ACPI_RSC_TABLE_SIZE (AcpiRsConvertIoFlags)}, 2900d02842fSSascha Wildner 2910d02842fSSascha Wildner /* I/O-specific flags */ 2920d02842fSSascha Wildner 2930d02842fSSascha Wildner {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET (Data.Address.Info.Io.RangeType), 2940d02842fSSascha Wildner AML_OFFSET (Address.SpecificFlags), 2950d02842fSSascha Wildner 0}, 2960d02842fSSascha Wildner 2970d02842fSSascha Wildner {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Address.Info.Io.Translation), 2980d02842fSSascha Wildner AML_OFFSET (Address.SpecificFlags), 2990d02842fSSascha Wildner 4}, 3000d02842fSSascha Wildner 3010d02842fSSascha Wildner {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Address.Info.Io.TranslationType), 3020d02842fSSascha Wildner AML_OFFSET (Address.SpecificFlags), 3030d02842fSSascha Wildner 5} 3040d02842fSSascha Wildner }; 3050d02842fSSascha Wildner 3060d02842fSSascha Wildner 3070d02842fSSascha Wildner /******************************************************************************* 3080d02842fSSascha Wildner * 3090d02842fSSascha Wildner * FUNCTION: AcpiRsGetAddressCommon 3100d02842fSSascha Wildner * 3110d02842fSSascha Wildner * PARAMETERS: Resource - Pointer to the internal resource struct 3120d02842fSSascha Wildner * Aml - Pointer to the AML resource descriptor 3130d02842fSSascha Wildner * 3140d02842fSSascha Wildner * RETURN: TRUE if the ResourceType field is OK, FALSE otherwise 3150d02842fSSascha Wildner * 3160d02842fSSascha Wildner * DESCRIPTION: Convert common flag fields from a raw AML resource descriptor 3170d02842fSSascha Wildner * to an internal resource descriptor 3180d02842fSSascha Wildner * 3190d02842fSSascha Wildner ******************************************************************************/ 3200d02842fSSascha Wildner 3210d02842fSSascha Wildner BOOLEAN 3220d02842fSSascha Wildner AcpiRsGetAddressCommon ( 3230d02842fSSascha Wildner ACPI_RESOURCE *Resource, 3240d02842fSSascha Wildner AML_RESOURCE *Aml) 3250d02842fSSascha Wildner { 3260d02842fSSascha Wildner ACPI_FUNCTION_ENTRY (); 3270d02842fSSascha Wildner 3280d02842fSSascha Wildner 3290d02842fSSascha Wildner /* Validate the Resource Type */ 3300d02842fSSascha Wildner 331*820c5b08SSascha Wildner if ((Aml->Address.ResourceType > 2) && 332*820c5b08SSascha Wildner (Aml->Address.ResourceType < 0xC0)) 3330d02842fSSascha Wildner { 3340d02842fSSascha Wildner return (FALSE); 3350d02842fSSascha Wildner } 3360d02842fSSascha Wildner 3370d02842fSSascha Wildner /* Get the Resource Type and General Flags */ 3380d02842fSSascha Wildner 339*820c5b08SSascha Wildner (void) AcpiRsConvertAmlToResource ( 340*820c5b08SSascha Wildner Resource, Aml, AcpiRsConvertGeneralFlags); 3410d02842fSSascha Wildner 3420d02842fSSascha Wildner /* Get the Type-Specific Flags (Memory and I/O descriptors only) */ 3430d02842fSSascha Wildner 3440d02842fSSascha Wildner if (Resource->Data.Address.ResourceType == ACPI_MEMORY_RANGE) 3450d02842fSSascha Wildner { 346*820c5b08SSascha Wildner (void) AcpiRsConvertAmlToResource ( 347*820c5b08SSascha Wildner Resource, Aml, AcpiRsConvertMemFlags); 3480d02842fSSascha Wildner } 3490d02842fSSascha Wildner else if (Resource->Data.Address.ResourceType == ACPI_IO_RANGE) 3500d02842fSSascha Wildner { 351*820c5b08SSascha Wildner (void) AcpiRsConvertAmlToResource ( 352*820c5b08SSascha Wildner Resource, Aml, AcpiRsConvertIoFlags); 3530d02842fSSascha Wildner } 3540d02842fSSascha Wildner else 3550d02842fSSascha Wildner { 3560d02842fSSascha Wildner /* Generic resource type, just grab the TypeSpecific byte */ 3570d02842fSSascha Wildner 358*820c5b08SSascha Wildner Resource->Data.Address.Info.TypeSpecific = 359*820c5b08SSascha Wildner Aml->Address.SpecificFlags; 3600d02842fSSascha Wildner } 3610d02842fSSascha Wildner 3620d02842fSSascha Wildner return (TRUE); 3630d02842fSSascha Wildner } 3640d02842fSSascha Wildner 3650d02842fSSascha Wildner 3660d02842fSSascha Wildner /******************************************************************************* 3670d02842fSSascha Wildner * 3680d02842fSSascha Wildner * FUNCTION: AcpiRsSetAddressCommon 3690d02842fSSascha Wildner * 3700d02842fSSascha Wildner * PARAMETERS: Aml - Pointer to the AML resource descriptor 3710d02842fSSascha Wildner * Resource - Pointer to the internal resource struct 3720d02842fSSascha Wildner * 3730d02842fSSascha Wildner * RETURN: None 3740d02842fSSascha Wildner * 3750d02842fSSascha Wildner * DESCRIPTION: Convert common flag fields from a resource descriptor to an 3760d02842fSSascha Wildner * AML descriptor 3770d02842fSSascha Wildner * 3780d02842fSSascha Wildner ******************************************************************************/ 3790d02842fSSascha Wildner 3800d02842fSSascha Wildner void 3810d02842fSSascha Wildner AcpiRsSetAddressCommon ( 3820d02842fSSascha Wildner AML_RESOURCE *Aml, 3830d02842fSSascha Wildner ACPI_RESOURCE *Resource) 3840d02842fSSascha Wildner { 3850d02842fSSascha Wildner ACPI_FUNCTION_ENTRY (); 3860d02842fSSascha Wildner 3870d02842fSSascha Wildner 3880d02842fSSascha Wildner /* Set the Resource Type and General Flags */ 3890d02842fSSascha Wildner 390*820c5b08SSascha Wildner (void) AcpiRsConvertResourceToAml ( 391*820c5b08SSascha Wildner Resource, Aml, AcpiRsConvertGeneralFlags); 3920d02842fSSascha Wildner 3930d02842fSSascha Wildner /* Set the Type-Specific Flags (Memory and I/O descriptors only) */ 3940d02842fSSascha Wildner 3950d02842fSSascha Wildner if (Resource->Data.Address.ResourceType == ACPI_MEMORY_RANGE) 3960d02842fSSascha Wildner { 397*820c5b08SSascha Wildner (void) AcpiRsConvertResourceToAml ( 398*820c5b08SSascha Wildner Resource, Aml, AcpiRsConvertMemFlags); 3990d02842fSSascha Wildner } 4000d02842fSSascha Wildner else if (Resource->Data.Address.ResourceType == ACPI_IO_RANGE) 4010d02842fSSascha Wildner { 402*820c5b08SSascha Wildner (void) AcpiRsConvertResourceToAml ( 403*820c5b08SSascha Wildner Resource, Aml, AcpiRsConvertIoFlags); 4040d02842fSSascha Wildner } 4050d02842fSSascha Wildner else 4060d02842fSSascha Wildner { 4070d02842fSSascha Wildner /* Generic resource type, just copy the TypeSpecific byte */ 4080d02842fSSascha Wildner 409*820c5b08SSascha Wildner Aml->Address.SpecificFlags = 410*820c5b08SSascha Wildner Resource->Data.Address.Info.TypeSpecific; 4110d02842fSSascha Wildner } 4120d02842fSSascha Wildner } 413