11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/******************************************************************************
21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Name: acinterp.h - Interpreter subcomponent prototypes and defines
41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *****************************************************************************/
61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
877848130e53b06c22fe37a7b6acbb82bb3e9bfbaBob Moore * Copyright (C) 2000 - 2012, Intel Corp.
91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * All rights reserved.
101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Redistribution and use in source and binary forms, with or without
121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * modification, are permitted provided that the following conditions
131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * are met:
141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 1. Redistributions of source code must retain the above copyright
151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *    notice, this list of conditions, and the following disclaimer,
161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *    without modification.
171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 2. Redistributions in binary form must reproduce at minimum a disclaimer
181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *    substantially similar to the "NO WARRANTY" disclaimer below
191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *    ("Disclaimer") and any redistribution must be conditioned upon
201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *    including a substantially similar Disclaimer requirement for further
211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *    binary redistribution.
221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 3. Neither the names of the above-listed copyright holders nor the names
231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *    of any contributors may be used to endorse or promote products derived
241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *    from this software without specific prior written permission.
251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Alternatively, this software may be distributed under the terms of the
271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * GNU General Public License ("GPL") version 2 as published by the Free
281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Software Foundation.
291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * NO WARRANTY
311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * POSSIBILITY OF SUCH DAMAGES.
421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef __ACINTERP_H__
451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define __ACINTERP_H__
461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4796db255c8f014ae3497507104e8df809785a619fBob Moore#define ACPI_WALK_OPERANDS          (&(walk_state->operands [walk_state->num_operands -1]))
4896db255c8f014ae3497507104e8df809785a619fBob Moore
4996db255c8f014ae3497507104e8df809785a619fBob Moore/* Macros for tables used for debug output */
5096db255c8f014ae3497507104e8df809785a619fBob Moore
5196db255c8f014ae3497507104e8df809785a619fBob Moore#define ACPI_EXD_OFFSET(f)          (u8) ACPI_OFFSET (union acpi_operand_object,f)
5296db255c8f014ae3497507104e8df809785a619fBob Moore#define ACPI_EXD_NSOFFSET(f)        (u8) ACPI_OFFSET (struct acpi_namespace_node,f)
5396db255c8f014ae3497507104e8df809785a619fBob Moore#define ACPI_EXD_TABLE_SIZE(name)   (sizeof(name) / sizeof (struct acpi_exdump_info))
5496db255c8f014ae3497507104e8df809785a619fBob Moore
5596db255c8f014ae3497507104e8df809785a619fBob Moore/*
56f6dd9221dddb3550e60d32aee688588ec208312cBob Moore * If possible, pack the following structures to byte alignment, since we
57f6dd9221dddb3550e60d32aee688588ec208312cBob Moore * don't care about performance for debug output. Two cases where we cannot
58f6dd9221dddb3550e60d32aee688588ec208312cBob Moore * pack the structures:
59f6dd9221dddb3550e60d32aee688588ec208312cBob Moore *
60f6dd9221dddb3550e60d32aee688588ec208312cBob Moore * 1) Hardware does not support misaligned memory transfers
61f6dd9221dddb3550e60d32aee688588ec208312cBob Moore * 2) Compiler does not support pointers within packed structures
6296db255c8f014ae3497507104e8df809785a619fBob Moore */
63f6dd9221dddb3550e60d32aee688588ec208312cBob Moore#if (!defined(ACPI_MISALIGNMENT_NOT_SUPPORTED) && !defined(ACPI_PACKED_POINTERS_NOT_SUPPORTED))
6496db255c8f014ae3497507104e8df809785a619fBob Moore#pragma pack(1)
6596db255c8f014ae3497507104e8df809785a619fBob Moore#endif
6696db255c8f014ae3497507104e8df809785a619fBob Moore
6796db255c8f014ae3497507104e8df809785a619fBob Mooretypedef const struct acpi_exdump_info {
6896db255c8f014ae3497507104e8df809785a619fBob Moore	u8 opcode;
6996db255c8f014ae3497507104e8df809785a619fBob Moore	u8 offset;
7096db255c8f014ae3497507104e8df809785a619fBob Moore	char *name;
7196db255c8f014ae3497507104e8df809785a619fBob Moore
7296db255c8f014ae3497507104e8df809785a619fBob Moore} acpi_exdump_info;
7396db255c8f014ae3497507104e8df809785a619fBob Moore
7496db255c8f014ae3497507104e8df809785a619fBob Moore/* Values for the Opcode field above */
7596db255c8f014ae3497507104e8df809785a619fBob Moore
7696db255c8f014ae3497507104e8df809785a619fBob Moore#define ACPI_EXD_INIT                   0
7796db255c8f014ae3497507104e8df809785a619fBob Moore#define ACPI_EXD_TYPE                   1
7896db255c8f014ae3497507104e8df809785a619fBob Moore#define ACPI_EXD_UINT8                  2
7996db255c8f014ae3497507104e8df809785a619fBob Moore#define ACPI_EXD_UINT16                 3
8096db255c8f014ae3497507104e8df809785a619fBob Moore#define ACPI_EXD_UINT32                 4
8196db255c8f014ae3497507104e8df809785a619fBob Moore#define ACPI_EXD_UINT64                 5
8296db255c8f014ae3497507104e8df809785a619fBob Moore#define ACPI_EXD_LITERAL                6
8396db255c8f014ae3497507104e8df809785a619fBob Moore#define ACPI_EXD_POINTER                7
8496db255c8f014ae3497507104e8df809785a619fBob Moore#define ACPI_EXD_ADDRESS                8
8596db255c8f014ae3497507104e8df809785a619fBob Moore#define ACPI_EXD_STRING                 9
8696db255c8f014ae3497507104e8df809785a619fBob Moore#define ACPI_EXD_BUFFER                 10
8796db255c8f014ae3497507104e8df809785a619fBob Moore#define ACPI_EXD_PACKAGE                11
8896db255c8f014ae3497507104e8df809785a619fBob Moore#define ACPI_EXD_FIELD                  12
8996db255c8f014ae3497507104e8df809785a619fBob Moore#define ACPI_EXD_REFERENCE              13
9096db255c8f014ae3497507104e8df809785a619fBob Moore
9196db255c8f014ae3497507104e8df809785a619fBob Moore/* restore default alignment */
9296db255c8f014ae3497507104e8df809785a619fBob Moore
9396db255c8f014ae3497507104e8df809785a619fBob Moore#pragma pack()
941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * exconvrt - object conversion
971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsacpi_status
994be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ex_convert_to_integer(union acpi_operand_object *obj_desc,
1004be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			   union acpi_operand_object **result_desc, u32 flags);
1011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsacpi_status
1034be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ex_convert_to_buffer(union acpi_operand_object *obj_desc,
1044be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			  union acpi_operand_object **result_desc);
1051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsacpi_status
1074be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ex_convert_to_string(union acpi_operand_object *obj_desc,
1084be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			  union acpi_operand_object **result_desc, u32 type);
1091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* Types for ->String conversion */
1111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ACPI_EXPLICIT_BYTE_COPY         0x00000000
1131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ACPI_EXPLICIT_CONVERT_HEX       0x00000001
1141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ACPI_IMPLICIT_CONVERT_HEX       0x00000002
1151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ACPI_EXPLICIT_CONVERT_DECIMAL   0x00000003
1161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsacpi_status
1184be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ex_convert_to_target_type(acpi_object_type destination_type,
1194be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			       union acpi_operand_object *source_desc,
1204be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			       union acpi_operand_object **result_desc,
1214be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			       struct acpi_walk_state *walk_state);
1221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
1244cdf1a562bfb5852954aadbe8515557b8acc8168Lin Ming * exdebug - AML debug object
1254cdf1a562bfb5852954aadbe8515557b8acc8168Lin Ming */
1264cdf1a562bfb5852954aadbe8515557b8acc8168Lin Mingvoid
1274cdf1a562bfb5852954aadbe8515557b8acc8168Lin Mingacpi_ex_do_debug_object(union acpi_operand_object *source_desc,
1284cdf1a562bfb5852954aadbe8515557b8acc8168Lin Ming			u32 level, u32 index);
1294cdf1a562bfb5852954aadbe8515557b8acc8168Lin Ming
1304cdf1a562bfb5852954aadbe8515557b8acc8168Lin Ming/*
1311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * exfield - ACPI AML (p-code) execution - field manipulation
1321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
1331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsacpi_status
1344be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ex_common_buffer_setup(union acpi_operand_object *obj_desc,
1354be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			    u32 buffer_length, u32 * datum_count);
1361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsacpi_status
1384be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ex_write_with_update_rule(union acpi_operand_object *obj_desc,
1395df7e6cb42da36c7d878239bebc81907b15f3943Bob Moore			       u64 mask,
1405df7e6cb42da36c7d878239bebc81907b15f3943Bob Moore			       u64 field_value, u32 field_datum_byte_offset);
1411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid
1435df7e6cb42da36c7d878239bebc81907b15f3943Bob Mooreacpi_ex_get_buffer_datum(u64 *datum,
1444be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			 void *buffer,
1454be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			 u32 buffer_length,
1464be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			 u32 byte_granularity, u32 buffer_offset);
1471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid
1495df7e6cb42da36c7d878239bebc81907b15f3943Bob Mooreacpi_ex_set_buffer_datum(u64 merged_datum,
1504be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			 void *buffer,
1514be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			 u32 buffer_length,
1524be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			 u32 byte_granularity, u32 buffer_offset);
1531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsacpi_status
1554be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ex_read_data_from_field(struct acpi_walk_state *walk_state,
1564be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			     union acpi_operand_object *obj_desc,
1574be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			     union acpi_operand_object **ret_buffer_desc);
1581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsacpi_status
1604be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ex_write_data_to_field(union acpi_operand_object *source_desc,
1614be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			    union acpi_operand_object *obj_desc,
1624be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			    union acpi_operand_object **result_desc);
16344f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore
1641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
16544f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore * exfldio - low level field I/O
1661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
1671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsacpi_status
1684be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ex_extract_from_field(union acpi_operand_object *obj_desc,
1694be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			   void *buffer, u32 buffer_length);
1701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsacpi_status
1724be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ex_insert_into_field(union acpi_operand_object *obj_desc,
1734be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			  void *buffer, u32 buffer_length);
1741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsacpi_status
1764be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ex_access_region(union acpi_operand_object *obj_desc,
1775df7e6cb42da36c7d878239bebc81907b15f3943Bob Moore		      u32 field_datum_byte_offset, u64 *value, u32 read_write);
1781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
17944f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore/*
18044f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore * exmisc - misc support routines
18144f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore */
1821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsacpi_status
1834be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ex_get_object_reference(union acpi_operand_object *obj_desc,
1844be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			     union acpi_operand_object **return_desc,
1854be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			     struct acpi_walk_state *walk_state);
1861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsacpi_status
1884be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ex_concat_template(union acpi_operand_object *obj_desc,
1894be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			union acpi_operand_object *obj_desc2,
1904be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			union acpi_operand_object **actual_return_desc,
1914be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			struct acpi_walk_state *walk_state);
1921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsacpi_status
1944be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ex_do_concatenate(union acpi_operand_object *obj_desc,
1954be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown		       union acpi_operand_object *obj_desc2,
1964be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown		       union acpi_operand_object **actual_return_desc,
1974be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown		       struct acpi_walk_state *walk_state);
1981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsacpi_status
2004be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ex_do_logical_numeric_op(u16 opcode,
2015df7e6cb42da36c7d878239bebc81907b15f3943Bob Moore			      u64 integer0, u64 integer1, u8 *logical_result);
2021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsacpi_status
2044be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ex_do_logical_op(u16 opcode,
2054be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown		      union acpi_operand_object *operand0,
2065df7e6cb42da36c7d878239bebc81907b15f3943Bob Moore		      union acpi_operand_object *operand1, u8 *logical_result);
2071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2085df7e6cb42da36c7d878239bebc81907b15f3943Bob Mooreu64 acpi_ex_do_math_op(u16 opcode, u64 operand0, u64 operand1);
2091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2104be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_status acpi_ex_create_mutex(struct acpi_walk_state *walk_state);
2111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2124be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_status acpi_ex_create_processor(struct acpi_walk_state *walk_state);
2131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2144be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_status acpi_ex_create_power_resource(struct acpi_walk_state *walk_state);
2151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsacpi_status
2174be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ex_create_region(u8 * aml_start,
2184be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown		      u32 aml_length,
2194be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown		      u8 region_space, struct acpi_walk_state *walk_state);
2201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2214be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_status acpi_ex_create_event(struct acpi_walk_state *walk_state);
2221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2234be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_status acpi_ex_create_alias(struct acpi_walk_state *walk_state);
2241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsacpi_status
2264be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ex_create_method(u8 * aml_start,
2274be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown		      u32 aml_length, struct acpi_walk_state *walk_state);
2281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
2301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * exconfig - dynamic table load/unload
2311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
2321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsacpi_status
2334be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ex_load_op(union acpi_operand_object *obj_desc,
2344be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown		union acpi_operand_object *target,
2354be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown		struct acpi_walk_state *walk_state);
2361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsacpi_status
2384be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ex_load_table_op(struct acpi_walk_state *walk_state,
2394be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown		      union acpi_operand_object **return_desc);
2401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2414be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_status acpi_ex_unload_table(union acpi_operand_object *ddb_handle);
2421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
2441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * exmutex - mutex support
2451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
2461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsacpi_status
2474be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ex_acquire_mutex(union acpi_operand_object *time_desc,
2484be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown		      union acpi_operand_object *obj_desc,
2494be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown		      struct acpi_walk_state *walk_state);
2501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsacpi_status
252ba886cd4ac957608777fbc8d137f6b9f0450e775Bob Mooreacpi_ex_acquire_mutex_object(u16 timeout,
253ba886cd4ac957608777fbc8d137f6b9f0450e775Bob Moore			     union acpi_operand_object *obj_desc,
254ba886cd4ac957608777fbc8d137f6b9f0450e775Bob Moore			     acpi_thread_id thread_id);
255ba886cd4ac957608777fbc8d137f6b9f0450e775Bob Moore
256ba886cd4ac957608777fbc8d137f6b9f0450e775Bob Mooreacpi_status
2574be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ex_release_mutex(union acpi_operand_object *obj_desc,
2584be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown		      struct acpi_walk_state *walk_state);
2591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
260ba886cd4ac957608777fbc8d137f6b9f0450e775Bob Mooreacpi_status acpi_ex_release_mutex_object(union acpi_operand_object *obj_desc);
261ba886cd4ac957608777fbc8d137f6b9f0450e775Bob Moore
2624be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownvoid acpi_ex_release_all_mutexes(struct acpi_thread_state *thread);
2631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
264262a7a28de060f3a63cae20035876d6f22fd7670Len Brownvoid acpi_ex_unlink_mutex(union acpi_operand_object *obj_desc);
2651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
26744f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore * exprep - ACPI AML execution - prep utilities
2681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
2691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsacpi_status
2704be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ex_prep_common_field_object(union acpi_operand_object *obj_desc,
2714be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown				 u8 field_flags,
2724be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown				 u8 field_attribute,
2734be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown				 u32 field_bit_position, u32 field_bit_length);
2741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2754be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_status acpi_ex_prep_field_value(struct acpi_create_field_info *info);
27644f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore
2771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
2781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * exsystem - Interface to OS services
2791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
2801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsacpi_status
2814be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ex_system_do_notify_op(union acpi_operand_object *value,
2824be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			    union acpi_operand_object *obj_desc);
2831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
284ada241dcec7eb21ff1690a1ba6213299b743bb5bBob Mooreacpi_status acpi_ex_system_do_sleep(u64 time);
2851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2864be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_status acpi_ex_system_do_stall(u32 time);
2871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2884be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_status acpi_ex_system_signal_event(union acpi_operand_object *obj_desc);
2891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsacpi_status
2914be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ex_system_wait_event(union acpi_operand_object *time,
2924be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			  union acpi_operand_object *obj_desc);
2931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2944be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_status acpi_ex_system_reset_event(union acpi_operand_object *obj_desc);
2951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
296967440e3be1af06ad4dc7bb18d2e3c16130fe067Bob Mooreacpi_status
297967440e3be1af06ad4dc7bb18d2e3c16130fe067Bob Mooreacpi_ex_system_wait_semaphore(acpi_semaphore semaphore, u16 timeout);
298967440e3be1af06ad4dc7bb18d2e3c16130fe067Bob Moore
299967440e3be1af06ad4dc7bb18d2e3c16130fe067Bob Mooreacpi_status acpi_ex_system_wait_mutex(acpi_mutex mutex, u16 timeout);
3001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
30244f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore * exoparg1 - ACPI AML execution, 1 operand
3031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
3044be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_status acpi_ex_opcode_0A_0T_1R(struct acpi_walk_state *walk_state);
3051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3064be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_status acpi_ex_opcode_1A_0T_0R(struct acpi_walk_state *walk_state);
3071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3084be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_status acpi_ex_opcode_1A_0T_1R(struct acpi_walk_state *walk_state);
3091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3104be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_status acpi_ex_opcode_1A_1T_1R(struct acpi_walk_state *walk_state);
3111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3124be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_status acpi_ex_opcode_1A_1T_0R(struct acpi_walk_state *walk_state);
3131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
31544f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore * exoparg2 - ACPI AML execution, 2 operands
3161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
3174be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_status acpi_ex_opcode_2A_0T_0R(struct acpi_walk_state *walk_state);
3181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3194be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_status acpi_ex_opcode_2A_0T_1R(struct acpi_walk_state *walk_state);
3201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3214be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_status acpi_ex_opcode_2A_1T_1R(struct acpi_walk_state *walk_state);
3221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3234be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_status acpi_ex_opcode_2A_2T_1R(struct acpi_walk_state *walk_state);
3241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
32644f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore * exoparg3 - ACPI AML execution, 3 operands
32744f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore */
3284be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_status acpi_ex_opcode_3A_0T_0R(struct acpi_walk_state *walk_state);
32944f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore
3304be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_status acpi_ex_opcode_3A_1T_1R(struct acpi_walk_state *walk_state);
33144f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore
33244f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore/*
33344f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore * exoparg6 - ACPI AML execution, 6 operands
3341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
3354be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_status acpi_ex_opcode_6A_0T_1R(struct acpi_walk_state *walk_state);
3361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
33744f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore/*
33844f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore * exresolv - Object resolution and get value functions
33944f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore */
3401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsacpi_status
3414be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ex_resolve_to_value(union acpi_operand_object **stack_ptr,
3424be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			 struct acpi_walk_state *walk_state);
3431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsacpi_status
3454be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ex_resolve_multiple(struct acpi_walk_state *walk_state,
3464be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			 union acpi_operand_object *operand,
3474be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			 acpi_object_type * return_type,
3484be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			 union acpi_operand_object **return_desc);
34944f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore
35044f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore/*
35144f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore * exresnte - resolve namespace node
35244f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore */
35344f6c01242da4e162f28d8e1216a8c7a91174605Robert Mooreacpi_status
3544be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ex_resolve_node_to_value(struct acpi_namespace_node **stack_ptr,
3554be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			      struct acpi_walk_state *walk_state);
35644f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore
35744f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore/*
35844f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore * exresop - resolve operand to value
35944f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore */
3601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsacpi_status
3614be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ex_resolve_operands(u16 opcode,
3624be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			 union acpi_operand_object **stack_ptr,
3634be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			 struct acpi_walk_state *walk_state);
3641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
3661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * exdump - Interpreter debug output routines
3671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
3684be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownvoid acpi_ex_dump_operand(union acpi_operand_object *obj_desc, u32 depth);
3691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid
3714be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ex_dump_operands(union acpi_operand_object **operands,
37271d993e115706a4108bdc7e3cb3cf25309f17aa6Bob Moore		      const char *opcode_name, u32 num_opcodes);
3731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
37444f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore#ifdef	ACPI_FUTURE_USAGE
3751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid
3764be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ex_dump_object_descriptor(union acpi_operand_object *object, u32 flags);
3771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
37896db255c8f014ae3497507104e8df809785a619fBob Moorevoid acpi_ex_dump_namespace_node(struct acpi_namespace_node *node, u32 flags);
3794be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown#endif				/* ACPI_FUTURE_USAGE */
3801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
38244f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore * exnames - AML namestring support
3831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
3841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsacpi_status
3854be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ex_get_name_string(acpi_object_type data_type,
3864be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			u8 * in_aml_address,
3874be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			char **out_name_string, u32 * out_name_length);
3881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
3901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * exstore - Object store support
3911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
3921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsacpi_status
3934be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ex_store(union acpi_operand_object *val_desc,
3944be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown	      union acpi_operand_object *dest_desc,
3954be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown	      struct acpi_walk_state *walk_state);
3961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsacpi_status
3984be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ex_store_object_to_node(union acpi_operand_object *source_desc,
3994be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			     struct acpi_namespace_node *node,
4004be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			     struct acpi_walk_state *walk_state,
4014be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			     u8 implicit_conversion);
4021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ACPI_IMPLICIT_CONVERSION        TRUE
4041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ACPI_NO_IMPLICIT_CONVERSION     FALSE
4051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
40744f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore * exstoren - resolve/store object
4081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
4091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsacpi_status
4104be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ex_resolve_object(union acpi_operand_object **source_desc_ptr,
4114be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown		       acpi_object_type target_type,
4124be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown		       struct acpi_walk_state *walk_state);
4131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsacpi_status
4154be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ex_store_object_to_object(union acpi_operand_object *source_desc,
4164be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			       union acpi_operand_object *dest_desc,
4174be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			       union acpi_operand_object **new_desc,
4184be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			       struct acpi_walk_state *walk_state);
4191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
42144f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore * exstorob - store object - buffer/string
4221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
4231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsacpi_status
4244be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ex_store_buffer_to_buffer(union acpi_operand_object *source_desc,
4254be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			       union acpi_operand_object *target_desc);
4261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsacpi_status
4284be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ex_store_string_to_string(union acpi_operand_object *source_desc,
4294be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			       union acpi_operand_object *target_desc);
43044f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore
43144f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore/*
43244f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore * excopy - object copy
43344f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore */
4341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsacpi_status
4354be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ex_copy_integer_to_index_field(union acpi_operand_object *source_desc,
4364be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown				    union acpi_operand_object *target_desc);
4371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsacpi_status
4394be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ex_copy_integer_to_bank_field(union acpi_operand_object *source_desc,
4404be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown				   union acpi_operand_object *target_desc);
4411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsacpi_status
4434be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ex_copy_data_to_named_field(union acpi_operand_object *source_desc,
4444be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown				 struct acpi_namespace_node *node);
4451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsacpi_status
4474be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ex_copy_integer_to_buffer_field(union acpi_operand_object *source_desc,
4484be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown				     union acpi_operand_object *target_desc);
44944f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore
4501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
4511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * exutils - interpreter/scanner utilities
4521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
4534d2acd9ea539e0f59178b126f6750ccc41eefcddLen Brownvoid acpi_ex_enter_interpreter(void);
4541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4554be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownvoid acpi_ex_exit_interpreter(void);
4561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4574d2acd9ea539e0f59178b126f6750ccc41eefcddLen Brownvoid acpi_ex_reacquire_interpreter(void);
4584d2acd9ea539e0f59178b126f6750ccc41eefcddLen Brown
4594d2acd9ea539e0f59178b126f6750ccc41eefcddLen Brownvoid acpi_ex_relinquish_interpreter(void);
4604d2acd9ea539e0f59178b126f6750ccc41eefcddLen Brown
4614be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownvoid acpi_ex_truncate_for32bit_table(union acpi_operand_object *obj_desc);
4621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
463ba886cd4ac957608777fbc8d137f6b9f0450e775Bob Moorevoid acpi_ex_acquire_global_lock(u32 rule);
4641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
465f02e9fa1ceee045f7d5c53d475032815752a2510Bob Moorevoid acpi_ex_release_global_lock(u32 rule);
4661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4675df7e6cb42da36c7d878239bebc81907b15f3943Bob Moorevoid acpi_ex_eisa_id_to_string(char *dest, u64 compressed_id);
4681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4695df7e6cb42da36c7d878239bebc81907b15f3943Bob Moorevoid acpi_ex_integer_to_string(char *dest, u64 value);
4701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
471ec4636669bf9c6ff157121ab42709650a9e0cc2aBob Mooreu8 acpi_is_valid_space_id(u8 space_id);
472ec4636669bf9c6ff157121ab42709650a9e0cc2aBob Moore
4731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
4741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * exregion - default op_region handlers
4751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
4761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsacpi_status
4774be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ex_system_memory_space_handler(u32 function,
4784be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown				    acpi_physical_address address,
4794be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown				    u32 bit_width,
4805df7e6cb42da36c7d878239bebc81907b15f3943Bob Moore				    u64 *value,
4814be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown				    void *handler_context,
4824be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown				    void *region_context);
4834be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown
4844be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_status
4854be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ex_system_io_space_handler(u32 function,
4864be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown				acpi_physical_address address,
4874be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown				u32 bit_width,
4885df7e6cb42da36c7d878239bebc81907b15f3943Bob Moore				u64 *value,
4894be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown				void *handler_context, void *region_context);
4904be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown
4914be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_status
4924be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ex_pci_config_space_handler(u32 function,
4934be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown				 acpi_physical_address address,
4944be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown				 u32 bit_width,
4955df7e6cb42da36c7d878239bebc81907b15f3943Bob Moore				 u64 *value,
4964be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown				 void *handler_context, void *region_context);
4974be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown
4984be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_status
4994be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ex_cmos_space_handler(u32 function,
5004be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			   acpi_physical_address address,
5014be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			   u32 bit_width,
5025df7e6cb42da36c7d878239bebc81907b15f3943Bob Moore			   u64 *value,
5034be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			   void *handler_context, void *region_context);
5044be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown
5054be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_status
5064be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ex_pci_bar_space_handler(u32 function,
5074be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			      acpi_physical_address address,
5084be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			      u32 bit_width,
5095df7e6cb42da36c7d878239bebc81907b15f3943Bob Moore			      u64 *value,
5104be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			      void *handler_context, void *region_context);
5114be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown
5124be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_status
5134be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ex_embedded_controller_space_handler(u32 function,
5144be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown					  acpi_physical_address address,
5154be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown					  u32 bit_width,
5165df7e6cb42da36c7d878239bebc81907b15f3943Bob Moore					  u64 *value,
5174be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown					  void *handler_context,
5184be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown					  void *region_context);
5194be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown
5204be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_status
5214be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ex_sm_bus_space_handler(u32 function,
5224be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			     acpi_physical_address address,
5234be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			     u32 bit_width,
5245df7e6cb42da36c7d878239bebc81907b15f3943Bob Moore			     u64 *value,
5254be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown			     void *handler_context, void *region_context);
5264be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown
5274be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_status
5284be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ex_data_table_space_handler(u32 function,
5294be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown				 acpi_physical_address address,
5304be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown				 u32 bit_width,
5315df7e6cb42da36c7d878239bebc81907b15f3943Bob Moore				 u64 *value,
5324be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown				 void *handler_context, void *region_context);
5334be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown
5344be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown#endif				/* __INTERP_H__ */
535