1a9f12690SJung-uk Kim /****************************************************************************** 2a9f12690SJung-uk Kim * 3a9f12690SJung-uk Kim * Module Name: acapps - common include for ACPI applications/tools 4a9f12690SJung-uk Kim * 5a9f12690SJung-uk Kim *****************************************************************************/ 6a9f12690SJung-uk Kim 7*d244b227SJung-uk Kim /* 8*d244b227SJung-uk Kim * Copyright (C) 2000 - 2011, Intel Corp. 9a9f12690SJung-uk Kim * All rights reserved. 10a9f12690SJung-uk Kim * 11*d244b227SJung-uk Kim * Redistribution and use in source and binary forms, with or without 12*d244b227SJung-uk Kim * modification, are permitted provided that the following conditions 13*d244b227SJung-uk Kim * are met: 14*d244b227SJung-uk Kim * 1. Redistributions of source code must retain the above copyright 15*d244b227SJung-uk Kim * notice, this list of conditions, and the following disclaimer, 16*d244b227SJung-uk Kim * without modification. 17*d244b227SJung-uk Kim * 2. Redistributions in binary form must reproduce at minimum a disclaimer 18*d244b227SJung-uk Kim * substantially similar to the "NO WARRANTY" disclaimer below 19*d244b227SJung-uk Kim * ("Disclaimer") and any redistribution must be conditioned upon 20*d244b227SJung-uk Kim * including a substantially similar Disclaimer requirement for further 21*d244b227SJung-uk Kim * binary redistribution. 22*d244b227SJung-uk Kim * 3. Neither the names of the above-listed copyright holders nor the names 23*d244b227SJung-uk Kim * of any contributors may be used to endorse or promote products derived 24*d244b227SJung-uk Kim * from this software without specific prior written permission. 25a9f12690SJung-uk Kim * 26*d244b227SJung-uk Kim * Alternatively, this software may be distributed under the terms of the 27*d244b227SJung-uk Kim * GNU General Public License ("GPL") version 2 as published by the Free 28*d244b227SJung-uk Kim * Software Foundation. 29a9f12690SJung-uk Kim * 30*d244b227SJung-uk Kim * NO WARRANTY 31*d244b227SJung-uk Kim * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32*d244b227SJung-uk Kim * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33*d244b227SJung-uk Kim * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 34*d244b227SJung-uk Kim * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35*d244b227SJung-uk Kim * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 36*d244b227SJung-uk Kim * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 37*d244b227SJung-uk Kim * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 38*d244b227SJung-uk Kim * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 39*d244b227SJung-uk Kim * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 40*d244b227SJung-uk Kim * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 41*d244b227SJung-uk Kim * POSSIBILITY OF SUCH DAMAGES. 42*d244b227SJung-uk Kim */ 43a9f12690SJung-uk Kim 44a9f12690SJung-uk Kim #ifndef _ACAPPS 45a9f12690SJung-uk Kim #define _ACAPPS 46a9f12690SJung-uk Kim 47a9f12690SJung-uk Kim 48a9f12690SJung-uk Kim #ifdef _MSC_VER /* disable some level-4 warnings */ 49a9f12690SJung-uk Kim #pragma warning(disable:4100) /* warning C4100: unreferenced formal parameter */ 50a9f12690SJung-uk Kim #endif 51a9f12690SJung-uk Kim 523c1812acSJung-uk Kim /* Common info for tool signons */ 533c1812acSJung-uk Kim 543c1812acSJung-uk Kim #define ACPICA_NAME "Intel ACPI Component Architecture" 55*d244b227SJung-uk Kim #define ACPICA_COPYRIGHT "Copyright (c) 2000 - 2011 Intel Corporation" 563c1812acSJung-uk Kim 573c1812acSJung-uk Kim #if ACPI_MACHINE_WIDTH == 64 583c1812acSJung-uk Kim #define ACPI_WIDTH "-64" 593c1812acSJung-uk Kim 603c1812acSJung-uk Kim #elif ACPI_MACHINE_WIDTH == 32 613c1812acSJung-uk Kim #define ACPI_WIDTH "-32" 623c1812acSJung-uk Kim 633c1812acSJung-uk Kim #else 643c1812acSJung-uk Kim #error unknown ACPI_MACHINE_WIDTH 653c1812acSJung-uk Kim #define ACPI_WIDTH "-??" 663c1812acSJung-uk Kim 673c1812acSJung-uk Kim #endif 683c1812acSJung-uk Kim 693c1812acSJung-uk Kim /* Macros for signons and file headers */ 703c1812acSJung-uk Kim 713c1812acSJung-uk Kim #define ACPI_COMMON_SIGNON(UtilityName) \ 723c1812acSJung-uk Kim "\n%s\n%s version %8.8X%s\n%s\n\n", \ 733c1812acSJung-uk Kim ACPICA_NAME, \ 743c1812acSJung-uk Kim UtilityName, ((UINT32) ACPI_CA_VERSION), ACPI_WIDTH, \ 753c1812acSJung-uk Kim ACPICA_COPYRIGHT 763c1812acSJung-uk Kim 773c1812acSJung-uk Kim #define ACPI_COMMON_HEADER(UtilityName, Prefix) \ 783c1812acSJung-uk Kim "%s%s\n%s%s version %8.8X%s\n%s%s\n%s\n", \ 793c1812acSJung-uk Kim Prefix, ACPICA_NAME, \ 803c1812acSJung-uk Kim Prefix, UtilityName, ((UINT32) ACPI_CA_VERSION), ACPI_WIDTH, \ 813c1812acSJung-uk Kim Prefix, ACPICA_COPYRIGHT, \ 823c1812acSJung-uk Kim Prefix 833c1812acSJung-uk Kim 84a9f12690SJung-uk Kim #define FILE_SUFFIX_DISASSEMBLY "dsl" 85a9f12690SJung-uk Kim #define ACPI_TABLE_FILE_SUFFIX ".dat" 86a9f12690SJung-uk Kim 87a9f12690SJung-uk Kim 88f556842eSJung-uk Kim /* 89f556842eSJung-uk Kim * getopt 90f556842eSJung-uk Kim */ 91a9f12690SJung-uk Kim int 92a9f12690SJung-uk Kim AcpiGetopt( 93a9f12690SJung-uk Kim int argc, 94a9f12690SJung-uk Kim char **argv, 95a9f12690SJung-uk Kim char *opts); 96a9f12690SJung-uk Kim 97f556842eSJung-uk Kim extern int AcpiGbl_Optind; 989a179dd8SJung-uk Kim extern int AcpiGbl_Opterr; 99f556842eSJung-uk Kim extern char *AcpiGbl_Optarg; 100f556842eSJung-uk Kim 101f556842eSJung-uk Kim 102a9f12690SJung-uk Kim /* 103a9f12690SJung-uk Kim * adisasm 104a9f12690SJung-uk Kim */ 105a9f12690SJung-uk Kim ACPI_STATUS 106a9f12690SJung-uk Kim AdAmlDisassemble ( 107a9f12690SJung-uk Kim BOOLEAN OutToFile, 108a9f12690SJung-uk Kim char *Filename, 109a9f12690SJung-uk Kim char *Prefix, 110a9f12690SJung-uk Kim char **OutFilename, 111a9f12690SJung-uk Kim BOOLEAN GetAllTables); 112a9f12690SJung-uk Kim 113a9f12690SJung-uk Kim void 114f556842eSJung-uk Kim AdPrintStatistics ( 115f556842eSJung-uk Kim void); 116a9f12690SJung-uk Kim 117a9f12690SJung-uk Kim ACPI_STATUS 118a9f12690SJung-uk Kim AdFindDsdt( 119a9f12690SJung-uk Kim UINT8 **DsdtPtr, 120a9f12690SJung-uk Kim UINT32 *DsdtLength); 121a9f12690SJung-uk Kim 122a9f12690SJung-uk Kim void 123f556842eSJung-uk Kim AdDumpTables ( 124f556842eSJung-uk Kim void); 125a9f12690SJung-uk Kim 126a9f12690SJung-uk Kim ACPI_STATUS 127a9f12690SJung-uk Kim AdGetLocalTables ( 128a9f12690SJung-uk Kim char *Filename, 129a9f12690SJung-uk Kim BOOLEAN GetAllTables); 130a9f12690SJung-uk Kim 131a9f12690SJung-uk Kim ACPI_STATUS 132a9f12690SJung-uk Kim AdParseTable ( 133a9f12690SJung-uk Kim ACPI_TABLE_HEADER *Table, 134a9f12690SJung-uk Kim ACPI_OWNER_ID *OwnerId, 135a9f12690SJung-uk Kim BOOLEAN LoadTable, 136a9f12690SJung-uk Kim BOOLEAN External); 137a9f12690SJung-uk Kim 138a9f12690SJung-uk Kim ACPI_STATUS 139a9f12690SJung-uk Kim AdDisplayTables ( 140a9f12690SJung-uk Kim char *Filename, 141a9f12690SJung-uk Kim ACPI_TABLE_HEADER *Table); 142a9f12690SJung-uk Kim 143a9f12690SJung-uk Kim ACPI_STATUS 144f556842eSJung-uk Kim AdDisplayStatistics ( 145f556842eSJung-uk Kim void); 146f556842eSJung-uk Kim 147a9f12690SJung-uk Kim 148a9f12690SJung-uk Kim /* 149a9f12690SJung-uk Kim * adwalk 150a9f12690SJung-uk Kim */ 151a9f12690SJung-uk Kim void 152a9f12690SJung-uk Kim AcpiDmCrossReferenceNamespace ( 153a9f12690SJung-uk Kim ACPI_PARSE_OBJECT *ParseTreeRoot, 154a9f12690SJung-uk Kim ACPI_NAMESPACE_NODE *NamespaceRoot, 155a9f12690SJung-uk Kim ACPI_OWNER_ID OwnerId); 156a9f12690SJung-uk Kim 157a9f12690SJung-uk Kim void 158a9f12690SJung-uk Kim AcpiDmDumpTree ( 159a9f12690SJung-uk Kim ACPI_PARSE_OBJECT *Origin); 160a9f12690SJung-uk Kim 161a9f12690SJung-uk Kim void 162a9f12690SJung-uk Kim AcpiDmFindOrphanMethods ( 163a9f12690SJung-uk Kim ACPI_PARSE_OBJECT *Origin); 164a9f12690SJung-uk Kim 165a9f12690SJung-uk Kim void 166a9f12690SJung-uk Kim AcpiDmFinishNamespaceLoad ( 167a9f12690SJung-uk Kim ACPI_PARSE_OBJECT *ParseTreeRoot, 168a9f12690SJung-uk Kim ACPI_NAMESPACE_NODE *NamespaceRoot, 169a9f12690SJung-uk Kim ACPI_OWNER_ID OwnerId); 170a9f12690SJung-uk Kim 171a9f12690SJung-uk Kim void 172a9f12690SJung-uk Kim AcpiDmConvertResourceIndexes ( 173a9f12690SJung-uk Kim ACPI_PARSE_OBJECT *ParseTreeRoot, 174a9f12690SJung-uk Kim ACPI_NAMESPACE_NODE *NamespaceRoot); 175a9f12690SJung-uk Kim 176f556842eSJung-uk Kim 177a9f12690SJung-uk Kim /* 178a9f12690SJung-uk Kim * adfile 179a9f12690SJung-uk Kim */ 180a9f12690SJung-uk Kim ACPI_STATUS 181a9f12690SJung-uk Kim AdInitialize ( 182a9f12690SJung-uk Kim void); 183a9f12690SJung-uk Kim 184a9f12690SJung-uk Kim char * 185a9f12690SJung-uk Kim FlGenerateFilename ( 186a9f12690SJung-uk Kim char *InputFilename, 187a9f12690SJung-uk Kim char *Suffix); 188a9f12690SJung-uk Kim 189a9f12690SJung-uk Kim ACPI_STATUS 190a9f12690SJung-uk Kim FlSplitInputPathname ( 191a9f12690SJung-uk Kim char *InputPath, 192a9f12690SJung-uk Kim char **OutDirectoryPath, 193a9f12690SJung-uk Kim char **OutFilename); 194a9f12690SJung-uk Kim 195a9f12690SJung-uk Kim char * 196a9f12690SJung-uk Kim AdGenerateFilename ( 197a9f12690SJung-uk Kim char *Prefix, 198a9f12690SJung-uk Kim char *TableId); 199a9f12690SJung-uk Kim 200a9f12690SJung-uk Kim void 201a9f12690SJung-uk Kim AdWriteTable ( 202a9f12690SJung-uk Kim ACPI_TABLE_HEADER *Table, 203a9f12690SJung-uk Kim UINT32 Length, 204a9f12690SJung-uk Kim char *TableName, 205a9f12690SJung-uk Kim char *OemTableId); 206a9f12690SJung-uk Kim 207a9f12690SJung-uk Kim #endif /* _ACAPPS */ 208a9f12690SJung-uk Kim 209