/****************************************************************************** * * Name: acresrc.h - Resource Manager function prototypes * *****************************************************************************/ /* * Copyright (C) 2000 - 2012, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions, and the following disclaimer, * without modification. * 2. Redistributions in binary form must reproduce at minimum a disclaimer * substantially similar to the "NO WARRANTY" disclaimer below * ("Disclaimer") and any redistribution must be conditioned upon * including a substantially similar Disclaimer requirement for further * binary redistribution. * 3. Neither the names of the above-listed copyright holders nor the names * of any contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * Alternatively, this software may be distributed under the terms of the * GNU General Public License ("GPL") version 2 as published by the Free * Software Foundation. * * NO WARRANTY * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGES. */ #ifndef __ACRESRC_H__ #define __ACRESRC_H__ /* Need the AML resource descriptor structs */ #include "amlresrc.h" /* * If possible, pack the following structures to byte alignment, since we * don't care about performance for debug output. Two cases where we cannot * pack the structures: * * 1) Hardware does not support misaligned memory transfers * 2) Compiler does not support pointers within packed structures */ #if (!defined(ACPI_MISALIGNMENT_NOT_SUPPORTED) && !defined(ACPI_PACKED_POINTERS_NOT_SUPPORTED)) #pragma pack(1) #endif /* * Individual entry for the resource conversion tables */ typedef const struct acpi_rsconvert_info { UINT8 Opcode; UINT8 ResourceOffset; UINT8 AmlOffset; UINT8 Value; } ACPI_RSCONVERT_INFO; /* Resource conversion opcodes */ typedef enum { ACPI_RSC_INITGET = 0, ACPI_RSC_INITSET, ACPI_RSC_FLAGINIT, ACPI_RSC_1BITFLAG, ACPI_RSC_2BITFLAG, ACPI_RSC_3BITFLAG, ACPI_RSC_ADDRESS, ACPI_RSC_BITMASK, ACPI_RSC_BITMASK16, ACPI_RSC_COUNT, ACPI_RSC_COUNT16, ACPI_RSC_COUNT_GPIO_PIN, ACPI_RSC_COUNT_GPIO_RES, ACPI_RSC_COUNT_GPIO_VEN, ACPI_RSC_COUNT_SERIAL_RES, ACPI_RSC_COUNT_SERIAL_VEN, ACPI_RSC_DATA8, ACPI_RSC_EXIT_EQ, ACPI_RSC_EXIT_LE, ACPI_RSC_EXIT_NE, ACPI_RSC_LENGTH, ACPI_RSC_MOVE_GPIO_PIN, ACPI_RSC_MOVE_GPIO_RES, ACPI_RSC_MOVE_SERIAL_RES, ACPI_RSC_MOVE_SERIAL_VEN, ACPI_RSC_MOVE8, ACPI_RSC_MOVE16, ACPI_RSC_MOVE32, ACPI_RSC_MOVE64, ACPI_RSC_SET8, ACPI_RSC_SOURCE, ACPI_RSC_SOURCEX } ACPI_RSCONVERT_OPCODES; /* Resource Conversion sub-opcodes */ #define ACPI_RSC_COMPARE_AML_LENGTH 0 #define ACPI_RSC_COMPARE_VALUE 1 #define ACPI_RSC_TABLE_SIZE(d) (sizeof (d) / sizeof (ACPI_RSCONVERT_INFO)) #define ACPI_RS_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_RESOURCE,f) #define AML_OFFSET(f) (UINT8) ACPI_OFFSET (AML_RESOURCE,f) /* * Individual entry for the resource dump tables */ typedef const struct acpi_rsdump_info { UINT8 Opcode; UINT8 Offset; char *Name; const char **Pointer; } ACPI_RSDUMP_INFO; /* Values for the Opcode field above */ typedef enum { ACPI_RSD_TITLE = 0, ACPI_RSD_1BITFLAG, ACPI_RSD_2BITFLAG, ACPI_RSD_3BITFLAG, ACPI_RSD_ADDRESS, ACPI_RSD_DWORDLIST, ACPI_RSD_LITERAL, ACPI_RSD_LONGLIST, ACPI_RSD_SHORTLIST, ACPI_RSD_SHORTLISTX, ACPI_RSD_SOURCE, ACPI_RSD_STRING, ACPI_RSD_UINT8, ACPI_RSD_UINT16, ACPI_RSD_UINT32, ACPI_RSD_UINT64, ACPI_RSD_WORDLIST } ACPI_RSDUMP_OPCODES; /* restore default alignment */ #pragma pack() /* Resource tables indexed by internal resource type */ extern const UINT8 AcpiGbl_AmlResourceSizes[]; extern const UINT8 AcpiGbl_AmlResourceSerialBusSizes[]; extern ACPI_RSCONVERT_INFO *AcpiGbl_SetResourceDispatch[]; /* Resource tables indexed by raw AML resource descriptor type */ extern const UINT8 AcpiGbl_ResourceStructSizes[]; extern const UINT8 AcpiGbl_ResourceStructSerialBusSizes[]; extern ACPI_RSCONVERT_INFO *AcpiGbl_GetResourceDispatch[]; extern ACPI_RSCONVERT_INFO *AcpiGbl_ConvertResourceSerialBusDispatch[]; typedef struct acpi_vendor_walk_info { ACPI_VENDOR_UUID *Uuid; ACPI_BUFFER *Buffer; ACPI_STATUS Status; } ACPI_VENDOR_WALK_INFO; /* * rscreate */ ACPI_STATUS AcpiRsCreateResourceList ( ACPI_OPERAND_OBJECT *AmlBuffer, ACPI_BUFFER *OutputBuffer); ACPI_STATUS AcpiRsCreateAmlResources ( ACPI_RESOURCE *LinkedListBuffer, ACPI_BUFFER *OutputBuffer); ACPI_STATUS AcpiRsCreatePciRoutingTable ( ACPI_OPERAND_OBJECT *PackageObject, ACPI_BUFFER *OutputBuffer); /* * rsutils */ ACPI_STATUS AcpiRsGetPrtMethodData ( ACPI_NAMESPACE_NODE *Node, ACPI_BUFFER *RetBuffer); ACPI_STATUS AcpiRsGetCrsMethodData ( ACPI_NAMESPACE_NODE *Node, ACPI_BUFFER *RetBuffer); ACPI_STATUS AcpiRsGetPrsMethodData ( ACPI_NAMESPACE_NODE *Node, ACPI_BUFFER *RetBuffer); ACPI_STATUS AcpiRsGetMethodData ( ACPI_HANDLE Handle, char *Path, ACPI_BUFFER *RetBuffer); ACPI_STATUS AcpiRsSetSrsMethodData ( ACPI_NAMESPACE_NODE *Node, ACPI_BUFFER *RetBuffer); ACPI_STATUS AcpiRsGetAeiMethodData ( ACPI_NAMESPACE_NODE *Node, ACPI_BUFFER *RetBuffer); /* * rscalc */ ACPI_STATUS AcpiRsGetListLength ( UINT8 *AmlBuffer, UINT32 AmlBufferLength, ACPI_SIZE *SizeNeeded); ACPI_STATUS AcpiRsGetAmlLength ( ACPI_RESOURCE *LinkedListBuffer, ACPI_SIZE *SizeNeeded); ACPI_STATUS AcpiRsGetPciRoutingTableLength ( ACPI_OPERAND_OBJECT *PackageObject, ACPI_SIZE *BufferSizeNeeded); ACPI_STATUS AcpiRsConvertAmlToResources ( UINT8 *Aml, UINT32 Length, UINT32 Offset, UINT8 ResourceIndex, void **Context); ACPI_STATUS AcpiRsConvertResourcesToAml ( ACPI_RESOURCE *Resource, ACPI_SIZE AmlSizeNeeded, UINT8 *OutputBuffer); /* * rsaddr */ void AcpiRsSetAddressCommon ( AML_RESOURCE *Aml, ACPI_RESOURCE *Resource); BOOLEAN AcpiRsGetAddressCommon ( ACPI_RESOURCE *Resource, AML_RESOURCE *Aml); /* * rsmisc */ ACPI_STATUS AcpiRsConvertAmlToResource ( ACPI_RESOURCE *Resource, AML_RESOURCE *Aml, ACPI_RSCONVERT_INFO *Info); ACPI_STATUS AcpiRsConvertResourceToAml ( ACPI_RESOURCE *Resource, AML_RESOURCE *Aml, ACPI_RSCONVERT_INFO *Info); /* * rsutils */ void AcpiRsMoveData ( void *Destination, void *Source, UINT16 ItemCount, UINT8 MoveType); UINT8 AcpiRsDecodeBitmask ( UINT16 Mask, UINT8 *List); UINT16 AcpiRsEncodeBitmask ( UINT8 *List, UINT8 Count); ACPI_RS_LENGTH AcpiRsGetResourceSource ( ACPI_RS_LENGTH ResourceLength, ACPI_RS_LENGTH MinimumLength, ACPI_RESOURCE_SOURCE *ResourceSource, AML_RESOURCE *Aml, char *StringPtr); ACPI_RSDESC_SIZE AcpiRsSetResourceSource ( AML_RESOURCE *Aml, ACPI_RS_LENGTH MinimumLength, ACPI_RESOURCE_SOURCE *ResourceSource); void AcpiRsSetResourceHeader ( UINT8 DescriptorType, ACPI_RSDESC_SIZE TotalLength, AML_RESOURCE *Aml); void AcpiRsSetResourceLength ( ACPI_RSDESC_SIZE TotalLength, AML_RESOURCE *Aml); /* * rsdump */ void AcpiRsDumpResourceList ( ACPI_RESOURCE *Resource); void AcpiRsDumpIrqList ( UINT8 *RouteTable); /* * Resource conversion tables */ extern ACPI_RSCONVERT_INFO AcpiRsConvertDma[]; extern ACPI_RSCONVERT_INFO AcpiRsConvertEndDpf[]; extern ACPI_RSCONVERT_INFO AcpiRsConvertIo[]; extern ACPI_RSCONVERT_INFO AcpiRsConvertFixedIo[]; extern ACPI_RSCONVERT_INFO AcpiRsConvertEndTag[]; extern ACPI_RSCONVERT_INFO AcpiRsConvertMemory24[]; extern ACPI_RSCONVERT_INFO AcpiRsConvertGenericReg[]; extern ACPI_RSCONVERT_INFO AcpiRsConvertMemory32[]; extern ACPI_RSCONVERT_INFO AcpiRsConvertFixedMemory32[]; extern ACPI_RSCONVERT_INFO AcpiRsConvertAddress32[]; extern ACPI_RSCONVERT_INFO AcpiRsConvertAddress16[]; extern ACPI_RSCONVERT_INFO AcpiRsConvertExtIrq[]; extern ACPI_RSCONVERT_INFO AcpiRsConvertAddress64[]; extern ACPI_RSCONVERT_INFO AcpiRsConvertExtAddress64[]; extern ACPI_RSCONVERT_INFO AcpiRsConvertGpio[]; extern ACPI_RSCONVERT_INFO AcpiRsConvertFixedDma[]; extern ACPI_RSCONVERT_INFO AcpiRsConvertI2cSerialBus[]; extern ACPI_RSCONVERT_INFO AcpiRsConvertSpiSerialBus[]; extern ACPI_RSCONVERT_INFO AcpiRsConvertUartSerialBus[]; /* These resources require separate get/set tables */ extern ACPI_RSCONVERT_INFO AcpiRsGetIrq[]; extern ACPI_RSCONVERT_INFO AcpiRsGetStartDpf[]; extern ACPI_RSCONVERT_INFO AcpiRsGetVendorSmall[]; extern ACPI_RSCONVERT_INFO AcpiRsGetVendorLarge[]; extern ACPI_RSCONVERT_INFO AcpiRsSetIrq[]; extern ACPI_RSCONVERT_INFO AcpiRsSetStartDpf[]; extern ACPI_RSCONVERT_INFO AcpiRsSetVendor[]; #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) /* * rsinfo */ extern ACPI_RSDUMP_INFO *AcpiGbl_DumpResourceDispatch[]; extern ACPI_RSDUMP_INFO *AcpiGbl_DumpSerialBusDispatch[]; /* * rsdumpinfo */ extern ACPI_RSDUMP_INFO AcpiRsDumpIrq[]; extern ACPI_RSDUMP_INFO AcpiRsDumpPrt[]; extern ACPI_RSDUMP_INFO AcpiRsDumpDma[]; extern ACPI_RSDUMP_INFO AcpiRsDumpStartDpf[]; extern ACPI_RSDUMP_INFO AcpiRsDumpEndDpf[]; extern ACPI_RSDUMP_INFO AcpiRsDumpIo[]; extern ACPI_RSDUMP_INFO AcpiRsDumpIoFlags[]; extern ACPI_RSDUMP_INFO AcpiRsDumpFixedIo[]; extern ACPI_RSDUMP_INFO AcpiRsDumpVendor[]; extern ACPI_RSDUMP_INFO AcpiRsDumpEndTag[]; extern ACPI_RSDUMP_INFO AcpiRsDumpMemory24[]; extern ACPI_RSDUMP_INFO AcpiRsDumpMemory32[]; extern ACPI_RSDUMP_INFO AcpiRsDumpMemoryFlags[]; extern ACPI_RSDUMP_INFO AcpiRsDumpFixedMemory32[]; extern ACPI_RSDUMP_INFO AcpiRsDumpAddress16[]; extern ACPI_RSDUMP_INFO AcpiRsDumpAddress32[]; extern ACPI_RSDUMP_INFO AcpiRsDumpAddress64[]; extern ACPI_RSDUMP_INFO AcpiRsDumpExtAddress64[]; extern ACPI_RSDUMP_INFO AcpiRsDumpExtIrq[]; extern ACPI_RSDUMP_INFO AcpiRsDumpGenericReg[]; extern ACPI_RSDUMP_INFO AcpiRsDumpGpio[]; extern ACPI_RSDUMP_INFO AcpiRsDumpFixedDma[]; extern ACPI_RSDUMP_INFO AcpiRsDumpCommonSerialBus[]; extern ACPI_RSDUMP_INFO AcpiRsDumpI2cSerialBus[]; extern ACPI_RSDUMP_INFO AcpiRsDumpSpiSerialBus[]; extern ACPI_RSDUMP_INFO AcpiRsDumpUartSerialBus[]; extern ACPI_RSDUMP_INFO AcpiRsDumpGeneralFlags[]; #endif #endif /* __ACRESRC_H__ */