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