1a159c266SJung-uk Kim /******************************************************************************* 2a159c266SJung-uk Kim * 3a159c266SJung-uk Kim * Module Name: rsaddr - Address resource descriptors (16/32/64) 4a159c266SJung-uk Kim * 5a159c266SJung-uk Kim ******************************************************************************/ 6a159c266SJung-uk Kim 7a159c266SJung-uk Kim /* 8*f8146b88SJung-uk Kim * Copyright (C) 2000 - 2016, Intel Corp. 9a159c266SJung-uk Kim * All rights reserved. 10a159c266SJung-uk Kim * 11a159c266SJung-uk Kim * Redistribution and use in source and binary forms, with or without 12a159c266SJung-uk Kim * modification, are permitted provided that the following conditions 13a159c266SJung-uk Kim * are met: 14a159c266SJung-uk Kim * 1. Redistributions of source code must retain the above copyright 15a159c266SJung-uk Kim * notice, this list of conditions, and the following disclaimer, 16a159c266SJung-uk Kim * without modification. 17a159c266SJung-uk Kim * 2. Redistributions in binary form must reproduce at minimum a disclaimer 18a159c266SJung-uk Kim * substantially similar to the "NO WARRANTY" disclaimer below 19a159c266SJung-uk Kim * ("Disclaimer") and any redistribution must be conditioned upon 20a159c266SJung-uk Kim * including a substantially similar Disclaimer requirement for further 21a159c266SJung-uk Kim * binary redistribution. 22a159c266SJung-uk Kim * 3. Neither the names of the above-listed copyright holders nor the names 23a159c266SJung-uk Kim * of any contributors may be used to endorse or promote products derived 24a159c266SJung-uk Kim * from this software without specific prior written permission. 25a159c266SJung-uk Kim * 26a159c266SJung-uk Kim * Alternatively, this software may be distributed under the terms of the 27a159c266SJung-uk Kim * GNU General Public License ("GPL") version 2 as published by the Free 28a159c266SJung-uk Kim * Software Foundation. 29a159c266SJung-uk Kim * 30a159c266SJung-uk Kim * NO WARRANTY 31a159c266SJung-uk Kim * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32a159c266SJung-uk Kim * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33a159c266SJung-uk Kim * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 34a159c266SJung-uk Kim * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35a159c266SJung-uk Kim * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 36a159c266SJung-uk Kim * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 37a159c266SJung-uk Kim * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 38a159c266SJung-uk Kim * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 39a159c266SJung-uk Kim * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 40a159c266SJung-uk Kim * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 41a159c266SJung-uk Kim * POSSIBILITY OF SUCH DAMAGES. 42a159c266SJung-uk Kim */ 43a159c266SJung-uk Kim 44a159c266SJung-uk Kim #include <contrib/dev/acpica/include/acpi.h> 45a159c266SJung-uk Kim #include <contrib/dev/acpica/include/accommon.h> 46a159c266SJung-uk Kim #include <contrib/dev/acpica/include/acresrc.h> 47a159c266SJung-uk Kim 48a159c266SJung-uk Kim #define _COMPONENT ACPI_RESOURCES 49a159c266SJung-uk Kim ACPI_MODULE_NAME ("rsaddr") 50a159c266SJung-uk Kim 51a159c266SJung-uk Kim 52a159c266SJung-uk Kim /******************************************************************************* 53a159c266SJung-uk Kim * 54a159c266SJung-uk Kim * AcpiRsConvertAddress16 - All WORD (16-bit) address resources 55a159c266SJung-uk Kim * 56a159c266SJung-uk Kim ******************************************************************************/ 57a159c266SJung-uk Kim 58a159c266SJung-uk Kim ACPI_RSCONVERT_INFO AcpiRsConvertAddress16[5] = 59a159c266SJung-uk Kim { 60a159c266SJung-uk Kim {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_ADDRESS16, 61a159c266SJung-uk Kim ACPI_RS_SIZE (ACPI_RESOURCE_ADDRESS16), 62a159c266SJung-uk Kim ACPI_RSC_TABLE_SIZE (AcpiRsConvertAddress16)}, 63a159c266SJung-uk Kim 64a159c266SJung-uk Kim {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_ADDRESS16, 65a159c266SJung-uk Kim sizeof (AML_RESOURCE_ADDRESS16), 66a159c266SJung-uk Kim 0}, 67a159c266SJung-uk Kim 68a159c266SJung-uk Kim /* Resource Type, General Flags, and Type-Specific Flags */ 69a159c266SJung-uk Kim 70a159c266SJung-uk Kim {ACPI_RSC_ADDRESS, 0, 0, 0}, 71a159c266SJung-uk Kim 72a159c266SJung-uk Kim /* 73a159c266SJung-uk Kim * These fields are contiguous in both the source and destination: 74a159c266SJung-uk Kim * Address Granularity 75a159c266SJung-uk Kim * Address Range Minimum 76a159c266SJung-uk Kim * Address Range Maximum 77a159c266SJung-uk Kim * Address Translation Offset 78a159c266SJung-uk Kim * Address Length 79a159c266SJung-uk Kim */ 807cf3e94aSJung-uk Kim {ACPI_RSC_MOVE16, ACPI_RS_OFFSET (Data.Address16.Address.Granularity), 81a159c266SJung-uk Kim AML_OFFSET (Address16.Granularity), 82a159c266SJung-uk Kim 5}, 83a159c266SJung-uk Kim 84a159c266SJung-uk Kim /* Optional ResourceSource (Index and String) */ 85a159c266SJung-uk Kim 86a159c266SJung-uk Kim {ACPI_RSC_SOURCE, ACPI_RS_OFFSET (Data.Address16.ResourceSource), 87a159c266SJung-uk Kim 0, 88a159c266SJung-uk Kim sizeof (AML_RESOURCE_ADDRESS16)} 89a159c266SJung-uk Kim }; 90a159c266SJung-uk Kim 91a159c266SJung-uk Kim 92a159c266SJung-uk Kim /******************************************************************************* 93a159c266SJung-uk Kim * 94a159c266SJung-uk Kim * AcpiRsConvertAddress32 - All DWORD (32-bit) address resources 95a159c266SJung-uk Kim * 96a159c266SJung-uk Kim ******************************************************************************/ 97a159c266SJung-uk Kim 98a159c266SJung-uk Kim ACPI_RSCONVERT_INFO AcpiRsConvertAddress32[5] = 99a159c266SJung-uk Kim { 100a159c266SJung-uk Kim {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_ADDRESS32, 101a159c266SJung-uk Kim ACPI_RS_SIZE (ACPI_RESOURCE_ADDRESS32), 102a159c266SJung-uk Kim ACPI_RSC_TABLE_SIZE (AcpiRsConvertAddress32)}, 103a159c266SJung-uk Kim 104a159c266SJung-uk Kim {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_ADDRESS32, 105a159c266SJung-uk Kim sizeof (AML_RESOURCE_ADDRESS32), 106a159c266SJung-uk Kim 0}, 107a159c266SJung-uk Kim 108a159c266SJung-uk Kim /* Resource Type, General Flags, and Type-Specific Flags */ 109a159c266SJung-uk Kim 110a159c266SJung-uk Kim {ACPI_RSC_ADDRESS, 0, 0, 0}, 111a159c266SJung-uk Kim 112a159c266SJung-uk Kim /* 113a159c266SJung-uk Kim * These fields are contiguous in both the source and destination: 114a159c266SJung-uk Kim * Address Granularity 115a159c266SJung-uk Kim * Address Range Minimum 116a159c266SJung-uk Kim * Address Range Maximum 117a159c266SJung-uk Kim * Address Translation Offset 118a159c266SJung-uk Kim * Address Length 119a159c266SJung-uk Kim */ 1207cf3e94aSJung-uk Kim {ACPI_RSC_MOVE32, ACPI_RS_OFFSET (Data.Address32.Address.Granularity), 121a159c266SJung-uk Kim AML_OFFSET (Address32.Granularity), 122a159c266SJung-uk Kim 5}, 123a159c266SJung-uk Kim 124a159c266SJung-uk Kim /* Optional ResourceSource (Index and String) */ 125a159c266SJung-uk Kim 126a159c266SJung-uk Kim {ACPI_RSC_SOURCE, ACPI_RS_OFFSET (Data.Address32.ResourceSource), 127a159c266SJung-uk Kim 0, 128a159c266SJung-uk Kim sizeof (AML_RESOURCE_ADDRESS32)} 129a159c266SJung-uk Kim }; 130a159c266SJung-uk Kim 131a159c266SJung-uk Kim 132a159c266SJung-uk Kim /******************************************************************************* 133a159c266SJung-uk Kim * 134a159c266SJung-uk Kim * AcpiRsConvertAddress64 - All QWORD (64-bit) address resources 135a159c266SJung-uk Kim * 136a159c266SJung-uk Kim ******************************************************************************/ 137a159c266SJung-uk Kim 138a159c266SJung-uk Kim ACPI_RSCONVERT_INFO AcpiRsConvertAddress64[5] = 139a159c266SJung-uk Kim { 140a159c266SJung-uk Kim {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_ADDRESS64, 141a159c266SJung-uk Kim ACPI_RS_SIZE (ACPI_RESOURCE_ADDRESS64), 142a159c266SJung-uk Kim ACPI_RSC_TABLE_SIZE (AcpiRsConvertAddress64)}, 143a159c266SJung-uk Kim 144a159c266SJung-uk Kim {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_ADDRESS64, 145a159c266SJung-uk Kim sizeof (AML_RESOURCE_ADDRESS64), 146a159c266SJung-uk Kim 0}, 147a159c266SJung-uk Kim 148a159c266SJung-uk Kim /* Resource Type, General Flags, and Type-Specific Flags */ 149a159c266SJung-uk Kim 150a159c266SJung-uk Kim {ACPI_RSC_ADDRESS, 0, 0, 0}, 151a159c266SJung-uk Kim 152a159c266SJung-uk Kim /* 153a159c266SJung-uk Kim * These fields are contiguous in both the source and destination: 154a159c266SJung-uk Kim * Address Granularity 155a159c266SJung-uk Kim * Address Range Minimum 156a159c266SJung-uk Kim * Address Range Maximum 157a159c266SJung-uk Kim * Address Translation Offset 158a159c266SJung-uk Kim * Address Length 159a159c266SJung-uk Kim */ 1607cf3e94aSJung-uk Kim {ACPI_RSC_MOVE64, ACPI_RS_OFFSET (Data.Address64.Address.Granularity), 161a159c266SJung-uk Kim AML_OFFSET (Address64.Granularity), 162a159c266SJung-uk Kim 5}, 163a159c266SJung-uk Kim 164a159c266SJung-uk Kim /* Optional ResourceSource (Index and String) */ 165a159c266SJung-uk Kim 166a159c266SJung-uk Kim {ACPI_RSC_SOURCE, ACPI_RS_OFFSET (Data.Address64.ResourceSource), 167a159c266SJung-uk Kim 0, 168a159c266SJung-uk Kim sizeof (AML_RESOURCE_ADDRESS64)} 169a159c266SJung-uk Kim }; 170a159c266SJung-uk Kim 171a159c266SJung-uk Kim 172a159c266SJung-uk Kim /******************************************************************************* 173a159c266SJung-uk Kim * 174a159c266SJung-uk Kim * AcpiRsConvertExtAddress64 - All Extended (64-bit) address resources 175a159c266SJung-uk Kim * 176a159c266SJung-uk Kim ******************************************************************************/ 177a159c266SJung-uk Kim 178a159c266SJung-uk Kim ACPI_RSCONVERT_INFO AcpiRsConvertExtAddress64[5] = 179a159c266SJung-uk Kim { 180a159c266SJung-uk Kim {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64, 181a159c266SJung-uk Kim ACPI_RS_SIZE (ACPI_RESOURCE_EXTENDED_ADDRESS64), 182a159c266SJung-uk Kim ACPI_RSC_TABLE_SIZE (AcpiRsConvertExtAddress64)}, 183a159c266SJung-uk Kim 184a159c266SJung-uk Kim {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_EXTENDED_ADDRESS64, 185a159c266SJung-uk Kim sizeof (AML_RESOURCE_EXTENDED_ADDRESS64), 186a159c266SJung-uk Kim 0}, 187a159c266SJung-uk Kim 188a159c266SJung-uk Kim /* Resource Type, General Flags, and Type-Specific Flags */ 189a159c266SJung-uk Kim 190a159c266SJung-uk Kim {ACPI_RSC_ADDRESS, 0, 0, 0}, 191a159c266SJung-uk Kim 192a159c266SJung-uk Kim /* Revision ID */ 193a159c266SJung-uk Kim 194a159c266SJung-uk Kim {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.ExtAddress64.RevisionID), 195a159c266SJung-uk Kim AML_OFFSET (ExtAddress64.RevisionID), 196a159c266SJung-uk Kim 1}, 197a159c266SJung-uk Kim /* 198a159c266SJung-uk Kim * These fields are contiguous in both the source and destination: 199a159c266SJung-uk Kim * Address Granularity 200a159c266SJung-uk Kim * Address Range Minimum 201a159c266SJung-uk Kim * Address Range Maximum 202a159c266SJung-uk Kim * Address Translation Offset 203a159c266SJung-uk Kim * Address Length 204a159c266SJung-uk Kim * Type-Specific Attribute 205a159c266SJung-uk Kim */ 2067cf3e94aSJung-uk Kim {ACPI_RSC_MOVE64, ACPI_RS_OFFSET (Data.ExtAddress64.Address.Granularity), 207a159c266SJung-uk Kim AML_OFFSET (ExtAddress64.Granularity), 208a159c266SJung-uk Kim 6} 209a159c266SJung-uk Kim }; 210a159c266SJung-uk Kim 211a159c266SJung-uk Kim 212a159c266SJung-uk Kim /******************************************************************************* 213a159c266SJung-uk Kim * 214a159c266SJung-uk Kim * AcpiRsConvertGeneralFlags - Flags common to all address descriptors 215a159c266SJung-uk Kim * 216a159c266SJung-uk Kim ******************************************************************************/ 217a159c266SJung-uk Kim 218a159c266SJung-uk Kim static ACPI_RSCONVERT_INFO AcpiRsConvertGeneralFlags[6] = 219a159c266SJung-uk Kim { 220a159c266SJung-uk Kim {ACPI_RSC_FLAGINIT, 0, AML_OFFSET (Address.Flags), 221a159c266SJung-uk Kim ACPI_RSC_TABLE_SIZE (AcpiRsConvertGeneralFlags)}, 222a159c266SJung-uk Kim 223a159c266SJung-uk Kim /* Resource Type (Memory, Io, BusNumber, etc.) */ 224a159c266SJung-uk Kim 225a159c266SJung-uk Kim {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.Address.ResourceType), 226a159c266SJung-uk Kim AML_OFFSET (Address.ResourceType), 227a159c266SJung-uk Kim 1}, 228a159c266SJung-uk Kim 229a159c266SJung-uk Kim /* General Flags - Consume, Decode, MinFixed, MaxFixed */ 230a159c266SJung-uk Kim 231a159c266SJung-uk Kim {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Address.ProducerConsumer), 232a159c266SJung-uk Kim AML_OFFSET (Address.Flags), 233a159c266SJung-uk Kim 0}, 234a159c266SJung-uk Kim 235a159c266SJung-uk Kim {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Address.Decode), 236a159c266SJung-uk Kim AML_OFFSET (Address.Flags), 237a159c266SJung-uk Kim 1}, 238a159c266SJung-uk Kim 239a159c266SJung-uk Kim {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Address.MinAddressFixed), 240a159c266SJung-uk Kim AML_OFFSET (Address.Flags), 241a159c266SJung-uk Kim 2}, 242a159c266SJung-uk Kim 243a159c266SJung-uk Kim {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Address.MaxAddressFixed), 244a159c266SJung-uk Kim AML_OFFSET (Address.Flags), 245a159c266SJung-uk Kim 3} 246a159c266SJung-uk Kim }; 247a159c266SJung-uk Kim 248a159c266SJung-uk Kim 249a159c266SJung-uk Kim /******************************************************************************* 250a159c266SJung-uk Kim * 251a159c266SJung-uk Kim * AcpiRsConvertMemFlags - Flags common to Memory address descriptors 252a159c266SJung-uk Kim * 253a159c266SJung-uk Kim ******************************************************************************/ 254a159c266SJung-uk Kim 255a159c266SJung-uk Kim static ACPI_RSCONVERT_INFO AcpiRsConvertMemFlags[5] = 256a159c266SJung-uk Kim { 257a159c266SJung-uk Kim {ACPI_RSC_FLAGINIT, 0, AML_OFFSET (Address.SpecificFlags), 258a159c266SJung-uk Kim ACPI_RSC_TABLE_SIZE (AcpiRsConvertMemFlags)}, 259a159c266SJung-uk Kim 260a159c266SJung-uk Kim /* Memory-specific flags */ 261a159c266SJung-uk Kim 262a159c266SJung-uk Kim {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Address.Info.Mem.WriteProtect), 263a159c266SJung-uk Kim AML_OFFSET (Address.SpecificFlags), 264a159c266SJung-uk Kim 0}, 265a159c266SJung-uk Kim 266a159c266SJung-uk Kim {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET (Data.Address.Info.Mem.Caching), 267a159c266SJung-uk Kim AML_OFFSET (Address.SpecificFlags), 268a159c266SJung-uk Kim 1}, 269a159c266SJung-uk Kim 270a159c266SJung-uk Kim {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET (Data.Address.Info.Mem.RangeType), 271a159c266SJung-uk Kim AML_OFFSET (Address.SpecificFlags), 272a159c266SJung-uk Kim 3}, 273a159c266SJung-uk Kim 274a159c266SJung-uk Kim {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Address.Info.Mem.Translation), 275a159c266SJung-uk Kim AML_OFFSET (Address.SpecificFlags), 276a159c266SJung-uk Kim 5} 277a159c266SJung-uk Kim }; 278a159c266SJung-uk Kim 279a159c266SJung-uk Kim 280a159c266SJung-uk Kim /******************************************************************************* 281a159c266SJung-uk Kim * 282a159c266SJung-uk Kim * AcpiRsConvertIoFlags - Flags common to I/O address descriptors 283a159c266SJung-uk Kim * 284a159c266SJung-uk Kim ******************************************************************************/ 285a159c266SJung-uk Kim 286a159c266SJung-uk Kim static ACPI_RSCONVERT_INFO AcpiRsConvertIoFlags[4] = 287a159c266SJung-uk Kim { 288a159c266SJung-uk Kim {ACPI_RSC_FLAGINIT, 0, AML_OFFSET (Address.SpecificFlags), 289a159c266SJung-uk Kim ACPI_RSC_TABLE_SIZE (AcpiRsConvertIoFlags)}, 290a159c266SJung-uk Kim 291a159c266SJung-uk Kim /* I/O-specific flags */ 292a159c266SJung-uk Kim 293a159c266SJung-uk Kim {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET (Data.Address.Info.Io.RangeType), 294a159c266SJung-uk Kim AML_OFFSET (Address.SpecificFlags), 295a159c266SJung-uk Kim 0}, 296a159c266SJung-uk Kim 297a159c266SJung-uk Kim {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Address.Info.Io.Translation), 298a159c266SJung-uk Kim AML_OFFSET (Address.SpecificFlags), 299a159c266SJung-uk Kim 4}, 300a159c266SJung-uk Kim 301a159c266SJung-uk Kim {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Address.Info.Io.TranslationType), 302a159c266SJung-uk Kim AML_OFFSET (Address.SpecificFlags), 303a159c266SJung-uk Kim 5} 304a159c266SJung-uk Kim }; 305a159c266SJung-uk Kim 306a159c266SJung-uk Kim 307a159c266SJung-uk Kim /******************************************************************************* 308a159c266SJung-uk Kim * 309a159c266SJung-uk Kim * FUNCTION: AcpiRsGetAddressCommon 310a159c266SJung-uk Kim * 311a159c266SJung-uk Kim * PARAMETERS: Resource - Pointer to the internal resource struct 312a159c266SJung-uk Kim * Aml - Pointer to the AML resource descriptor 313a159c266SJung-uk Kim * 314a159c266SJung-uk Kim * RETURN: TRUE if the ResourceType field is OK, FALSE otherwise 315a159c266SJung-uk Kim * 316a159c266SJung-uk Kim * DESCRIPTION: Convert common flag fields from a raw AML resource descriptor 317a159c266SJung-uk Kim * to an internal resource descriptor 318a159c266SJung-uk Kim * 319a159c266SJung-uk Kim ******************************************************************************/ 320a159c266SJung-uk Kim 321a159c266SJung-uk Kim BOOLEAN 322a159c266SJung-uk Kim AcpiRsGetAddressCommon ( 323a159c266SJung-uk Kim ACPI_RESOURCE *Resource, 324a159c266SJung-uk Kim AML_RESOURCE *Aml) 325a159c266SJung-uk Kim { 326a159c266SJung-uk Kim ACPI_FUNCTION_ENTRY (); 327a159c266SJung-uk Kim 328a159c266SJung-uk Kim 329a159c266SJung-uk Kim /* Validate the Resource Type */ 330a159c266SJung-uk Kim 331*f8146b88SJung-uk Kim if ((Aml->Address.ResourceType > 2) && 332*f8146b88SJung-uk Kim (Aml->Address.ResourceType < 0xC0)) 333a159c266SJung-uk Kim { 334a159c266SJung-uk Kim return (FALSE); 335a159c266SJung-uk Kim } 336a159c266SJung-uk Kim 337a159c266SJung-uk Kim /* Get the Resource Type and General Flags */ 338a159c266SJung-uk Kim 339*f8146b88SJung-uk Kim (void) AcpiRsConvertAmlToResource ( 340*f8146b88SJung-uk Kim Resource, Aml, AcpiRsConvertGeneralFlags); 341a159c266SJung-uk Kim 342a159c266SJung-uk Kim /* Get the Type-Specific Flags (Memory and I/O descriptors only) */ 343a159c266SJung-uk Kim 344a159c266SJung-uk Kim if (Resource->Data.Address.ResourceType == ACPI_MEMORY_RANGE) 345a159c266SJung-uk Kim { 346*f8146b88SJung-uk Kim (void) AcpiRsConvertAmlToResource ( 347*f8146b88SJung-uk Kim Resource, Aml, AcpiRsConvertMemFlags); 348a159c266SJung-uk Kim } 349a159c266SJung-uk Kim else if (Resource->Data.Address.ResourceType == ACPI_IO_RANGE) 350a159c266SJung-uk Kim { 351*f8146b88SJung-uk Kim (void) AcpiRsConvertAmlToResource ( 352*f8146b88SJung-uk Kim Resource, Aml, AcpiRsConvertIoFlags); 353a159c266SJung-uk Kim } 354a159c266SJung-uk Kim else 355a159c266SJung-uk Kim { 356a159c266SJung-uk Kim /* Generic resource type, just grab the TypeSpecific byte */ 357a159c266SJung-uk Kim 358*f8146b88SJung-uk Kim Resource->Data.Address.Info.TypeSpecific = 359*f8146b88SJung-uk Kim Aml->Address.SpecificFlags; 360a159c266SJung-uk Kim } 361a159c266SJung-uk Kim 362a159c266SJung-uk Kim return (TRUE); 363a159c266SJung-uk Kim } 364a159c266SJung-uk Kim 365a159c266SJung-uk Kim 366a159c266SJung-uk Kim /******************************************************************************* 367a159c266SJung-uk Kim * 368a159c266SJung-uk Kim * FUNCTION: AcpiRsSetAddressCommon 369a159c266SJung-uk Kim * 370a159c266SJung-uk Kim * PARAMETERS: Aml - Pointer to the AML resource descriptor 371a159c266SJung-uk Kim * Resource - Pointer to the internal resource struct 372a159c266SJung-uk Kim * 373a159c266SJung-uk Kim * RETURN: None 374a159c266SJung-uk Kim * 375a159c266SJung-uk Kim * DESCRIPTION: Convert common flag fields from a resource descriptor to an 376a159c266SJung-uk Kim * AML descriptor 377a159c266SJung-uk Kim * 378a159c266SJung-uk Kim ******************************************************************************/ 379a159c266SJung-uk Kim 380a159c266SJung-uk Kim void 381a159c266SJung-uk Kim AcpiRsSetAddressCommon ( 382a159c266SJung-uk Kim AML_RESOURCE *Aml, 383a159c266SJung-uk Kim ACPI_RESOURCE *Resource) 384a159c266SJung-uk Kim { 385a159c266SJung-uk Kim ACPI_FUNCTION_ENTRY (); 386a159c266SJung-uk Kim 387a159c266SJung-uk Kim 388a159c266SJung-uk Kim /* Set the Resource Type and General Flags */ 389a159c266SJung-uk Kim 390*f8146b88SJung-uk Kim (void) AcpiRsConvertResourceToAml ( 391*f8146b88SJung-uk Kim Resource, Aml, AcpiRsConvertGeneralFlags); 392a159c266SJung-uk Kim 393a159c266SJung-uk Kim /* Set the Type-Specific Flags (Memory and I/O descriptors only) */ 394a159c266SJung-uk Kim 395a159c266SJung-uk Kim if (Resource->Data.Address.ResourceType == ACPI_MEMORY_RANGE) 396a159c266SJung-uk Kim { 397*f8146b88SJung-uk Kim (void) AcpiRsConvertResourceToAml ( 398*f8146b88SJung-uk Kim Resource, Aml, AcpiRsConvertMemFlags); 399a159c266SJung-uk Kim } 400a159c266SJung-uk Kim else if (Resource->Data.Address.ResourceType == ACPI_IO_RANGE) 401a159c266SJung-uk Kim { 402*f8146b88SJung-uk Kim (void) AcpiRsConvertResourceToAml ( 403*f8146b88SJung-uk Kim Resource, Aml, AcpiRsConvertIoFlags); 404a159c266SJung-uk Kim } 405a159c266SJung-uk Kim else 406a159c266SJung-uk Kim { 407a159c266SJung-uk Kim /* Generic resource type, just copy the TypeSpecific byte */ 408a159c266SJung-uk Kim 409*f8146b88SJung-uk Kim Aml->Address.SpecificFlags = 410*f8146b88SJung-uk Kim Resource->Data.Address.Info.TypeSpecific; 411a159c266SJung-uk Kim } 412a159c266SJung-uk Kim } 413