1 /****************************************************************************** 2 * 3 * Name: actables.h - ACPI table management 4 * 5 *****************************************************************************/ 6 7 /* 8 * Copyright (C) 2000 - 2004, R. Byron Moore 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 /* Used in acpi_tb_map_acpi_table for size parameter if table header is to be used */ 49 50 #define SIZE_IN_HEADER 0 51 52 53 acpi_status 54 acpi_tb_handle_to_object ( 55 u16 table_id, 56 struct acpi_table_desc **table_desc); 57 58 /* 59 * tbconvrt - Table conversion routines 60 */ 61 62 acpi_status 63 acpi_tb_convert_to_xsdt ( 64 struct acpi_table_desc *table_info); 65 66 acpi_status 67 acpi_tb_convert_table_fadt ( 68 void); 69 70 acpi_status 71 acpi_tb_build_common_facs ( 72 struct acpi_table_desc *table_info); 73 74 u32 75 acpi_tb_get_table_count ( 76 struct rsdp_descriptor *RSDP, 77 struct acpi_table_header *RSDT); 78 79 /* 80 * tbget - Table "get" routines 81 */ 82 83 acpi_status 84 acpi_tb_get_table ( 85 struct acpi_pointer *address, 86 struct acpi_table_desc *table_info); 87 88 acpi_status 89 acpi_tb_get_table_header ( 90 struct acpi_pointer *address, 91 struct acpi_table_header *return_header); 92 93 acpi_status 94 acpi_tb_get_table_body ( 95 struct acpi_pointer *address, 96 struct acpi_table_header *header, 97 struct acpi_table_desc *table_info); 98 99 acpi_status 100 acpi_tb_get_this_table ( 101 struct acpi_pointer *address, 102 struct acpi_table_header *header, 103 struct acpi_table_desc *table_info); 104 105 acpi_status 106 acpi_tb_table_override ( 107 struct acpi_table_header *header, 108 struct acpi_table_desc *table_info); 109 110 acpi_status 111 acpi_tb_get_table_ptr ( 112 acpi_table_type table_type, 113 u32 instance, 114 struct acpi_table_header **table_ptr_loc); 115 116 acpi_status 117 acpi_tb_verify_rsdp ( 118 struct acpi_pointer *address); 119 120 void 121 acpi_tb_get_rsdt_address ( 122 struct acpi_pointer *out_address); 123 124 acpi_status 125 acpi_tb_validate_rsdt ( 126 struct acpi_table_header *table_ptr); 127 128 acpi_status 129 acpi_tb_get_required_tables ( 130 void); 131 132 acpi_status 133 acpi_tb_get_primary_table ( 134 struct acpi_pointer *address, 135 struct acpi_table_desc *table_info); 136 137 acpi_status 138 acpi_tb_get_secondary_table ( 139 struct acpi_pointer *address, 140 acpi_string signature, 141 struct acpi_table_desc *table_info); 142 143 /* 144 * tbinstall - Table installation 145 */ 146 147 acpi_status 148 acpi_tb_install_table ( 149 struct acpi_table_desc *table_info); 150 151 acpi_status 152 acpi_tb_match_signature ( 153 char *signature, 154 struct acpi_table_desc *table_info, 155 u8 search_type); 156 157 acpi_status 158 acpi_tb_recognize_table ( 159 struct acpi_table_desc *table_info, 160 u8 search_type); 161 162 acpi_status 163 acpi_tb_init_table_descriptor ( 164 acpi_table_type table_type, 165 struct acpi_table_desc *table_info); 166 167 168 /* 169 * tbremove - Table removal and deletion 170 */ 171 172 void 173 acpi_tb_delete_all_tables ( 174 void); 175 176 void 177 acpi_tb_delete_tables_by_type ( 178 acpi_table_type type); 179 180 void 181 acpi_tb_delete_single_table ( 182 struct acpi_table_desc *table_desc); 183 184 struct acpi_table_desc * 185 acpi_tb_uninstall_table ( 186 struct acpi_table_desc *table_desc); 187 188 189 /* 190 * tbrsd - RSDP, RSDT utilities 191 */ 192 193 acpi_status 194 acpi_tb_get_table_rsdt ( 195 void); 196 197 u8 * 198 acpi_tb_scan_memory_for_rsdp ( 199 u8 *start_address, 200 u32 length); 201 202 acpi_status 203 acpi_tb_find_rsdp ( 204 struct acpi_table_desc *table_info, 205 u32 flags); 206 207 208 /* 209 * tbutils - common table utilities 210 */ 211 212 acpi_status 213 acpi_tb_find_table ( 214 char *signature, 215 char *oem_id, 216 char *oem_table_id, 217 struct acpi_table_header **table_ptr); 218 219 acpi_status 220 acpi_tb_verify_table_checksum ( 221 struct acpi_table_header *table_header); 222 223 u8 224 acpi_tb_checksum ( 225 void *buffer, 226 u32 length); 227 228 acpi_status 229 acpi_tb_validate_table_header ( 230 struct acpi_table_header *table_header); 231 232 233 #endif /* __ACTABLES_H__ */ 234