1 /******************************************************************************
   2  *
   3  * Name: actables.h - ACPI table management
   4  *
   5  *****************************************************************************/
   6 
   7 /*
   8  * Copyright (C) 2000 - 2014, Intel Corp.
   9  * All rights reserved.
  10  *
  11  * Redistribution and use in source and binary forms, with or without
  12  * modification, are permitted provided that the following conditions
  13  * are met:
  14  * 1. Redistributions of source code must retain the above copyright
  15  *    notice, this list of conditions, and the following disclaimer,
  16  *    without modification.
  17  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
  18  *    substantially similar to the "NO WARRANTY" disclaimer below
  19  *    ("Disclaimer") and any redistribution must be conditioned upon
  20  *    including a substantially similar Disclaimer requirement for further
  21  *    binary redistribution.
  22  * 3. Neither the names of the above-listed copyright holders nor the names
  23  *    of any contributors may be used to endorse or promote products derived
  24  *    from this software without specific prior written permission.
  25  *
  26  * Alternatively, this software may be distributed under the terms of the
  27  * GNU General Public License ("GPL") version 2 as published by the Free
  28  * Software Foundation.
  29  *
  30  * NO WARRANTY
  31  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  32  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  33  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
  34  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  35  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  36  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  37  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  38  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
  39  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
  40  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  41  * POSSIBILITY OF SUCH DAMAGES.
  42  */
  43 
  44 #ifndef __ACTABLES_H__
  45 #define __ACTABLES_H__
  46 
  47 
  48 ACPI_STATUS
  49 AcpiAllocateRootTable (
  50     UINT32                  InitialTableCount);
  51 
  52 /*
  53  * tbxfroot - Root pointer utilities
  54  */
  55 ACPI_STATUS
  56 AcpiTbValidateRsdp (
  57     ACPI_TABLE_RSDP         *Rsdp);
  58 
  59 UINT8 *
  60 AcpiTbScanMemoryForRsdp (
  61     UINT8                   *StartAddress,
  62     UINT32                  Length);
  63 
  64 
  65 /*
  66  * tbfadt - FADT parse/convert/validate
  67  */
  68 void
  69 AcpiTbParseFadt (
  70     UINT32                  TableIndex);
  71 
  72 void
  73 AcpiTbCreateLocalFadt (
  74     ACPI_TABLE_HEADER       *Table,
  75     UINT32                  Length);
  76 
  77 
  78 /*
  79  * tbfind - find ACPI table
  80  */
  81 ACPI_STATUS
  82 AcpiTbFindTable (
  83     char                    *Signature,
  84     char                    *OemId,
  85     char                    *OemTableId,
  86     UINT32                  *TableIndex);
  87 
  88 
  89 /*
  90  * tbinstal - Table removal and deletion
  91  */
  92 ACPI_STATUS
  93 AcpiTbResizeRootTableList (
  94     void);
  95 
  96 ACPI_STATUS
  97 AcpiTbVerifyTable (
  98     ACPI_TABLE_DESC         *TableDesc);
  99 
 100 ACPI_TABLE_HEADER *
 101 AcpiTbTableOverride (
 102     ACPI_TABLE_HEADER       *TableHeader,
 103     ACPI_TABLE_DESC         *TableDesc);
 104 
 105 ACPI_STATUS
 106 AcpiTbAddTable (
 107     ACPI_TABLE_DESC         *TableDesc,
 108     UINT32                  *TableIndex);
 109 
 110 ACPI_STATUS
 111 AcpiTbStoreTable (
 112     ACPI_PHYSICAL_ADDRESS   Address,
 113     ACPI_TABLE_HEADER       *Table,
 114     UINT32                  Length,
 115     UINT8                   Flags,
 116     UINT32                  *TableIndex);
 117 
 118 void
 119 AcpiTbDeleteTable (
 120     ACPI_TABLE_DESC        *TableDesc);
 121 
 122 void
 123 AcpiTbTerminate (
 124     void);
 125 
 126 ACPI_STATUS
 127 AcpiTbDeleteNamespaceByOwner (
 128     UINT32                  TableIndex);
 129 
 130 ACPI_STATUS
 131 AcpiTbAllocateOwnerId (
 132     UINT32                  TableIndex);
 133 
 134 ACPI_STATUS
 135 AcpiTbReleaseOwnerId (
 136     UINT32                  TableIndex);
 137 
 138 ACPI_STATUS
 139 AcpiTbGetOwnerId (
 140     UINT32                  TableIndex,
 141     ACPI_OWNER_ID           *OwnerId);
 142 
 143 BOOLEAN
 144 AcpiTbIsTableLoaded (
 145     UINT32                  TableIndex);
 146 
 147 void
 148 AcpiTbSetTableLoadedFlag (
 149     UINT32                  TableIndex,
 150     BOOLEAN                 IsLoaded);
 151 
 152 
 153 /*
 154  * tbutils - table manager utilities
 155  */
 156 ACPI_STATUS
 157 AcpiTbInitializeFacs (
 158     void);
 159 
 160 BOOLEAN
 161 AcpiTbTablesLoaded (
 162     void);
 163 
 164 void
 165 AcpiTbPrintTableHeader(
 166     ACPI_PHYSICAL_ADDRESS   Address,
 167     ACPI_TABLE_HEADER       *Header);
 168 
 169 UINT8
 170 AcpiTbChecksum (
 171     UINT8                   *Buffer,
 172     UINT32                  Length);
 173 
 174 ACPI_STATUS
 175 AcpiTbVerifyChecksum (
 176     ACPI_TABLE_HEADER       *Table,
 177     UINT32                  Length);
 178 
 179 void
 180 AcpiTbCheckDsdtHeader (
 181     void);
 182 
 183 ACPI_TABLE_HEADER *
 184 AcpiTbCopyDsdt (
 185     UINT32                  TableIndex);
 186 
 187 void
 188 AcpiTbInstallTable (
 189     ACPI_PHYSICAL_ADDRESS   Address,
 190     char                    *Signature,
 191     UINT32                  TableIndex);
 192 
 193 ACPI_STATUS
 194 AcpiTbParseRootTable (
 195     ACPI_PHYSICAL_ADDRESS   RsdpAddress);
 196 
 197 #endif /* __ACTABLES_H__ */