From 15fcd3804d699ba2c5e4aab072c46403e8b6ef7a Mon Sep 17 00:00:00 2001 From: turbocat Date: Mon, 27 Dec 2021 17:00:36 +0000 Subject: [PATCH] DDK headers: - Delete old acpi headers (use acpica headers) - Fixed pci functions to use devman. git-svn-id: svn://kolibrios.org@9493 a494cfbc-eb01-0410-851d-a64ba20cac60 --- drivers/include/acpi/acbuffer.h | 244 ---- drivers/include/acpi/acconfig.h | 246 ---- drivers/include/acpi/acexcep.h | 388 ------ drivers/include/acpi/acnames.h | 92 -- drivers/include/acpi/acoutput.h | 487 ------- drivers/include/acpi/acpi.h | 67 - drivers/include/acpi/acpi_bus.h | 643 --------- drivers/include/acpi/acpi_drivers.h | 123 -- drivers/include/acpi/acpi_io.h | 16 - drivers/include/acpi/acpi_numa.h | 20 - drivers/include/acpi/acpiosxf.h | 456 ------- drivers/include/acpi/acpixf.h | 967 -------------- drivers/include/acpi/acrestyp.h | 621 --------- drivers/include/acpi/actbl.h | 416 ------ drivers/include/acpi/actbl1.h | 1211 ----------------- drivers/include/acpi/actbl2.h | 1467 --------------------- drivers/include/acpi/actbl3.h | 762 ----------- drivers/include/acpi/actypes.h | 1299 ------------------ drivers/include/acpi/pdc_intel.h | 35 - drivers/include/acpi/platform/acenv.h | 402 ------ drivers/include/acpi/platform/acenvex.h | 75 -- drivers/include/acpi/platform/acgcc.h | 82 -- drivers/include/acpi/platform/aclinux.h | 208 --- drivers/include/acpi/platform/aclinuxex.h | 147 --- drivers/include/asm/pci.h | 2 +- drivers/include/linux/pci.h | 25 +- 26 files changed, 25 insertions(+), 10476 deletions(-) delete mode 100644 drivers/include/acpi/acbuffer.h delete mode 100644 drivers/include/acpi/acconfig.h delete mode 100644 drivers/include/acpi/acexcep.h delete mode 100644 drivers/include/acpi/acnames.h delete mode 100644 drivers/include/acpi/acoutput.h delete mode 100644 drivers/include/acpi/acpi.h delete mode 100644 drivers/include/acpi/acpi_bus.h delete mode 100644 drivers/include/acpi/acpi_drivers.h delete mode 100644 drivers/include/acpi/acpi_io.h delete mode 100644 drivers/include/acpi/acpi_numa.h delete mode 100644 drivers/include/acpi/acpiosxf.h delete mode 100644 drivers/include/acpi/acpixf.h delete mode 100644 drivers/include/acpi/acrestyp.h delete mode 100644 drivers/include/acpi/actbl.h delete mode 100644 drivers/include/acpi/actbl1.h delete mode 100644 drivers/include/acpi/actbl2.h delete mode 100644 drivers/include/acpi/actbl3.h delete mode 100644 drivers/include/acpi/actypes.h delete mode 100644 drivers/include/acpi/pdc_intel.h delete mode 100644 drivers/include/acpi/platform/acenv.h delete mode 100644 drivers/include/acpi/platform/acenvex.h delete mode 100644 drivers/include/acpi/platform/acgcc.h delete mode 100644 drivers/include/acpi/platform/aclinux.h delete mode 100644 drivers/include/acpi/platform/aclinuxex.h diff --git a/drivers/include/acpi/acbuffer.h b/drivers/include/acpi/acbuffer.h deleted file mode 100644 index cd20d5586f..0000000000 --- a/drivers/include/acpi/acbuffer.h +++ /dev/null @@ -1,244 +0,0 @@ -/****************************************************************************** - * - * Name: acbuffer.h - Support for buffers returned by ACPI predefined names - * - *****************************************************************************/ - -/* - * Copyright (C) 2000 - 2016, 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 __ACBUFFER_H__ -#define __ACBUFFER_H__ - -/* - * Contains buffer structures for these predefined names: - * _FDE, _GRT, _GTM, _PLD, _SRT - */ - -/* - * Note: C bitfields are not used for this reason: - * - * "Bitfields are great and easy to read, but unfortunately the C language - * does not specify the layout of bitfields in memory, which means they are - * essentially useless for dealing with packed data in on-disk formats or - * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me, - * this decision was a design error in C. Ritchie could have picked an order - * and stuck with it." Norman Ramsey. - * See http://stackoverflow.com/a/1053662/41661 - */ - -/* _FDE return value */ - -struct acpi_fde_info { - u32 floppy0; - u32 floppy1; - u32 floppy2; - u32 floppy3; - u32 tape; -}; - -/* - * _GRT return value - * _SRT input value - */ -struct acpi_grt_info { - u16 year; - u8 month; - u8 day; - u8 hour; - u8 minute; - u8 second; - u8 valid; - u16 milliseconds; - u16 timezone; - u8 daylight; - u8 reserved[3]; -}; - -/* _GTM return value */ - -struct acpi_gtm_info { - u32 pio_speed0; - u32 dma_speed0; - u32 pio_speed1; - u32 dma_speed1; - u32 flags; -}; - -/* - * Formatted _PLD return value. The minimum size is a package containing - * one buffer. - * Revision 1: Buffer is 16 bytes (128 bits) - * Revision 2: Buffer is 20 bytes (160 bits) - * - * Note: This structure is returned from the acpi_decode_pld_buffer - * interface. - */ -struct acpi_pld_info { - u8 revision; - u8 ignore_color; - u8 red; - u8 green; - u8 blue; - u16 width; - u16 height; - u8 user_visible; - u8 dock; - u8 lid; - u8 panel; - u8 vertical_position; - u8 horizontal_position; - u8 shape; - u8 group_orientation; - u8 group_token; - u8 group_position; - u8 bay; - u8 ejectable; - u8 ospm_eject_required; - u8 cabinet_number; - u8 card_cage_number; - u8 reference; - u8 rotation; - u8 order; - u8 reserved; - u16 vertical_offset; - u16 horizontal_offset; -}; - -/* - * Macros to: - * 1) Convert a _PLD buffer to internal struct acpi_pld_info format - ACPI_PLD_GET* - * (Used by acpi_decode_pld_buffer) - * 2) Construct a _PLD buffer - ACPI_PLD_SET* - * (Intended for BIOS use only) - */ -#define ACPI_PLD_REV1_BUFFER_SIZE 16 /* For Revision 1 of the buffer (From ACPI spec) */ -#define ACPI_PLD_REV2_BUFFER_SIZE 20 /* For Revision 2 of the buffer (From ACPI spec) */ -#define ACPI_PLD_BUFFER_SIZE 20 /* For Revision 2 of the buffer (From ACPI spec) */ - -/* First 32-bit dword, bits 0:32 */ - -#define ACPI_PLD_GET_REVISION(dword) ACPI_GET_BITS (dword, 0, ACPI_7BIT_MASK) -#define ACPI_PLD_SET_REVISION(dword,value) ACPI_SET_BITS (dword, 0, ACPI_7BIT_MASK, value) /* Offset 0, Len 7 */ - -#define ACPI_PLD_GET_IGNORE_COLOR(dword) ACPI_GET_BITS (dword, 7, ACPI_1BIT_MASK) -#define ACPI_PLD_SET_IGNORE_COLOR(dword,value) ACPI_SET_BITS (dword, 7, ACPI_1BIT_MASK, value) /* Offset 7, Len 1 */ - -#define ACPI_PLD_GET_RED(dword) ACPI_GET_BITS (dword, 8, ACPI_8BIT_MASK) -#define ACPI_PLD_SET_RED(dword,value) ACPI_SET_BITS (dword, 8, ACPI_8BIT_MASK, value) /* Offset 8, Len 8 */ - -#define ACPI_PLD_GET_GREEN(dword) ACPI_GET_BITS (dword, 16, ACPI_8BIT_MASK) -#define ACPI_PLD_SET_GREEN(dword,value) ACPI_SET_BITS (dword, 16, ACPI_8BIT_MASK, value) /* Offset 16, Len 8 */ - -#define ACPI_PLD_GET_BLUE(dword) ACPI_GET_BITS (dword, 24, ACPI_8BIT_MASK) -#define ACPI_PLD_SET_BLUE(dword,value) ACPI_SET_BITS (dword, 24, ACPI_8BIT_MASK, value) /* Offset 24, Len 8 */ - -/* Second 32-bit dword, bits 33:63 */ - -#define ACPI_PLD_GET_WIDTH(dword) ACPI_GET_BITS (dword, 0, ACPI_16BIT_MASK) -#define ACPI_PLD_SET_WIDTH(dword,value) ACPI_SET_BITS (dword, 0, ACPI_16BIT_MASK, value) /* Offset 32+0=32, Len 16 */ - -#define ACPI_PLD_GET_HEIGHT(dword) ACPI_GET_BITS (dword, 16, ACPI_16BIT_MASK) -#define ACPI_PLD_SET_HEIGHT(dword,value) ACPI_SET_BITS (dword, 16, ACPI_16BIT_MASK, value) /* Offset 32+16=48, Len 16 */ - -/* Third 32-bit dword, bits 64:95 */ - -#define ACPI_PLD_GET_USER_VISIBLE(dword) ACPI_GET_BITS (dword, 0, ACPI_1BIT_MASK) -#define ACPI_PLD_SET_USER_VISIBLE(dword,value) ACPI_SET_BITS (dword, 0, ACPI_1BIT_MASK, value) /* Offset 64+0=64, Len 1 */ - -#define ACPI_PLD_GET_DOCK(dword) ACPI_GET_BITS (dword, 1, ACPI_1BIT_MASK) -#define ACPI_PLD_SET_DOCK(dword,value) ACPI_SET_BITS (dword, 1, ACPI_1BIT_MASK, value) /* Offset 64+1=65, Len 1 */ - -#define ACPI_PLD_GET_LID(dword) ACPI_GET_BITS (dword, 2, ACPI_1BIT_MASK) -#define ACPI_PLD_SET_LID(dword,value) ACPI_SET_BITS (dword, 2, ACPI_1BIT_MASK, value) /* Offset 64+2=66, Len 1 */ - -#define ACPI_PLD_GET_PANEL(dword) ACPI_GET_BITS (dword, 3, ACPI_3BIT_MASK) -#define ACPI_PLD_SET_PANEL(dword,value) ACPI_SET_BITS (dword, 3, ACPI_3BIT_MASK, value) /* Offset 64+3=67, Len 3 */ - -#define ACPI_PLD_GET_VERTICAL(dword) ACPI_GET_BITS (dword, 6, ACPI_2BIT_MASK) -#define ACPI_PLD_SET_VERTICAL(dword,value) ACPI_SET_BITS (dword, 6, ACPI_2BIT_MASK, value) /* Offset 64+6=70, Len 2 */ - -#define ACPI_PLD_GET_HORIZONTAL(dword) ACPI_GET_BITS (dword, 8, ACPI_2BIT_MASK) -#define ACPI_PLD_SET_HORIZONTAL(dword,value) ACPI_SET_BITS (dword, 8, ACPI_2BIT_MASK, value) /* Offset 64+8=72, Len 2 */ - -#define ACPI_PLD_GET_SHAPE(dword) ACPI_GET_BITS (dword, 10, ACPI_4BIT_MASK) -#define ACPI_PLD_SET_SHAPE(dword,value) ACPI_SET_BITS (dword, 10, ACPI_4BIT_MASK, value) /* Offset 64+10=74, Len 4 */ - -#define ACPI_PLD_GET_ORIENTATION(dword) ACPI_GET_BITS (dword, 14, ACPI_1BIT_MASK) -#define ACPI_PLD_SET_ORIENTATION(dword,value) ACPI_SET_BITS (dword, 14, ACPI_1BIT_MASK, value) /* Offset 64+14=78, Len 1 */ - -#define ACPI_PLD_GET_TOKEN(dword) ACPI_GET_BITS (dword, 15, ACPI_8BIT_MASK) -#define ACPI_PLD_SET_TOKEN(dword,value) ACPI_SET_BITS (dword, 15, ACPI_8BIT_MASK, value) /* Offset 64+15=79, Len 8 */ - -#define ACPI_PLD_GET_POSITION(dword) ACPI_GET_BITS (dword, 23, ACPI_8BIT_MASK) -#define ACPI_PLD_SET_POSITION(dword,value) ACPI_SET_BITS (dword, 23, ACPI_8BIT_MASK, value) /* Offset 64+23=87, Len 8 */ - -#define ACPI_PLD_GET_BAY(dword) ACPI_GET_BITS (dword, 31, ACPI_1BIT_MASK) -#define ACPI_PLD_SET_BAY(dword,value) ACPI_SET_BITS (dword, 31, ACPI_1BIT_MASK, value) /* Offset 64+31=95, Len 1 */ - -/* Fourth 32-bit dword, bits 96:127 */ - -#define ACPI_PLD_GET_EJECTABLE(dword) ACPI_GET_BITS (dword, 0, ACPI_1BIT_MASK) -#define ACPI_PLD_SET_EJECTABLE(dword,value) ACPI_SET_BITS (dword, 0, ACPI_1BIT_MASK, value) /* Offset 96+0=96, Len 1 */ - -#define ACPI_PLD_GET_OSPM_EJECT(dword) ACPI_GET_BITS (dword, 1, ACPI_1BIT_MASK) -#define ACPI_PLD_SET_OSPM_EJECT(dword,value) ACPI_SET_BITS (dword, 1, ACPI_1BIT_MASK, value) /* Offset 96+1=97, Len 1 */ - -#define ACPI_PLD_GET_CABINET(dword) ACPI_GET_BITS (dword, 2, ACPI_8BIT_MASK) -#define ACPI_PLD_SET_CABINET(dword,value) ACPI_SET_BITS (dword, 2, ACPI_8BIT_MASK, value) /* Offset 96+2=98, Len 8 */ - -#define ACPI_PLD_GET_CARD_CAGE(dword) ACPI_GET_BITS (dword, 10, ACPI_8BIT_MASK) -#define ACPI_PLD_SET_CARD_CAGE(dword,value) ACPI_SET_BITS (dword, 10, ACPI_8BIT_MASK, value) /* Offset 96+10=106, Len 8 */ - -#define ACPI_PLD_GET_REFERENCE(dword) ACPI_GET_BITS (dword, 18, ACPI_1BIT_MASK) -#define ACPI_PLD_SET_REFERENCE(dword,value) ACPI_SET_BITS (dword, 18, ACPI_1BIT_MASK, value) /* Offset 96+18=114, Len 1 */ - -#define ACPI_PLD_GET_ROTATION(dword) ACPI_GET_BITS (dword, 19, ACPI_4BIT_MASK) -#define ACPI_PLD_SET_ROTATION(dword,value) ACPI_SET_BITS (dword, 19, ACPI_4BIT_MASK, value) /* Offset 96+19=115, Len 4 */ - -#define ACPI_PLD_GET_ORDER(dword) ACPI_GET_BITS (dword, 23, ACPI_5BIT_MASK) -#define ACPI_PLD_SET_ORDER(dword,value) ACPI_SET_BITS (dword, 23, ACPI_5BIT_MASK, value) /* Offset 96+23=119, Len 5 */ - -/* Fifth 32-bit dword, bits 128:159 (Revision 2 of _PLD only) */ - -#define ACPI_PLD_GET_VERT_OFFSET(dword) ACPI_GET_BITS (dword, 0, ACPI_16BIT_MASK) -#define ACPI_PLD_SET_VERT_OFFSET(dword,value) ACPI_SET_BITS (dword, 0, ACPI_16BIT_MASK, value) /* Offset 128+0=128, Len 16 */ - -#define ACPI_PLD_GET_HORIZ_OFFSET(dword) ACPI_GET_BITS (dword, 16, ACPI_16BIT_MASK) -#define ACPI_PLD_SET_HORIZ_OFFSET(dword,value) ACPI_SET_BITS (dword, 16, ACPI_16BIT_MASK, value) /* Offset 128+16=144, Len 16 */ - -#endif /* ACBUFFER_H */ diff --git a/drivers/include/acpi/acconfig.h b/drivers/include/acpi/acconfig.h deleted file mode 100644 index fe2e3ac7b5..0000000000 --- a/drivers/include/acpi/acconfig.h +++ /dev/null @@ -1,246 +0,0 @@ -/****************************************************************************** - * - * Name: acconfig.h - Global configuration constants - * - *****************************************************************************/ - -/* - * Copyright (C) 2000 - 2016, 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 _ACCONFIG_H -#define _ACCONFIG_H - -/****************************************************************************** - * - * Configuration options - * - *****************************************************************************/ - -/* - * ACPI_DEBUG_OUTPUT - This switch enables all the debug facilities of the - * ACPI subsystem. This includes the DEBUG_PRINT output - * statements. When disabled, all DEBUG_PRINT - * statements are compiled out. - * - * ACPI_APPLICATION - Use this switch if the subsystem is going to be run - * at the application level. - * - */ - -/* - * OS name, used for the _OS object. The _OS object is essentially obsolete, - * but there is a large base of ASL/AML code in existing machines that check - * for the string below. The use of this string usually guarantees that - * the ASL will execute down the most tested code path. Also, there is some - * code that will not execute the _OSI method unless _OS matches the string - * below. Therefore, change this string at your own risk. - */ -#define ACPI_OS_NAME "Microsoft Windows NT" - -/* Maximum objects in the various object caches */ - -#define ACPI_MAX_STATE_CACHE_DEPTH 96 /* State objects */ -#define ACPI_MAX_PARSE_CACHE_DEPTH 96 /* Parse tree objects */ -#define ACPI_MAX_EXTPARSE_CACHE_DEPTH 96 /* Parse tree objects */ -#define ACPI_MAX_OBJECT_CACHE_DEPTH 96 /* Interpreter operand objects */ -#define ACPI_MAX_NAMESPACE_CACHE_DEPTH 96 /* Namespace objects */ - -/* - * Should the subsystem abort the loading of an ACPI table if the - * table checksum is incorrect? - */ -#ifndef ACPI_CHECKSUM_ABORT -#define ACPI_CHECKSUM_ABORT FALSE -#endif - -/* - * Generate a version of ACPICA that only supports "reduced hardware" - * platforms (as defined in ACPI 5.0). Set to TRUE to generate a specialized - * version of ACPICA that ONLY supports the ACPI 5.0 "reduced hardware" - * model. In other words, no ACPI hardware is supported. - * - * If TRUE, this means no support for the following: - * PM Event and Control registers - * SCI interrupt (and handler) - * Fixed Events - * General Purpose Events (GPEs) - * Global Lock - * ACPI PM timer - * FACS table (Waking vectors and Global Lock) - */ -#ifndef ACPI_REDUCED_HARDWARE -#define ACPI_REDUCED_HARDWARE FALSE -#endif - -/****************************************************************************** - * - * Subsystem Constants - * - *****************************************************************************/ - -/* Version of ACPI supported */ - -#define ACPI_CA_SUPPORT_LEVEL 5 - -/* Maximum count for a semaphore object */ - -#define ACPI_MAX_SEMAPHORE_COUNT 256 - -/* Maximum object reference count (detects object deletion issues) */ - -#define ACPI_MAX_REFERENCE_COUNT 0x1000 - -/* Default page size for use in mapping memory for operation regions */ - -#define ACPI_DEFAULT_PAGE_SIZE 4096 /* Must be power of 2 */ - -/* owner_id tracking. 8 entries allows for 255 owner_ids */ - -#define ACPI_NUM_OWNERID_MASKS 8 - -/* Size of the root table array is increased by this increment */ - -#define ACPI_ROOT_TABLE_SIZE_INCREMENT 4 - -/* Maximum sleep allowed via Sleep() operator */ - -#define ACPI_MAX_SLEEP 2000 /* 2000 millisec == two seconds */ - -/* Address Range lists are per-space_id (Memory and I/O only) */ - -#define ACPI_ADDRESS_RANGE_MAX 2 - -/****************************************************************************** - * - * ACPI Specification constants (Do not change unless the specification changes) - * - *****************************************************************************/ - -/* Method info (in WALK_STATE), containing local variables and argumetns */ - -#define ACPI_METHOD_NUM_LOCALS 8 -#define ACPI_METHOD_MAX_LOCAL 7 - -#define ACPI_METHOD_NUM_ARGS 7 -#define ACPI_METHOD_MAX_ARG 6 - -/* - * Operand Stack (in WALK_STATE), Must be large enough to contain METHOD_MAX_ARG - */ -#define ACPI_OBJ_NUM_OPERANDS 8 -#define ACPI_OBJ_MAX_OPERAND 7 - -/* Number of elements in the Result Stack frame, can be an arbitrary value */ - -#define ACPI_RESULTS_FRAME_OBJ_NUM 8 - -/* - * Maximal number of elements the Result Stack can contain, - * it may be an arbitray value not exceeding the types of - * result_size and result_count (now u8). - */ -#define ACPI_RESULTS_OBJ_NUM_MAX 255 - -/* Constants used in searching for the RSDP in low memory */ - -#define ACPI_EBDA_PTR_LOCATION 0x0000040E /* Physical Address */ -#define ACPI_EBDA_PTR_LENGTH 2 -#define ACPI_EBDA_WINDOW_SIZE 1024 -#define ACPI_HI_RSDP_WINDOW_BASE 0x000E0000 /* Physical Address */ -#define ACPI_HI_RSDP_WINDOW_SIZE 0x00020000 -#define ACPI_RSDP_SCAN_STEP 16 - -/* Operation regions */ - -#define ACPI_USER_REGION_BEGIN 0x80 - -/* Maximum space_ids for Operation Regions */ - -#define ACPI_MAX_ADDRESS_SPACE 255 -#define ACPI_NUM_DEFAULT_SPACES 4 - -/* Array sizes. Used for range checking also */ - -#define ACPI_MAX_MATCH_OPCODE 5 - -/* RSDP checksums */ - -#define ACPI_RSDP_CHECKSUM_LENGTH 20 -#define ACPI_RSDP_XCHECKSUM_LENGTH 36 - -/* SMBus, GSBus and IPMI bidirectional buffer size */ - -#define ACPI_SMBUS_BUFFER_SIZE 34 -#define ACPI_GSBUS_BUFFER_SIZE 34 -#define ACPI_IPMI_BUFFER_SIZE 66 - -/* _sx_d and _sx_w control methods */ - -#define ACPI_NUM_sx_d_METHODS 4 -#define ACPI_NUM_sx_w_METHODS 5 - -/****************************************************************************** - * - * Miscellaneous constants - * - *****************************************************************************/ - -/* UUID constants */ - -#define UUID_BUFFER_LENGTH 16 /* Length of UUID in memory */ -#define UUID_STRING_LENGTH 36 /* Total length of a UUID string */ - -/* Positions for required hyphens (dashes) in UUID strings */ - -#define UUID_HYPHEN1_OFFSET 8 -#define UUID_HYPHEN2_OFFSET 13 -#define UUID_HYPHEN3_OFFSET 18 -#define UUID_HYPHEN4_OFFSET 23 - -/****************************************************************************** - * - * ACPI AML Debugger - * - *****************************************************************************/ - -#define ACPI_DEBUGGER_MAX_ARGS ACPI_METHOD_NUM_ARGS + 4 /* Max command line arguments */ -#define ACPI_DB_LINE_BUFFER_SIZE 512 - -#define ACPI_DEBUGGER_COMMAND_PROMPT '-' -#define ACPI_DEBUGGER_EXECUTE_PROMPT '%' - -#endif /* _ACCONFIG_H */ diff --git a/drivers/include/acpi/acexcep.h b/drivers/include/acpi/acexcep.h deleted file mode 100644 index 2c396344a7..0000000000 --- a/drivers/include/acpi/acexcep.h +++ /dev/null @@ -1,388 +0,0 @@ -/****************************************************************************** - * - * Name: acexcep.h - Exception codes returned by the ACPI subsystem - * - *****************************************************************************/ - -/* - * Copyright (C) 2000 - 2016, 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 __ACEXCEP_H__ -#define __ACEXCEP_H__ - -/* This module contains all possible exception codes for acpi_status */ - -/* - * Exception code classes - */ -#define AE_CODE_ENVIRONMENTAL 0x0000 /* General ACPICA environment */ -#define AE_CODE_PROGRAMMER 0x1000 /* External ACPICA interface caller */ -#define AE_CODE_ACPI_TABLES 0x2000 /* ACPI tables */ -#define AE_CODE_AML 0x3000 /* From executing AML code */ -#define AE_CODE_CONTROL 0x4000 /* Internal control codes */ - -#define AE_CODE_MAX 0x4000 -#define AE_CODE_MASK 0xF000 - -/* - * Macros to insert the exception code classes - */ -#define EXCEP_ENV(code) ((acpi_status) (code | AE_CODE_ENVIRONMENTAL)) -#define EXCEP_PGM(code) ((acpi_status) (code | AE_CODE_PROGRAMMER)) -#define EXCEP_TBL(code) ((acpi_status) (code | AE_CODE_ACPI_TABLES)) -#define EXCEP_AML(code) ((acpi_status) (code | AE_CODE_AML)) -#define EXCEP_CTL(code) ((acpi_status) (code | AE_CODE_CONTROL)) - -/* - * Exception info table. The "Description" field is used only by the - * ACPICA help application (acpihelp). - */ -struct acpi_exception_info { - char *name; - -#ifdef ACPI_HELP_APP - char *description; -#endif -}; - -#ifdef ACPI_HELP_APP -#define EXCEP_TXT(name,description) {name, description} -#else -#define EXCEP_TXT(name,description) {name} -#endif - -/* - * Success is always zero, failure is non-zero - */ -#define ACPI_SUCCESS(a) (!(a)) -#define ACPI_FAILURE(a) (a) - -#define ACPI_SKIP(a) (a == AE_CTRL_SKIP) -#define AE_OK (acpi_status) 0x0000 - -/* - * Environmental exceptions - */ -#define AE_ERROR EXCEP_ENV (0x0001) -#define AE_NO_ACPI_TABLES EXCEP_ENV (0x0002) -#define AE_NO_NAMESPACE EXCEP_ENV (0x0003) -#define AE_NO_MEMORY EXCEP_ENV (0x0004) -#define AE_NOT_FOUND EXCEP_ENV (0x0005) -#define AE_NOT_EXIST EXCEP_ENV (0x0006) -#define AE_ALREADY_EXISTS EXCEP_ENV (0x0007) -#define AE_TYPE EXCEP_ENV (0x0008) -#define AE_NULL_OBJECT EXCEP_ENV (0x0009) -#define AE_NULL_ENTRY EXCEP_ENV (0x000A) -#define AE_BUFFER_OVERFLOW EXCEP_ENV (0x000B) -#define AE_STACK_OVERFLOW EXCEP_ENV (0x000C) -#define AE_STACK_UNDERFLOW EXCEP_ENV (0x000D) -#define AE_NOT_IMPLEMENTED EXCEP_ENV (0x000E) -#define AE_SUPPORT EXCEP_ENV (0x000F) -#define AE_LIMIT EXCEP_ENV (0x0010) -#define AE_TIME EXCEP_ENV (0x0011) -#define AE_ACQUIRE_DEADLOCK EXCEP_ENV (0x0012) -#define AE_RELEASE_DEADLOCK EXCEP_ENV (0x0013) -#define AE_NOT_ACQUIRED EXCEP_ENV (0x0014) -#define AE_ALREADY_ACQUIRED EXCEP_ENV (0x0015) -#define AE_NO_HARDWARE_RESPONSE EXCEP_ENV (0x0016) -#define AE_NO_GLOBAL_LOCK EXCEP_ENV (0x0017) -#define AE_ABORT_METHOD EXCEP_ENV (0x0018) -#define AE_SAME_HANDLER EXCEP_ENV (0x0019) -#define AE_NO_HANDLER EXCEP_ENV (0x001A) -#define AE_OWNER_ID_LIMIT EXCEP_ENV (0x001B) -#define AE_NOT_CONFIGURED EXCEP_ENV (0x001C) -#define AE_ACCESS EXCEP_ENV (0x001D) -#define AE_IO_ERROR EXCEP_ENV (0x001E) - -#define AE_CODE_ENV_MAX 0x001E - -/* - * Programmer exceptions - */ -#define AE_BAD_PARAMETER EXCEP_PGM (0x0001) -#define AE_BAD_CHARACTER EXCEP_PGM (0x0002) -#define AE_BAD_PATHNAME EXCEP_PGM (0x0003) -#define AE_BAD_DATA EXCEP_PGM (0x0004) -#define AE_BAD_HEX_CONSTANT EXCEP_PGM (0x0005) -#define AE_BAD_OCTAL_CONSTANT EXCEP_PGM (0x0006) -#define AE_BAD_DECIMAL_CONSTANT EXCEP_PGM (0x0007) -#define AE_MISSING_ARGUMENTS EXCEP_PGM (0x0008) -#define AE_BAD_ADDRESS EXCEP_PGM (0x0009) - -#define AE_CODE_PGM_MAX 0x0009 - -/* - * Acpi table exceptions - */ -#define AE_BAD_SIGNATURE EXCEP_TBL (0x0001) -#define AE_BAD_HEADER EXCEP_TBL (0x0002) -#define AE_BAD_CHECKSUM EXCEP_TBL (0x0003) -#define AE_BAD_VALUE EXCEP_TBL (0x0004) -#define AE_INVALID_TABLE_LENGTH EXCEP_TBL (0x0005) - -#define AE_CODE_TBL_MAX 0x0005 - -/* - * AML exceptions. These are caused by problems with - * the actual AML byte stream - */ -#define AE_AML_BAD_OPCODE EXCEP_AML (0x0001) -#define AE_AML_NO_OPERAND EXCEP_AML (0x0002) -#define AE_AML_OPERAND_TYPE EXCEP_AML (0x0003) -#define AE_AML_OPERAND_VALUE EXCEP_AML (0x0004) -#define AE_AML_UNINITIALIZED_LOCAL EXCEP_AML (0x0005) -#define AE_AML_UNINITIALIZED_ARG EXCEP_AML (0x0006) -#define AE_AML_UNINITIALIZED_ELEMENT EXCEP_AML (0x0007) -#define AE_AML_NUMERIC_OVERFLOW EXCEP_AML (0x0008) -#define AE_AML_REGION_LIMIT EXCEP_AML (0x0009) -#define AE_AML_BUFFER_LIMIT EXCEP_AML (0x000A) -#define AE_AML_PACKAGE_LIMIT EXCEP_AML (0x000B) -#define AE_AML_DIVIDE_BY_ZERO EXCEP_AML (0x000C) -#define AE_AML_BAD_NAME EXCEP_AML (0x000D) -#define AE_AML_NAME_NOT_FOUND EXCEP_AML (0x000E) -#define AE_AML_INTERNAL EXCEP_AML (0x000F) -#define AE_AML_INVALID_SPACE_ID EXCEP_AML (0x0010) -#define AE_AML_STRING_LIMIT EXCEP_AML (0x0011) -#define AE_AML_NO_RETURN_VALUE EXCEP_AML (0x0012) -#define AE_AML_METHOD_LIMIT EXCEP_AML (0x0013) -#define AE_AML_NOT_OWNER EXCEP_AML (0x0014) -#define AE_AML_MUTEX_ORDER EXCEP_AML (0x0015) -#define AE_AML_MUTEX_NOT_ACQUIRED EXCEP_AML (0x0016) -#define AE_AML_INVALID_RESOURCE_TYPE EXCEP_AML (0x0017) -#define AE_AML_INVALID_INDEX EXCEP_AML (0x0018) -#define AE_AML_REGISTER_LIMIT EXCEP_AML (0x0019) -#define AE_AML_NO_WHILE EXCEP_AML (0x001A) -#define AE_AML_ALIGNMENT EXCEP_AML (0x001B) -#define AE_AML_NO_RESOURCE_END_TAG EXCEP_AML (0x001C) -#define AE_AML_BAD_RESOURCE_VALUE EXCEP_AML (0x001D) -#define AE_AML_CIRCULAR_REFERENCE EXCEP_AML (0x001E) -#define AE_AML_BAD_RESOURCE_LENGTH EXCEP_AML (0x001F) -#define AE_AML_ILLEGAL_ADDRESS EXCEP_AML (0x0020) -#define AE_AML_INFINITE_LOOP EXCEP_AML (0x0021) -#define AE_AML_UNINITIALIZED_NODE EXCEP_AML (0x0022) -#define AE_AML_TARGET_TYPE EXCEP_AML (0x0023) - -#define AE_CODE_AML_MAX 0x0023 - -/* - * Internal exceptions used for control - */ -#define AE_CTRL_RETURN_VALUE EXCEP_CTL (0x0001) -#define AE_CTRL_PENDING EXCEP_CTL (0x0002) -#define AE_CTRL_TERMINATE EXCEP_CTL (0x0003) -#define AE_CTRL_TRUE EXCEP_CTL (0x0004) -#define AE_CTRL_FALSE EXCEP_CTL (0x0005) -#define AE_CTRL_DEPTH EXCEP_CTL (0x0006) -#define AE_CTRL_END EXCEP_CTL (0x0007) -#define AE_CTRL_TRANSFER EXCEP_CTL (0x0008) -#define AE_CTRL_BREAK EXCEP_CTL (0x0009) -#define AE_CTRL_CONTINUE EXCEP_CTL (0x000A) -#define AE_CTRL_SKIP EXCEP_CTL (0x000B) -#define AE_CTRL_PARSE_CONTINUE EXCEP_CTL (0x000C) -#define AE_CTRL_PARSE_PENDING EXCEP_CTL (0x000D) - -#define AE_CODE_CTRL_MAX 0x000D - -/* Exception strings for acpi_format_exception */ - -#ifdef ACPI_DEFINE_EXCEPTION_TABLE - -/* - * String versions of the exception codes above - * These strings must match the corresponding defines exactly - */ -static const struct acpi_exception_info acpi_gbl_exception_names_env[] = { - EXCEP_TXT("AE_OK", "No error"), - EXCEP_TXT("AE_ERROR", "Unspecified error"), - EXCEP_TXT("AE_NO_ACPI_TABLES", "ACPI tables could not be found"), - EXCEP_TXT("AE_NO_NAMESPACE", "A namespace has not been loaded"), - EXCEP_TXT("AE_NO_MEMORY", "Insufficient dynamic memory"), - EXCEP_TXT("AE_NOT_FOUND", "A requested entity is not found"), - EXCEP_TXT("AE_NOT_EXIST", "A required entity does not exist"), - EXCEP_TXT("AE_ALREADY_EXISTS", "An entity already exists"), - EXCEP_TXT("AE_TYPE", "The object type is incorrect"), - EXCEP_TXT("AE_NULL_OBJECT", "A required object was missing"), - EXCEP_TXT("AE_NULL_ENTRY", "The requested object does not exist"), - EXCEP_TXT("AE_BUFFER_OVERFLOW", "The buffer provided is too small"), - EXCEP_TXT("AE_STACK_OVERFLOW", "An internal stack overflowed"), - EXCEP_TXT("AE_STACK_UNDERFLOW", "An internal stack underflowed"), - EXCEP_TXT("AE_NOT_IMPLEMENTED", "The feature is not implemented"), - EXCEP_TXT("AE_SUPPORT", "The feature is not supported"), - EXCEP_TXT("AE_LIMIT", "A predefined limit was exceeded"), - EXCEP_TXT("AE_TIME", "A time limit or timeout expired"), - EXCEP_TXT("AE_ACQUIRE_DEADLOCK", - "Internal error, attempt was made to acquire a mutex in improper order"), - EXCEP_TXT("AE_RELEASE_DEADLOCK", - "Internal error, attempt was made to release a mutex in improper order"), - EXCEP_TXT("AE_NOT_ACQUIRED", - "An attempt to release a mutex or Global Lock without a previous acquire"), - EXCEP_TXT("AE_ALREADY_ACQUIRED", - "Internal error, attempt was made to acquire a mutex twice"), - EXCEP_TXT("AE_NO_HARDWARE_RESPONSE", - "Hardware did not respond after an I/O operation"), - EXCEP_TXT("AE_NO_GLOBAL_LOCK", "There is no FACS Global Lock"), - EXCEP_TXT("AE_ABORT_METHOD", "A control method was aborted"), - EXCEP_TXT("AE_SAME_HANDLER", - "Attempt was made to install the same handler that is already installed"), - EXCEP_TXT("AE_NO_HANDLER", - "A handler for the operation is not installed"), - EXCEP_TXT("AE_OWNER_ID_LIMIT", - "There are no more Owner IDs available for ACPI tables or control methods"), - EXCEP_TXT("AE_NOT_CONFIGURED", - "The interface is not part of the current subsystem configuration"), - EXCEP_TXT("AE_ACCESS", "Permission denied for the requested operation"), - EXCEP_TXT("AE_IO_ERROR", "An I/O error occurred") -}; - -static const struct acpi_exception_info acpi_gbl_exception_names_pgm[] = { - EXCEP_TXT(NULL, NULL), - EXCEP_TXT("AE_BAD_PARAMETER", "A parameter is out of range or invalid"), - EXCEP_TXT("AE_BAD_CHARACTER", - "An invalid character was found in a name"), - EXCEP_TXT("AE_BAD_PATHNAME", - "An invalid character was found in a pathname"), - EXCEP_TXT("AE_BAD_DATA", - "A package or buffer contained incorrect data"), - EXCEP_TXT("AE_BAD_HEX_CONSTANT", "Invalid character in a Hex constant"), - EXCEP_TXT("AE_BAD_OCTAL_CONSTANT", - "Invalid character in an Octal constant"), - EXCEP_TXT("AE_BAD_DECIMAL_CONSTANT", - "Invalid character in a Decimal constant"), - EXCEP_TXT("AE_MISSING_ARGUMENTS", - "Too few arguments were passed to a control method"), - EXCEP_TXT("AE_BAD_ADDRESS", "An illegal null I/O address") -}; - -static const struct acpi_exception_info acpi_gbl_exception_names_tbl[] = { - EXCEP_TXT(NULL, NULL), - EXCEP_TXT("AE_BAD_SIGNATURE", "An ACPI table has an invalid signature"), - EXCEP_TXT("AE_BAD_HEADER", "Invalid field in an ACPI table header"), - EXCEP_TXT("AE_BAD_CHECKSUM", "An ACPI table checksum is not correct"), - EXCEP_TXT("AE_BAD_VALUE", "An invalid value was found in a table"), - EXCEP_TXT("AE_INVALID_TABLE_LENGTH", - "The FADT or FACS has improper length") -}; - -static const struct acpi_exception_info acpi_gbl_exception_names_aml[] = { - EXCEP_TXT(NULL, NULL), - EXCEP_TXT("AE_AML_BAD_OPCODE", "Invalid AML opcode encountered"), - EXCEP_TXT("AE_AML_NO_OPERAND", "A required operand is missing"), - EXCEP_TXT("AE_AML_OPERAND_TYPE", - "An operand of an incorrect type was encountered"), - EXCEP_TXT("AE_AML_OPERAND_VALUE", - "The operand had an inappropriate or invalid value"), - EXCEP_TXT("AE_AML_UNINITIALIZED_LOCAL", - "Method tried to use an uninitialized local variable"), - EXCEP_TXT("AE_AML_UNINITIALIZED_ARG", - "Method tried to use an uninitialized argument"), - EXCEP_TXT("AE_AML_UNINITIALIZED_ELEMENT", - "Method tried to use an empty package element"), - EXCEP_TXT("AE_AML_NUMERIC_OVERFLOW", - "Overflow during BCD conversion or other"), - EXCEP_TXT("AE_AML_REGION_LIMIT", - "Tried to access beyond the end of an Operation Region"), - EXCEP_TXT("AE_AML_BUFFER_LIMIT", - "Tried to access beyond the end of a buffer"), - EXCEP_TXT("AE_AML_PACKAGE_LIMIT", - "Tried to access beyond the end of a package"), - EXCEP_TXT("AE_AML_DIVIDE_BY_ZERO", - "During execution of AML Divide operator"), - EXCEP_TXT("AE_AML_BAD_NAME", - "An ACPI name contains invalid character(s)"), - EXCEP_TXT("AE_AML_NAME_NOT_FOUND", - "Could not resolve a named reference"), - EXCEP_TXT("AE_AML_INTERNAL", "An internal error within the interprete"), - EXCEP_TXT("AE_AML_INVALID_SPACE_ID", - "An Operation Region SpaceID is invalid"), - EXCEP_TXT("AE_AML_STRING_LIMIT", - "String is longer than 200 characters"), - EXCEP_TXT("AE_AML_NO_RETURN_VALUE", - "A method did not return a required value"), - EXCEP_TXT("AE_AML_METHOD_LIMIT", - "A control method reached the maximum reentrancy limit of 255"), - EXCEP_TXT("AE_AML_NOT_OWNER", - "A thread tried to release a mutex that it does not own"), - EXCEP_TXT("AE_AML_MUTEX_ORDER", "Mutex SyncLevel release mismatch"), - EXCEP_TXT("AE_AML_MUTEX_NOT_ACQUIRED", - "Attempt to release a mutex that was not previously acquired"), - EXCEP_TXT("AE_AML_INVALID_RESOURCE_TYPE", - "Invalid resource type in resource list"), - EXCEP_TXT("AE_AML_INVALID_INDEX", - "Invalid Argx or Localx (x too large)"), - EXCEP_TXT("AE_AML_REGISTER_LIMIT", - "Bank value or Index value beyond range of register"), - EXCEP_TXT("AE_AML_NO_WHILE", "Break or Continue without a While"), - EXCEP_TXT("AE_AML_ALIGNMENT", - "Non-aligned memory transfer on platform that does not support this"), - EXCEP_TXT("AE_AML_NO_RESOURCE_END_TAG", - "No End Tag in a resource list"), - EXCEP_TXT("AE_AML_BAD_RESOURCE_VALUE", - "Invalid value of a resource element"), - EXCEP_TXT("AE_AML_CIRCULAR_REFERENCE", - "Two references refer to each other"), - EXCEP_TXT("AE_AML_BAD_RESOURCE_LENGTH", - "The length of a Resource Descriptor in the AML is incorrect"), - EXCEP_TXT("AE_AML_ILLEGAL_ADDRESS", - "A memory, I/O, or PCI configuration address is invalid"), - EXCEP_TXT("AE_AML_INFINITE_LOOP", - "An apparent infinite AML While loop, method was aborted"), - EXCEP_TXT("AE_AML_UNINITIALIZED_NODE", - "A namespace node is uninitialized or unresolved"), - EXCEP_TXT("AE_AML_TARGET_TYPE", - "A target operand of an incorrect type was encountered") -}; - -static const struct acpi_exception_info acpi_gbl_exception_names_ctrl[] = { - EXCEP_TXT(NULL, NULL), - EXCEP_TXT("AE_CTRL_RETURN_VALUE", "A Method returned a value"), - EXCEP_TXT("AE_CTRL_PENDING", "Method is calling another method"), - EXCEP_TXT("AE_CTRL_TERMINATE", "Terminate the executing method"), - EXCEP_TXT("AE_CTRL_TRUE", "An If or While predicate result"), - EXCEP_TXT("AE_CTRL_FALSE", "An If or While predicate result"), - EXCEP_TXT("AE_CTRL_DEPTH", "Maximum search depth has been reached"), - EXCEP_TXT("AE_CTRL_END", "An If or While predicate is false"), - EXCEP_TXT("AE_CTRL_TRANSFER", "Transfer control to called method"), - EXCEP_TXT("AE_CTRL_BREAK", "A Break has been executed"), - EXCEP_TXT("AE_CTRL_CONTINUE", "A Continue has been executed"), - EXCEP_TXT("AE_CTRL_SKIP", "Not currently used"), - EXCEP_TXT("AE_CTRL_PARSE_CONTINUE", "Used to skip over bad opcodes"), - EXCEP_TXT("AE_CTRL_PARSE_PENDING", "Used to implement AML While loops") -}; - -#endif /* EXCEPTION_TABLE */ - -#endif /* __ACEXCEP_H__ */ diff --git a/drivers/include/acpi/acnames.h b/drivers/include/acpi/acnames.h deleted file mode 100644 index be779db708..0000000000 --- a/drivers/include/acpi/acnames.h +++ /dev/null @@ -1,92 +0,0 @@ -/****************************************************************************** - * - * Name: acnames.h - Global names and strings - * - *****************************************************************************/ - -/* - * Copyright (C) 2000 - 2016, 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 __ACNAMES_H__ -#define __ACNAMES_H__ - -/* Method names - these methods can appear anywhere in the namespace */ - -#define METHOD_NAME__ADR "_ADR" -#define METHOD_NAME__AEI "_AEI" -#define METHOD_NAME__BBN "_BBN" -#define METHOD_NAME__CBA "_CBA" -#define METHOD_NAME__CID "_CID" -#define METHOD_NAME__CLS "_CLS" -#define METHOD_NAME__CRS "_CRS" -#define METHOD_NAME__DDN "_DDN" -#define METHOD_NAME__HID "_HID" -#define METHOD_NAME__INI "_INI" -#define METHOD_NAME__PLD "_PLD" -#define METHOD_NAME__DSD "_DSD" -#define METHOD_NAME__PRS "_PRS" -#define METHOD_NAME__PRT "_PRT" -#define METHOD_NAME__PRW "_PRW" -#define METHOD_NAME__PS0 "_PS0" -#define METHOD_NAME__PS1 "_PS1" -#define METHOD_NAME__PS2 "_PS2" -#define METHOD_NAME__PS3 "_PS3" -#define METHOD_NAME__REG "_REG" -#define METHOD_NAME__SB_ "_SB_" -#define METHOD_NAME__SEG "_SEG" -#define METHOD_NAME__SRS "_SRS" -#define METHOD_NAME__STA "_STA" -#define METHOD_NAME__SUB "_SUB" -#define METHOD_NAME__UID "_UID" - -/* Method names - these methods must appear at the namespace root */ - -#define METHOD_PATHNAME__PTS "\\_PTS" -#define METHOD_PATHNAME__SST "\\_SI._SST" -#define METHOD_PATHNAME__WAK "\\_WAK" - -/* Definitions of the predefined namespace names */ - -#define ACPI_UNKNOWN_NAME (u32) 0x3F3F3F3F /* Unknown name is "????" */ -#define ACPI_ROOT_NAME (u32) 0x5F5F5F5C /* Root name is "\___" */ - -#define ACPI_PREFIX_MIXED (u32) 0x69706341 /* "Acpi" */ -#define ACPI_PREFIX_LOWER (u32) 0x69706361 /* "acpi" */ - -#define ACPI_NS_ROOT_PATH "\\" - -#endif /* __ACNAMES_H__ */ diff --git a/drivers/include/acpi/acoutput.h b/drivers/include/acpi/acoutput.h deleted file mode 100644 index 34f601e7b8..0000000000 --- a/drivers/include/acpi/acoutput.h +++ /dev/null @@ -1,487 +0,0 @@ -/****************************************************************************** - * - * Name: acoutput.h -- debug output - * - *****************************************************************************/ - -/* - * Copyright (C) 2000 - 2016, 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 __ACOUTPUT_H__ -#define __ACOUTPUT_H__ - -/* - * Debug levels and component IDs. These are used to control the - * granularity of the output of the ACPI_DEBUG_PRINT macro -- on a - * per-component basis and a per-exception-type basis. - */ - -/* Component IDs are used in the global "DebugLayer" */ - -#define ACPI_UTILITIES 0x00000001 -#define ACPI_HARDWARE 0x00000002 -#define ACPI_EVENTS 0x00000004 -#define ACPI_TABLES 0x00000008 -#define ACPI_NAMESPACE 0x00000010 -#define ACPI_PARSER 0x00000020 -#define ACPI_DISPATCHER 0x00000040 -#define ACPI_EXECUTER 0x00000080 -#define ACPI_RESOURCES 0x00000100 -#define ACPI_CA_DEBUGGER 0x00000200 -#define ACPI_OS_SERVICES 0x00000400 -#define ACPI_CA_DISASSEMBLER 0x00000800 - -/* Component IDs for ACPI tools and utilities */ - -#define ACPI_COMPILER 0x00001000 -#define ACPI_TOOLS 0x00002000 -#define ACPI_EXAMPLE 0x00004000 -#define ACPI_DRIVER 0x00008000 -#define DT_COMPILER 0x00010000 -#define ASL_PREPROCESSOR 0x00020000 - -#define ACPI_ALL_COMPONENTS 0x0001FFFF -#define ACPI_COMPONENT_DEFAULT (ACPI_ALL_COMPONENTS) - -/* Component IDs reserved for ACPI drivers */ - -#define ACPI_ALL_DRIVERS 0xFFFF0000 - -/* - * Raw debug output levels, do not use these in the ACPI_DEBUG_PRINT macros - */ -#define ACPI_LV_INIT 0x00000001 -#define ACPI_LV_DEBUG_OBJECT 0x00000002 -#define ACPI_LV_INFO 0x00000004 -#define ACPI_LV_REPAIR 0x00000008 -#define ACPI_LV_TRACE_POINT 0x00000010 -#define ACPI_LV_ALL_EXCEPTIONS 0x0000001F - -/* Trace verbosity level 1 [Standard Trace Level] */ - -#define ACPI_LV_INIT_NAMES 0x00000020 -#define ACPI_LV_PARSE 0x00000040 -#define ACPI_LV_LOAD 0x00000080 -#define ACPI_LV_DISPATCH 0x00000100 -#define ACPI_LV_EXEC 0x00000200 -#define ACPI_LV_NAMES 0x00000400 -#define ACPI_LV_OPREGION 0x00000800 -#define ACPI_LV_BFIELD 0x00001000 -#define ACPI_LV_TABLES 0x00002000 -#define ACPI_LV_VALUES 0x00004000 -#define ACPI_LV_OBJECTS 0x00008000 -#define ACPI_LV_RESOURCES 0x00010000 -#define ACPI_LV_USER_REQUESTS 0x00020000 -#define ACPI_LV_PACKAGE 0x00040000 -#define ACPI_LV_VERBOSITY1 0x0007FF40 | ACPI_LV_ALL_EXCEPTIONS - -/* Trace verbosity level 2 [Function tracing and memory allocation] */ - -#define ACPI_LV_ALLOCATIONS 0x00100000 -#define ACPI_LV_FUNCTIONS 0x00200000 -#define ACPI_LV_OPTIMIZATIONS 0x00400000 -#define ACPI_LV_VERBOSITY2 0x00700000 | ACPI_LV_VERBOSITY1 -#define ACPI_LV_ALL ACPI_LV_VERBOSITY2 - -/* Trace verbosity level 3 [Threading, I/O, and Interrupts] */ - -#define ACPI_LV_MUTEX 0x01000000 -#define ACPI_LV_THREADS 0x02000000 -#define ACPI_LV_IO 0x04000000 -#define ACPI_LV_INTERRUPTS 0x08000000 -#define ACPI_LV_VERBOSITY3 0x0F000000 | ACPI_LV_VERBOSITY2 - -/* Exceptionally verbose output -- also used in the global "DebugLevel" */ - -#define ACPI_LV_AML_DISASSEMBLE 0x10000000 -#define ACPI_LV_VERBOSE_INFO 0x20000000 -#define ACPI_LV_FULL_TABLES 0x40000000 -#define ACPI_LV_EVENTS 0x80000000 -#define ACPI_LV_VERBOSE 0xF0000000 - -/* - * Debug level macros that are used in the DEBUG_PRINT macros - */ -#define ACPI_DEBUG_LEVEL(dl) (u32) dl,ACPI_DEBUG_PARAMETERS - -/* - * Exception level -- used in the global "DebugLevel" - * - * Note: For errors, use the ACPI_ERROR or ACPI_EXCEPTION interfaces. - * For warnings, use ACPI_WARNING. - */ -#define ACPI_DB_INIT ACPI_DEBUG_LEVEL (ACPI_LV_INIT) -#define ACPI_DB_DEBUG_OBJECT ACPI_DEBUG_LEVEL (ACPI_LV_DEBUG_OBJECT) -#define ACPI_DB_INFO ACPI_DEBUG_LEVEL (ACPI_LV_INFO) -#define ACPI_DB_REPAIR ACPI_DEBUG_LEVEL (ACPI_LV_REPAIR) -#define ACPI_DB_TRACE_POINT ACPI_DEBUG_LEVEL (ACPI_LV_TRACE_POINT) -#define ACPI_DB_ALL_EXCEPTIONS ACPI_DEBUG_LEVEL (ACPI_LV_ALL_EXCEPTIONS) - -/* Trace level -- also used in the global "DebugLevel" */ - -#define ACPI_DB_INIT_NAMES ACPI_DEBUG_LEVEL (ACPI_LV_INIT_NAMES) -#define ACPI_DB_THREADS ACPI_DEBUG_LEVEL (ACPI_LV_THREADS) -#define ACPI_DB_PARSE ACPI_DEBUG_LEVEL (ACPI_LV_PARSE) -#define ACPI_DB_DISPATCH ACPI_DEBUG_LEVEL (ACPI_LV_DISPATCH) -#define ACPI_DB_LOAD ACPI_DEBUG_LEVEL (ACPI_LV_LOAD) -#define ACPI_DB_EXEC ACPI_DEBUG_LEVEL (ACPI_LV_EXEC) -#define ACPI_DB_NAMES ACPI_DEBUG_LEVEL (ACPI_LV_NAMES) -#define ACPI_DB_OPREGION ACPI_DEBUG_LEVEL (ACPI_LV_OPREGION) -#define ACPI_DB_BFIELD ACPI_DEBUG_LEVEL (ACPI_LV_BFIELD) -#define ACPI_DB_TABLES ACPI_DEBUG_LEVEL (ACPI_LV_TABLES) -#define ACPI_DB_FUNCTIONS ACPI_DEBUG_LEVEL (ACPI_LV_FUNCTIONS) -#define ACPI_DB_OPTIMIZATIONS ACPI_DEBUG_LEVEL (ACPI_LV_OPTIMIZATIONS) -#define ACPI_DB_VALUES ACPI_DEBUG_LEVEL (ACPI_LV_VALUES) -#define ACPI_DB_OBJECTS ACPI_DEBUG_LEVEL (ACPI_LV_OBJECTS) -#define ACPI_DB_ALLOCATIONS ACPI_DEBUG_LEVEL (ACPI_LV_ALLOCATIONS) -#define ACPI_DB_RESOURCES ACPI_DEBUG_LEVEL (ACPI_LV_RESOURCES) -#define ACPI_DB_IO ACPI_DEBUG_LEVEL (ACPI_LV_IO) -#define ACPI_DB_INTERRUPTS ACPI_DEBUG_LEVEL (ACPI_LV_INTERRUPTS) -#define ACPI_DB_USER_REQUESTS ACPI_DEBUG_LEVEL (ACPI_LV_USER_REQUESTS) -#define ACPI_DB_PACKAGE ACPI_DEBUG_LEVEL (ACPI_LV_PACKAGE) -#define ACPI_DB_MUTEX ACPI_DEBUG_LEVEL (ACPI_LV_MUTEX) -#define ACPI_DB_EVENTS ACPI_DEBUG_LEVEL (ACPI_LV_EVENTS) - -#define ACPI_DB_ALL ACPI_DEBUG_LEVEL (ACPI_LV_ALL) - -/* Defaults for debug_level, debug and normal */ - -#define ACPI_DEBUG_DEFAULT (ACPI_LV_INFO | ACPI_LV_REPAIR) -#define ACPI_NORMAL_DEFAULT (ACPI_LV_INIT | ACPI_LV_DEBUG_OBJECT | ACPI_LV_REPAIR) -#define ACPI_DEBUG_ALL (ACPI_LV_AML_DISASSEMBLE | ACPI_LV_ALL_EXCEPTIONS | ACPI_LV_ALL) - -/* - * Global trace flags - */ -#define ACPI_TRACE_ENABLED ((u32) 4) -#define ACPI_TRACE_ONESHOT ((u32) 2) -#define ACPI_TRACE_OPCODE ((u32) 1) - -/* Defaults for trace debugging level/layer */ - -#define ACPI_TRACE_LEVEL_ALL ACPI_LV_ALL -#define ACPI_TRACE_LAYER_ALL 0x000001FF -#define ACPI_TRACE_LEVEL_DEFAULT ACPI_LV_TRACE_POINT -#define ACPI_TRACE_LAYER_DEFAULT ACPI_EXECUTER - -#if defined (ACPI_DEBUG_OUTPUT) || !defined (ACPI_NO_ERROR_MESSAGES) -/* - * The module name is used primarily for error and debug messages. - * The __FILE__ macro is not very useful for this, because it - * usually includes the entire pathname to the module making the - * debug output difficult to read. - */ -#define ACPI_MODULE_NAME(name) static const char ACPI_UNUSED_VAR _acpi_module_name[] = name; -#else -/* - * For the no-debug and no-error-msg cases, we must at least define - * a null module name. - */ -#define ACPI_MODULE_NAME(name) -#define _acpi_module_name "" -#endif - -/* - * Ascii error messages can be configured out - */ -#ifndef ACPI_NO_ERROR_MESSAGES -#define AE_INFO _acpi_module_name, __LINE__ - -/* - * Error reporting. Callers module and line number are inserted by AE_INFO, - * the plist contains a set of parens to allow variable-length lists. - * These macros are used for both the debug and non-debug versions of the code. - */ -#define ACPI_INFO(plist) acpi_info plist -#define ACPI_WARNING(plist) acpi_warning plist -#define ACPI_EXCEPTION(plist) acpi_exception plist -#define ACPI_ERROR(plist) acpi_error plist -#define ACPI_BIOS_WARNING(plist) acpi_bios_warning plist -#define ACPI_BIOS_ERROR(plist) acpi_bios_error plist -#define ACPI_DEBUG_OBJECT(obj,l,i) acpi_ex_do_debug_object(obj,l,i) - -#else - -/* No error messages */ - -#define ACPI_INFO(plist) -#define ACPI_WARNING(plist) -#define ACPI_EXCEPTION(plist) -#define ACPI_ERROR(plist) -#define ACPI_BIOS_WARNING(plist) -#define ACPI_BIOS_ERROR(plist) -#define ACPI_DEBUG_OBJECT(obj,l,i) - -#endif /* ACPI_NO_ERROR_MESSAGES */ - -/* - * Debug macros that are conditionally compiled - */ -#ifdef ACPI_DEBUG_OUTPUT - -/* - * If ACPI_GET_FUNCTION_NAME was not defined in the compiler-dependent header, - * define it now. This is the case where there the compiler does not support - * a __func__ macro or equivalent. - */ -#ifndef ACPI_GET_FUNCTION_NAME -#define ACPI_GET_FUNCTION_NAME _acpi_function_name - -/* - * The Name parameter should be the procedure name as a non-quoted string. - * The function name is also used by the function exit macros below. - * Note: (const char) is used to be compatible with the debug interfaces - * and macros such as __func__. - */ -#define ACPI_FUNCTION_NAME(name) static const char _acpi_function_name[] = #name; - -#else -/* Compiler supports __func__ (or equivalent) -- Ignore this macro */ - -#define ACPI_FUNCTION_NAME(name) -#endif /* ACPI_GET_FUNCTION_NAME */ - -/* - * Common parameters used for debug output functions: - * line number, function name, module(file) name, component ID - */ -#define ACPI_DEBUG_PARAMETERS \ - __LINE__, ACPI_GET_FUNCTION_NAME, _acpi_module_name, _COMPONENT - -/* Check if debug output is currently dynamically enabled */ - -#define ACPI_IS_DEBUG_ENABLED(level, component) \ - ((level & acpi_dbg_level) && (component & acpi_dbg_layer)) - -/* - * Master debug print macros - * Print message if and only if: - * 1) Debug print for the current component is enabled - * 2) Debug error level or trace level for the print statement is enabled - * - * November 2012: Moved the runtime check for whether to actually emit the - * debug message outside of the print function itself. This improves overall - * performance at a relatively small code cost. Implementation involves the - * use of variadic macros supported by C99. - * - * Note: the ACPI_DO_WHILE0 macro is used to prevent some compilers from - * complaining about these constructs. On other compilers the do...while - * adds some extra code, so this feature is optional. - */ -#ifdef ACPI_USE_DO_WHILE_0 -#define ACPI_DO_WHILE0(a) do a while(0) -#else -#define ACPI_DO_WHILE0(a) a -#endif - -/* DEBUG_PRINT functions */ - -#ifndef COMPILER_VA_MACRO - -#define ACPI_DEBUG_PRINT(plist) acpi_debug_print plist -#define ACPI_DEBUG_PRINT_RAW(plist) acpi_debug_print_raw plist - -#else - -/* Helper macros for DEBUG_PRINT */ - -#define ACPI_DO_DEBUG_PRINT(function, level, line, filename, modulename, component, ...) \ - ACPI_DO_WHILE0 ({ \ - if (ACPI_IS_DEBUG_ENABLED (level, component)) \ - { \ - function (level, line, filename, modulename, component, __VA_ARGS__); \ - } \ - }) - -#define ACPI_ACTUAL_DEBUG(level, line, filename, modulename, component, ...) \ - ACPI_DO_DEBUG_PRINT (acpi_debug_print, level, line, \ - filename, modulename, component, __VA_ARGS__) - -#define ACPI_ACTUAL_DEBUG_RAW(level, line, filename, modulename, component, ...) \ - ACPI_DO_DEBUG_PRINT (acpi_debug_print_raw, level, line, \ - filename, modulename, component, __VA_ARGS__) - -#define ACPI_DEBUG_PRINT(plist) ACPI_ACTUAL_DEBUG plist -#define ACPI_DEBUG_PRINT_RAW(plist) ACPI_ACTUAL_DEBUG_RAW plist - -#endif - -/* - * Function entry tracing - * - * The name of the function is emitted as a local variable that is - * intended to be used by both the entry trace and the exit trace. - */ - -/* Helper macro */ - -#define ACPI_TRACE_ENTRY(name, function, type, param) \ - ACPI_FUNCTION_NAME (name) \ - function (ACPI_DEBUG_PARAMETERS, (type) (param)) - -/* The actual entry trace macros */ - -#define ACPI_FUNCTION_TRACE(name) \ - ACPI_FUNCTION_NAME(name) \ - acpi_ut_trace (ACPI_DEBUG_PARAMETERS) - -#define ACPI_FUNCTION_TRACE_PTR(name, pointer) \ - ACPI_TRACE_ENTRY (name, acpi_ut_trace_ptr, void *, pointer) - -#define ACPI_FUNCTION_TRACE_U32(name, value) \ - ACPI_TRACE_ENTRY (name, acpi_ut_trace_u32, u32, value) - -#define ACPI_FUNCTION_TRACE_STR(name, string) \ - ACPI_TRACE_ENTRY (name, acpi_ut_trace_str, char *, string) - -#define ACPI_FUNCTION_ENTRY() \ - acpi_ut_track_stack_ptr() - -/* - * Function exit tracing - * - * These macros include a return statement. This is usually considered - * bad form, but having a separate exit macro before the actual return - * is very ugly and difficult to maintain. - * - * One of the FUNCTION_TRACE macros above must be used in conjunction - * with these macros so that "_AcpiFunctionName" is defined. - * - * There are two versions of most of the return macros. The default version is - * safer, since it avoids side-effects by guaranteeing that the argument will - * not be evaluated twice. - * - * A less-safe version of the macros is provided for optional use if the - * compiler uses excessive CPU stack (for example, this may happen in the - * debug case if code optimzation is disabled.) - */ - -/* Exit trace helper macro */ - -#ifndef ACPI_SIMPLE_RETURN_MACROS - -#define ACPI_TRACE_EXIT(function, type, param) \ - ACPI_DO_WHILE0 ({ \ - register type _param = (type) (param); \ - function (ACPI_DEBUG_PARAMETERS, _param); \ - return (_param); \ - }) - -#else /* Use original less-safe macros */ - -#define ACPI_TRACE_EXIT(function, type, param) \ - ACPI_DO_WHILE0 ({ \ - function (ACPI_DEBUG_PARAMETERS, (type) (param)); \ - return (param); \ - }) - -#endif /* ACPI_SIMPLE_RETURN_MACROS */ - -/* The actual exit macros */ - -#define return_VOID \ - ACPI_DO_WHILE0 ({ \ - acpi_ut_exit (ACPI_DEBUG_PARAMETERS); \ - return; \ - }) - -#define return_ACPI_STATUS(status) \ - ACPI_TRACE_EXIT (acpi_ut_status_exit, acpi_status, status) - -#define return_PTR(pointer) \ - ACPI_TRACE_EXIT (acpi_ut_ptr_exit, void *, pointer) - -#define return_VALUE(value) \ - ACPI_TRACE_EXIT (acpi_ut_value_exit, u64, value) - -#define return_UINT32(value) \ - ACPI_TRACE_EXIT (acpi_ut_value_exit, u32, value) - -#define return_UINT8(value) \ - ACPI_TRACE_EXIT (acpi_ut_value_exit, u8, value) - -/* Conditional execution */ - -#define ACPI_DEBUG_EXEC(a) a -#define ACPI_DEBUG_ONLY_MEMBERS(a) a; -#define _VERBOSE_STRUCTURES - -/* Various object display routines for debug */ - -#define ACPI_DUMP_STACK_ENTRY(a) acpi_ex_dump_operand((a), 0) -#define ACPI_DUMP_OPERANDS(a, b ,c) acpi_ex_dump_operands(a, b, c) -#define ACPI_DUMP_ENTRY(a, b) acpi_ns_dump_entry (a, b) -#define ACPI_DUMP_PATHNAME(a, b, c, d) acpi_ns_dump_pathname(a, b, c, d) -#define ACPI_DUMP_BUFFER(a, b) acpi_ut_debug_dump_buffer((u8 *) a, b, DB_BYTE_DISPLAY, _COMPONENT) - -#define ACPI_TRACE_POINT(a, b, c, d) acpi_trace_point (a, b, c, d) - -#else /* ACPI_DEBUG_OUTPUT */ -/* - * This is the non-debug case -- make everything go away, - * leaving no executable debug code! - */ -#define ACPI_DEBUG_PRINT(pl) -#define ACPI_DEBUG_PRINT_RAW(pl) -#define ACPI_DEBUG_EXEC(a) -#define ACPI_DEBUG_ONLY_MEMBERS(a) -#define ACPI_FUNCTION_NAME(a) -#define ACPI_FUNCTION_TRACE(a) -#define ACPI_FUNCTION_TRACE_PTR(a, b) -#define ACPI_FUNCTION_TRACE_U32(a, b) -#define ACPI_FUNCTION_TRACE_STR(a, b) -#define ACPI_FUNCTION_ENTRY() -#define ACPI_DUMP_STACK_ENTRY(a) -#define ACPI_DUMP_OPERANDS(a, b, c) -#define ACPI_DUMP_ENTRY(a, b) -#define ACPI_DUMP_PATHNAME(a, b, c, d) -#define ACPI_DUMP_BUFFER(a, b) -#define ACPI_IS_DEBUG_ENABLED(level, component) 0 -#define ACPI_TRACE_POINT(a, b, c, d) - -/* Return macros must have a return statement at the minimum */ - -#define return_VOID return -#define return_ACPI_STATUS(s) return(s) -#define return_PTR(s) return(s) -#define return_VALUE(s) return(s) -#define return_UINT8(s) return(s) -#define return_UINT32(s) return(s) - -#endif /* ACPI_DEBUG_OUTPUT */ - -#endif /* __ACOUTPUT_H__ */ diff --git a/drivers/include/acpi/acpi.h b/drivers/include/acpi/acpi.h deleted file mode 100644 index 82803ae971..0000000000 --- a/drivers/include/acpi/acpi.h +++ /dev/null @@ -1,67 +0,0 @@ -/****************************************************************************** - * - * Name: acpi.h - Master public include file used to interface to ACPICA - * - *****************************************************************************/ - -/* - * Copyright (C) 2000 - 2016, 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 __ACPI_H__ -#define __ACPI_H__ - -/* - * Public include files for use by code that will interface to ACPICA. - * - * Information includes the ACPICA data types, names, exceptions, and - * external interface prototypes. Also included are the definitions for - * all ACPI tables (FADT, MADT, etc.) - * - * Note: The order of these include files is important. - */ -#include /* Environment-specific items */ -#include /* Common ACPI names and strings */ -#include /* ACPICA data types and structures */ -#include /* ACPICA exceptions */ -#include /* ACPI table definitions */ -#include /* Error output and Debug macros */ -#include /* Resource Descriptor structs */ -#include /* OSL interfaces (ACPICA-to-OS) */ -#include /* ACPI core subsystem external interfaces */ -#include /* Extra environment-specific items */ - -#endif /* __ACPI_H__ */ diff --git a/drivers/include/acpi/acpi_bus.h b/drivers/include/acpi/acpi_bus.h deleted file mode 100644 index 795581304e..0000000000 --- a/drivers/include/acpi/acpi_bus.h +++ /dev/null @@ -1,643 +0,0 @@ -/* - * acpi_bus.h - ACPI Bus Driver ($Revision: 22 $) - * - * Copyright (C) 2001, 2002 Andy Grover - * Copyright (C) 2001, 2002 Paul Diefenbaugh - * - * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or (at - * your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - */ - -#ifndef __ACPI_BUS_H__ -#define __ACPI_BUS_H__ - -#include -#include - -/* TBD: Make dynamic */ -#define ACPI_MAX_HANDLES 10 -struct acpi_handle_list { - u32 count; - acpi_handle handles[ACPI_MAX_HANDLES]; -}; - -/* acpi_utils.h */ -acpi_status -acpi_extract_package(union acpi_object *package, - struct acpi_buffer *format, struct acpi_buffer *buffer); -acpi_status -acpi_evaluate_integer(acpi_handle handle, - acpi_string pathname, - struct acpi_object_list *arguments, unsigned long long *data); -acpi_status -acpi_evaluate_reference(acpi_handle handle, - acpi_string pathname, - struct acpi_object_list *arguments, - struct acpi_handle_list *list); -acpi_status -acpi_evaluate_ost(acpi_handle handle, u32 source_event, u32 status_code, - struct acpi_buffer *status_buf); - -acpi_status -acpi_get_physical_device_location(acpi_handle handle, struct acpi_pld_info **pld); - -bool acpi_has_method(acpi_handle handle, char *name); -acpi_status acpi_execute_simple_method(acpi_handle handle, char *method, - u64 arg); -acpi_status acpi_evaluate_ej0(acpi_handle handle); -acpi_status acpi_evaluate_lck(acpi_handle handle, int lock); -bool acpi_ata_match(acpi_handle handle); -bool acpi_bay_match(acpi_handle handle); -bool acpi_dock_match(acpi_handle handle); - -bool acpi_check_dsm(acpi_handle handle, const u8 *uuid, int rev, u64 funcs); -union acpi_object *acpi_evaluate_dsm(acpi_handle handle, const u8 *uuid, - int rev, int func, union acpi_object *argv4); - -static inline union acpi_object * -acpi_evaluate_dsm_typed(acpi_handle handle, const u8 *uuid, int rev, int func, - union acpi_object *argv4, acpi_object_type type) -{ - union acpi_object *obj; - - obj = acpi_evaluate_dsm(handle, uuid, rev, func, argv4); - if (obj && obj->type != type) { - ACPI_FREE(obj); - obj = NULL; - } - - return obj; -} - -#define ACPI_INIT_DSM_ARGV4(cnt, eles) \ - { \ - .package.type = ACPI_TYPE_PACKAGE, \ - .package.count = (cnt), \ - .package.elements = (eles) \ - } - -bool acpi_dev_present(const char *hid); - -#ifdef CONFIG_ACPI - -#define ACPI_BUS_FILE_ROOT "acpi" - -enum acpi_bus_device_type { - ACPI_BUS_TYPE_DEVICE = 0, - ACPI_BUS_TYPE_POWER, - ACPI_BUS_TYPE_PROCESSOR, - ACPI_BUS_TYPE_THERMAL, - ACPI_BUS_TYPE_POWER_BUTTON, - ACPI_BUS_TYPE_SLEEP_BUTTON, - ACPI_BUS_DEVICE_TYPE_COUNT -}; - -struct acpi_driver; -struct acpi_device; - -/* - * ACPI Scan Handler - * ----------------- - */ - -struct acpi_hotplug_profile { - struct kobject kobj; - int (*scan_dependent)(struct acpi_device *adev); - void (*notify_online)(struct acpi_device *adev); - bool enabled:1; - bool demand_offline:1; -}; - -static inline struct acpi_hotplug_profile *to_acpi_hotplug_profile( - struct kobject *kobj) -{ - return container_of(kobj, struct acpi_hotplug_profile, kobj); -} - -struct acpi_scan_handler { - const struct acpi_device_id *ids; - struct list_head list_node; - bool (*match)(const char *idstr, const struct acpi_device_id **matchid); - int (*attach)(struct acpi_device *dev, const struct acpi_device_id *id); - void (*detach)(struct acpi_device *dev); - void (*bind)(struct device *phys_dev); - void (*unbind)(struct device *phys_dev); - struct acpi_hotplug_profile hotplug; -}; - -/* - * ACPI Hotplug Context - * -------------------- - */ - -struct acpi_hotplug_context { - struct acpi_device *self; - int (*notify)(struct acpi_device *, u32); - void (*uevent)(struct acpi_device *, u32); - void (*fixup)(struct acpi_device *); -}; - -/* - * ACPI Driver - * ----------- - */ - -typedef int (*acpi_op_add) (struct acpi_device * device); -typedef int (*acpi_op_remove) (struct acpi_device * device); -typedef void (*acpi_op_notify) (struct acpi_device * device, u32 event); - -struct acpi_device_ops { - acpi_op_add add; - acpi_op_remove remove; - acpi_op_notify notify; -}; - -#define ACPI_DRIVER_ALL_NOTIFY_EVENTS 0x1 /* system AND device events */ - -struct acpi_driver { - char name[80]; - char class[80]; - const struct acpi_device_id *ids; /* Supported Hardware IDs */ - unsigned int flags; - struct acpi_device_ops ops; - struct device_driver drv; - struct module *owner; -}; - -/* - * ACPI Device - * ----------- - */ - -/* Status (_STA) */ - -struct acpi_device_status { - u32 present:1; - u32 enabled:1; - u32 show_in_ui:1; - u32 functional:1; - u32 battery_present:1; - u32 reserved:27; -}; - -/* Flags */ - -struct acpi_device_flags { - u32 dynamic_status:1; - u32 removable:1; - u32 ejectable:1; - u32 power_manageable:1; - u32 match_driver:1; - u32 initialized:1; - u32 visited:1; - u32 hotplug_notify:1; - u32 is_dock_station:1; - u32 of_compatible_ok:1; - u32 coherent_dma:1; - u32 cca_seen:1; - u32 reserved:20; -}; - -/* File System */ - -struct acpi_device_dir { - struct proc_dir_entry *entry; -}; - -#define acpi_device_dir(d) ((d)->dir.entry) - -/* Plug and Play */ - -typedef char acpi_bus_id[8]; -typedef unsigned long acpi_bus_address; -typedef char acpi_device_name[40]; -typedef char acpi_device_class[20]; - -struct acpi_hardware_id { - struct list_head list; - const char *id; -}; - -struct acpi_pnp_type { - u32 hardware_id:1; - u32 bus_address:1; - u32 platform_id:1; - u32 reserved:29; -}; - -struct acpi_device_pnp { - acpi_bus_id bus_id; /* Object name */ - struct acpi_pnp_type type; /* ID type */ - acpi_bus_address bus_address; /* _ADR */ - char *unique_id; /* _UID */ - struct list_head ids; /* _HID and _CIDs */ - acpi_device_name device_name; /* Driver-determined */ - acpi_device_class device_class; /* " */ - union acpi_object *str_obj; /* unicode string for _STR method */ -}; - -#define acpi_device_bid(d) ((d)->pnp.bus_id) -#define acpi_device_adr(d) ((d)->pnp.bus_address) -const char *acpi_device_hid(struct acpi_device *device); -#define acpi_device_uid(d) ((d)->pnp.unique_id) -#define acpi_device_name(d) ((d)->pnp.device_name) -#define acpi_device_class(d) ((d)->pnp.device_class) - -/* Power Management */ - -struct acpi_device_power_flags { - u32 explicit_get:1; /* _PSC present? */ - u32 power_resources:1; /* Power resources */ - u32 inrush_current:1; /* Serialize Dx->D0 */ - u32 power_removed:1; /* Optimize Dx->D0 */ - u32 ignore_parent:1; /* Power is independent of parent power state */ - u32 dsw_present:1; /* _DSW present? */ - u32 reserved:26; -}; - -struct acpi_device_power_state { - struct { - u8 valid:1; - u8 explicit_set:1; /* _PSx present? */ - u8 reserved:6; - } flags; - int power; /* % Power (compared to D0) */ - int latency; /* Dx->D0 time (microseconds) */ - struct list_head resources; /* Power resources referenced */ -}; - -struct acpi_device_power { - int state; /* Current state */ - struct acpi_device_power_flags flags; - struct acpi_device_power_state states[ACPI_D_STATE_COUNT]; /* Power states (D0-D3Cold) */ -}; - -/* Performance Management */ - -struct acpi_device_perf_flags { - u8 reserved:8; -}; - -struct acpi_device_perf_state { - struct { - u8 valid:1; - u8 reserved:7; - } flags; - u8 power; /* % Power (compared to P0) */ - u8 performance; /* % Performance ( " ) */ - int latency; /* Px->P0 time (microseconds) */ -}; - -struct acpi_device_perf { - int state; - struct acpi_device_perf_flags flags; - int state_count; - struct acpi_device_perf_state *states; -}; - -/* Wakeup Management */ -struct acpi_device_wakeup_flags { - u8 valid:1; /* Can successfully enable wakeup? */ - u8 run_wake:1; /* Run-Wake GPE devices */ - u8 notifier_present:1; /* Wake-up notify handler has been installed */ - u8 enabled:1; /* Enabled for wakeup */ -}; - -struct acpi_device_wakeup_context { - struct work_struct work; - struct device *dev; -}; - -struct acpi_device_wakeup { - acpi_handle gpe_device; - u64 gpe_number; - u64 sleep_state; - struct list_head resources; - struct acpi_device_wakeup_flags flags; - struct acpi_device_wakeup_context context; - struct wakeup_source *ws; - int prepare_count; -}; - -struct acpi_device_physical_node { - unsigned int node_id; - struct list_head node; - struct device *dev; - bool put_online:1; -}; - -/* ACPI Device Specific Data (_DSD) */ -struct acpi_device_data { - const union acpi_object *pointer; - const union acpi_object *properties; - const union acpi_object *of_compatible; - struct list_head subnodes; -}; - -struct acpi_gpio_mapping; - -/* Device */ -struct acpi_device { - int device_type; - acpi_handle handle; /* no handle for fixed hardware */ - struct fwnode_handle fwnode; - struct acpi_device *parent; - struct list_head children; - struct list_head node; - struct list_head wakeup_list; - struct list_head del_list; - struct acpi_device_status status; - struct acpi_device_flags flags; - struct acpi_device_pnp pnp; - struct acpi_device_power power; - struct acpi_device_wakeup wakeup; - struct acpi_device_perf performance; - struct acpi_device_dir dir; - struct acpi_device_data data; - struct acpi_scan_handler *handler; - struct acpi_hotplug_context *hp; - struct acpi_driver *driver; - const struct acpi_gpio_mapping *driver_gpios; - void *driver_data; - struct device dev; - unsigned int physical_node_count; - unsigned int dep_unmet; - struct list_head physical_node_list; - struct mutex physical_node_lock; - void (*remove)(struct acpi_device *); -}; - -/* Non-device subnode */ -struct acpi_data_node { - const char *name; - acpi_handle handle; - struct fwnode_handle fwnode; - struct acpi_device_data data; - struct list_head sibling; - struct kobject kobj; - struct completion kobj_done; -}; - -static inline bool is_acpi_node(struct fwnode_handle *fwnode) -{ - return !IS_ERR_OR_NULL(fwnode) && (fwnode->type == FWNODE_ACPI - || fwnode->type == FWNODE_ACPI_DATA); -} - -static inline bool is_acpi_device_node(struct fwnode_handle *fwnode) -{ - return !IS_ERR_OR_NULL(fwnode) && fwnode->type == FWNODE_ACPI; -} - -static inline struct acpi_device *to_acpi_device_node(struct fwnode_handle *fwnode) -{ - return is_acpi_device_node(fwnode) ? - container_of(fwnode, struct acpi_device, fwnode) : NULL; -} - -static inline bool is_acpi_data_node(struct fwnode_handle *fwnode) -{ - return fwnode && fwnode->type == FWNODE_ACPI_DATA; -} - -static inline struct acpi_data_node *to_acpi_data_node(struct fwnode_handle *fwnode) -{ - return is_acpi_data_node(fwnode) ? - container_of(fwnode, struct acpi_data_node, fwnode) : NULL; -} - -static inline struct fwnode_handle *acpi_fwnode_handle(struct acpi_device *adev) -{ - return &adev->fwnode; -} - -static inline void *acpi_driver_data(struct acpi_device *d) -{ - return d->driver_data; -} - -#define to_acpi_device(d) container_of(d, struct acpi_device, dev) -#define to_acpi_driver(d) container_of(d, struct acpi_driver, drv) - -static inline void acpi_set_device_status(struct acpi_device *adev, u32 sta) -{ - *((u32 *)&adev->status) = sta; -} - -static inline void acpi_set_hp_context(struct acpi_device *adev, - struct acpi_hotplug_context *hp) -{ - hp->self = adev; - adev->hp = hp; -} - -void acpi_initialize_hp_context(struct acpi_device *adev, - struct acpi_hotplug_context *hp, - int (*notify)(struct acpi_device *, u32), - void (*uevent)(struct acpi_device *, u32)); - -/* acpi_device.dev.bus == &acpi_bus_type */ -extern struct bus_type acpi_bus_type; - -/* - * Events - * ------ - */ - -struct acpi_bus_event { - struct list_head node; - acpi_device_class device_class; - acpi_bus_id bus_id; - u32 type; - u32 data; -}; - -extern struct kobject *acpi_kobj; -extern int acpi_bus_generate_netlink_event(const char*, const char*, u8, int); -void acpi_bus_private_data_handler(acpi_handle, void *); -int acpi_bus_get_private_data(acpi_handle, void **); -int acpi_bus_attach_private_data(acpi_handle, void *); -void acpi_bus_detach_private_data(acpi_handle); -extern int acpi_notifier_call_chain(struct acpi_device *, u32, u32); - -/* - * External Functions - */ - -int acpi_bus_get_device(acpi_handle handle, struct acpi_device **device); -struct acpi_device *acpi_bus_get_acpi_device(acpi_handle handle); -void acpi_bus_put_acpi_device(struct acpi_device *adev); -acpi_status acpi_bus_get_status_handle(acpi_handle handle, - unsigned long long *sta); -int acpi_bus_get_status(struct acpi_device *device); - -int acpi_bus_set_power(acpi_handle handle, int state); -const char *acpi_power_state_string(int state); -int acpi_device_get_power(struct acpi_device *device, int *state); -int acpi_device_set_power(struct acpi_device *device, int state); -int acpi_bus_init_power(struct acpi_device *device); -int acpi_device_fix_up_power(struct acpi_device *device); -int acpi_bus_update_power(acpi_handle handle, int *state_p); -int acpi_device_update_power(struct acpi_device *device, int *state_p); -bool acpi_bus_power_manageable(acpi_handle handle); - -#ifdef CONFIG_PM -bool acpi_bus_can_wakeup(acpi_handle handle); -#else -static inline bool acpi_bus_can_wakeup(acpi_handle handle) { return false; } -#endif - -void acpi_scan_lock_acquire(void); -void acpi_scan_lock_release(void); -void acpi_lock_hp_context(void); -void acpi_unlock_hp_context(void); -int acpi_scan_add_handler(struct acpi_scan_handler *handler); -int acpi_bus_register_driver(struct acpi_driver *driver); -void acpi_bus_unregister_driver(struct acpi_driver *driver); -int acpi_bus_scan(acpi_handle handle); -void acpi_bus_trim(struct acpi_device *start); -acpi_status acpi_bus_get_ejd(acpi_handle handle, acpi_handle * ejd); -int acpi_match_device_ids(struct acpi_device *device, - const struct acpi_device_id *ids); -int acpi_create_dir(struct acpi_device *); -void acpi_remove_dir(struct acpi_device *); - -static inline bool acpi_device_enumerated(struct acpi_device *adev) -{ - return adev && adev->flags.initialized && adev->flags.visited; -} - -/** - * module_acpi_driver(acpi_driver) - Helper macro for registering an ACPI driver - * @__acpi_driver: acpi_driver struct - * - * Helper macro for ACPI drivers which do not do anything special in module - * init/exit. This eliminates a lot of boilerplate. Each module may only - * use this macro once, and calling it replaces module_init() and module_exit() - */ -#define module_acpi_driver(__acpi_driver) \ - module_driver(__acpi_driver, acpi_bus_register_driver, \ - acpi_bus_unregister_driver) - -/* - * Bind physical devices with ACPI devices - */ -struct acpi_bus_type { - struct list_head list; - const char *name; - bool (*match)(struct device *dev); - struct acpi_device * (*find_companion)(struct device *); - void (*setup)(struct device *); - void (*cleanup)(struct device *); -}; -int register_acpi_bus_type(struct acpi_bus_type *); -int unregister_acpi_bus_type(struct acpi_bus_type *); -int acpi_bind_one(struct device *dev, struct acpi_device *adev); -int acpi_unbind_one(struct device *dev); - -struct acpi_pci_root { - struct acpi_device * device; - struct pci_bus *bus; - u16 segment; - struct resource secondary; /* downstream bus range */ - - u32 osc_support_set; /* _OSC state of support bits */ - u32 osc_control_set; /* _OSC state of control bits */ - phys_addr_t mcfg_addr; -}; - -/* helper */ - -bool acpi_dma_supported(struct acpi_device *adev); -enum dev_dma_attr acpi_get_dma_attr(struct acpi_device *adev); - -struct acpi_device *acpi_find_child_device(struct acpi_device *parent, - u64 address, bool check_children); -int acpi_is_root_bridge(acpi_handle); -struct acpi_pci_root *acpi_pci_find_root(acpi_handle handle); - -int acpi_enable_wakeup_device_power(struct acpi_device *dev, int state); -int acpi_disable_wakeup_device_power(struct acpi_device *dev); - -#ifdef CONFIG_PM -acpi_status acpi_add_pm_notifier(struct acpi_device *adev, struct device *dev, - void (*work_func)(struct work_struct *work)); -acpi_status acpi_remove_pm_notifier(struct acpi_device *adev); -int acpi_pm_device_sleep_state(struct device *, int *, int); -int acpi_pm_device_run_wake(struct device *, bool); -#else -static inline acpi_status acpi_add_pm_notifier(struct acpi_device *adev, - struct device *dev, - void (*work_func)(struct work_struct *work)) -{ - return AE_SUPPORT; -} -static inline acpi_status acpi_remove_pm_notifier(struct acpi_device *adev) -{ - return AE_SUPPORT; -} -static inline int acpi_pm_device_sleep_state(struct device *d, int *p, int m) -{ - if (p) - *p = ACPI_STATE_D0; - - return (m >= ACPI_STATE_D0 && m <= ACPI_STATE_D3_COLD) ? - m : ACPI_STATE_D0; -} -static inline int acpi_pm_device_run_wake(struct device *dev, bool enable) -{ - return -ENODEV; -} -#endif - -#ifdef CONFIG_PM_SLEEP -int acpi_pm_device_sleep_wake(struct device *, bool); -#else -static inline int acpi_pm_device_sleep_wake(struct device *dev, bool enable) -{ - return -ENODEV; -} -#endif - -#ifdef CONFIG_ACPI_SLEEP -u32 acpi_target_system_state(void); -#else -static inline u32 acpi_target_system_state(void) { return ACPI_STATE_S0; } -#endif - -static inline bool acpi_device_power_manageable(struct acpi_device *adev) -{ - return adev->flags.power_manageable; -} - -static inline bool acpi_device_can_wakeup(struct acpi_device *adev) -{ - return adev->wakeup.flags.valid; -} - -static inline bool acpi_device_can_poweroff(struct acpi_device *adev) -{ - return adev->power.states[ACPI_STATE_D3_COLD].flags.valid || - ((acpi_gbl_FADT.header.revision < 6) && - adev->power.states[ACPI_STATE_D3_HOT].flags.explicit_set); -} - -#else /* CONFIG_ACPI */ - -static inline int register_acpi_bus_type(void *bus) { return 0; } -static inline int unregister_acpi_bus_type(void *bus) { return 0; } - -#endif /* CONFIG_ACPI */ - -#endif /*__ACPI_BUS_H__*/ diff --git a/drivers/include/acpi/acpi_drivers.h b/drivers/include/acpi/acpi_drivers.h deleted file mode 100644 index 29c691265b..0000000000 --- a/drivers/include/acpi/acpi_drivers.h +++ /dev/null @@ -1,123 +0,0 @@ -/* - * acpi_drivers.h ($Revision: 31 $) - * - * Copyright (C) 2001, 2002 Andy Grover - * Copyright (C) 2001, 2002 Paul Diefenbaugh - * - * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or (at - * your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - */ - -#ifndef __ACPI_DRIVERS_H__ -#define __ACPI_DRIVERS_H__ - -#define ACPI_MAX_STRING 80 - -/* - * Please update drivers/acpi/debug.c and Documentation/acpi/debug.txt - * if you add to this list. - */ -#define ACPI_BUS_COMPONENT 0x00010000 -#define ACPI_AC_COMPONENT 0x00020000 -#define ACPI_BATTERY_COMPONENT 0x00040000 -#define ACPI_BUTTON_COMPONENT 0x00080000 -#define ACPI_SBS_COMPONENT 0x00100000 -#define ACPI_FAN_COMPONENT 0x00200000 -#define ACPI_PCI_COMPONENT 0x00400000 -#define ACPI_POWER_COMPONENT 0x00800000 -#define ACPI_CONTAINER_COMPONENT 0x01000000 -#define ACPI_SYSTEM_COMPONENT 0x02000000 -#define ACPI_THERMAL_COMPONENT 0x04000000 -#define ACPI_MEMORY_DEVICE_COMPONENT 0x08000000 -#define ACPI_VIDEO_COMPONENT 0x10000000 -#define ACPI_PROCESSOR_COMPONENT 0x20000000 - -/* - * _HID definitions - * HIDs must conform to ACPI spec(6.1.4) - * Linux specific HIDs do not apply to this and begin with LNX: - */ - -#define ACPI_POWER_HID "LNXPOWER" -#define ACPI_PROCESSOR_OBJECT_HID "LNXCPU" -#define ACPI_SYSTEM_HID "LNXSYSTM" -#define ACPI_THERMAL_HID "LNXTHERM" -#define ACPI_BUTTON_HID_POWERF "LNXPWRBN" -#define ACPI_BUTTON_HID_SLEEPF "LNXSLPBN" -#define ACPI_VIDEO_HID "LNXVIDEO" -#define ACPI_BAY_HID "LNXIOBAY" -#define ACPI_DOCK_HID "LNXDOCK" -/* Quirk for broken IBM BIOSes */ -#define ACPI_SMBUS_IBM_HID "SMBUSIBM" - -/* - * For fixed hardware buttons, we fabricate acpi_devices with HID - * ACPI_BUTTON_HID_POWERF or ACPI_BUTTON_HID_SLEEPF. Fixed hardware - * signals only an event; it doesn't supply a notification value. - * To allow drivers to treat notifications from fixed hardware the - * same as those from real devices, we turn the events into this - * notification value. - */ -#define ACPI_FIXED_HARDWARE_EVENT 0x100 - -/* -------------------------------------------------------------------------- - PCI - -------------------------------------------------------------------------- */ - - -/* ACPI PCI Interrupt Link (pci_link.c) */ - -int acpi_irq_penalty_init(void); -int acpi_pci_link_allocate_irq(acpi_handle handle, int index, int *triggering, - int *polarity, char **name); -int acpi_pci_link_free_irq(acpi_handle handle); - -/* ACPI PCI Device Binding (pci_bind.c) */ - -struct pci_bus; - -struct pci_dev *acpi_get_pci_dev(acpi_handle); - -/* Arch-defined function to add a bus to the system */ - -struct pci_bus *pci_acpi_scan_root(struct acpi_pci_root *root); - -#ifdef CONFIG_X86 -void pci_acpi_crs_quirks(void); -#else -static inline void pci_acpi_crs_quirks(void) { } -#endif - -/* -------------------------------------------------------------------------- - Processor - -------------------------------------------------------------------------- */ - -#define ACPI_PROCESSOR_LIMIT_NONE 0x00 -#define ACPI_PROCESSOR_LIMIT_INCREMENT 0x01 -#define ACPI_PROCESSOR_LIMIT_DECREMENT 0x02 - -/*-------------------------------------------------------------------------- - Dock Station - -------------------------------------------------------------------------- */ - -#ifdef CONFIG_ACPI_DOCK -extern int is_dock_device(struct acpi_device *adev); -#else -static inline int is_dock_device(struct acpi_device *adev) -{ - return 0; -} -#endif /* CONFIG_ACPI_DOCK */ - -#endif /*__ACPI_DRIVERS_H__*/ diff --git a/drivers/include/acpi/acpi_io.h b/drivers/include/acpi/acpi_io.h deleted file mode 100644 index 58175a0e9f..0000000000 --- a/drivers/include/acpi/acpi_io.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef _ACPI_IO_H_ -#define _ACPI_IO_H_ - -#include - -#include -#include - -acpi_os_map_iomem(acpi_physical_address phys, acpi_size size); -void acpi_os_unmap_iomem(void __iomem *virt, acpi_size size); -void __iomem *acpi_os_get_iomem(acpi_physical_address phys, unsigned int size); - -int acpi_os_map_generic_address(struct acpi_generic_address *addr); -void acpi_os_unmap_generic_address(struct acpi_generic_address *addr); - -#endif diff --git a/drivers/include/acpi/acpi_numa.h b/drivers/include/acpi/acpi_numa.h deleted file mode 100644 index 94a37cd7fb..0000000000 --- a/drivers/include/acpi/acpi_numa.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef __ACPI_NUMA_H -#define __ACPI_NUMA_H - -#ifdef CONFIG_ACPI_NUMA -#include - -/* Proximity bitmap length */ -#if MAX_NUMNODES > 256 -#define MAX_PXM_DOMAINS MAX_NUMNODES -#else -#define MAX_PXM_DOMAINS (256) /* Old pxm spec is defined 8 bit */ -#endif - -extern int pxm_to_node(int); -extern int node_to_pxm(int); -extern int acpi_map_pxm_to_node(int); -extern unsigned char acpi_srat_revision; - -#endif /* CONFIG_ACPI_NUMA */ -#endif /* __ACP_NUMA_H */ diff --git a/drivers/include/acpi/acpiosxf.h b/drivers/include/acpi/acpiosxf.h deleted file mode 100644 index d1e34d1eee..0000000000 --- a/drivers/include/acpi/acpiosxf.h +++ /dev/null @@ -1,456 +0,0 @@ -/****************************************************************************** - * - * Name: acpiosxf.h - All interfaces to the OS Services Layer (OSL). These - * interfaces must be implemented by OSL to interface the - * ACPI components to the host operating system. - * - *****************************************************************************/ - -/* - * Copyright (C) 2000 - 2016, 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 __ACPIOSXF_H__ -#define __ACPIOSXF_H__ - -#include -#include - -/* Types for acpi_os_execute */ - -typedef enum { - OSL_GLOBAL_LOCK_HANDLER, - OSL_NOTIFY_HANDLER, - OSL_GPE_HANDLER, - OSL_DEBUGGER_MAIN_THREAD, - OSL_DEBUGGER_EXEC_THREAD, - OSL_EC_POLL_HANDLER, - OSL_EC_BURST_HANDLER -} acpi_execute_type; - -#define ACPI_NO_UNIT_LIMIT ((u32) -1) -#define ACPI_MUTEX_SEM 1 - -/* Functions for acpi_os_signal */ - -#define ACPI_SIGNAL_FATAL 0 -#define ACPI_SIGNAL_BREAKPOINT 1 - -struct acpi_signal_fatal_info { - u32 type; - u32 code; - u32 argument; -}; - -/* - * OSL Initialization and shutdown primitives - */ -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_initialize -acpi_status acpi_os_initialize(void); -#endif - -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_terminate -acpi_status acpi_os_terminate(void); -#endif - -/* - * ACPI Table interfaces - */ -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_root_pointer -acpi_physical_address acpi_os_get_root_pointer(void); -#endif - -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_predefined_override -acpi_status -acpi_os_predefined_override(const struct acpi_predefined_names *init_val, - char **new_val); -#endif - -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_table_override -acpi_status -acpi_os_table_override(struct acpi_table_header *existing_table, - struct acpi_table_header **new_table); -#endif - -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_physical_table_override -acpi_status -acpi_os_physical_table_override(struct acpi_table_header *existing_table, - acpi_physical_address * new_address, - u32 *new_table_length); -#endif - -/* - * Spinlock primitives - */ -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_create_lock -acpi_status acpi_os_create_lock(acpi_spinlock * out_handle); -#endif - -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_delete_lock -void acpi_os_delete_lock(acpi_spinlock handle); -#endif - -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_acquire_lock -acpi_cpu_flags acpi_os_acquire_lock(acpi_spinlock handle); -#endif - -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_release_lock -void acpi_os_release_lock(acpi_spinlock handle, acpi_cpu_flags flags); -#endif - -/* - * Semaphore primitives - */ -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_create_semaphore -acpi_status -acpi_os_create_semaphore(u32 max_units, - u32 initial_units, acpi_semaphore * out_handle); -#endif - -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_delete_semaphore -acpi_status acpi_os_delete_semaphore(acpi_semaphore handle); -#endif - -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_wait_semaphore -acpi_status -acpi_os_wait_semaphore(acpi_semaphore handle, u32 units, u16 timeout); -#endif - -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_signal_semaphore -acpi_status acpi_os_signal_semaphore(acpi_semaphore handle, u32 units); -#endif - -/* - * Mutex primitives. May be configured to use semaphores instead via - * ACPI_MUTEX_TYPE (see platform/acenv.h) - */ -#if (ACPI_MUTEX_TYPE != ACPI_BINARY_SEMAPHORE) - -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_create_mutex -acpi_status acpi_os_create_mutex(acpi_mutex * out_handle); -#endif - -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_delete_mutex -void acpi_os_delete_mutex(acpi_mutex handle); -#endif - -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_acquire_mutex -acpi_status acpi_os_acquire_mutex(acpi_mutex handle, u16 timeout); -#endif - -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_release_mutex -void acpi_os_release_mutex(acpi_mutex handle); -#endif - -#endif - -/* - * Memory allocation and mapping - */ -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_allocate -void *acpi_os_allocate(acpi_size size); -#endif - -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_allocate_zeroed -void *acpi_os_allocate_zeroed(acpi_size size); -#endif - -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_free -void acpi_os_free(void *memory); -#endif - -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_map_memory -void *acpi_os_map_memory(acpi_physical_address where, acpi_size length); -#endif - -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_unmap_memory -void acpi_os_unmap_memory(void *logical_address, acpi_size size); -#endif - -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_physical_address -acpi_status -acpi_os_get_physical_address(void *logical_address, - acpi_physical_address * physical_address); -#endif - -/* - * Memory/Object Cache - */ -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_create_cache -acpi_status -acpi_os_create_cache(char *cache_name, - u16 object_size, - u16 max_depth, acpi_cache_t ** return_cache); -#endif - -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_delete_cache -acpi_status acpi_os_delete_cache(acpi_cache_t * cache); -#endif - -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_purge_cache -acpi_status acpi_os_purge_cache(acpi_cache_t * cache); -#endif - -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_acquire_object -void *acpi_os_acquire_object(acpi_cache_t * cache); -#endif - -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_release_object -acpi_status acpi_os_release_object(acpi_cache_t * cache, void *object); -#endif - -/* - * Interrupt handlers - */ -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_install_interrupt_handler -acpi_status -acpi_os_install_interrupt_handler(u32 interrupt_number, - acpi_osd_handler service_routine, - void *context); -#endif - -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_remove_interrupt_handler -acpi_status -acpi_os_remove_interrupt_handler(u32 interrupt_number, - acpi_osd_handler service_routine); -#endif - -/* - * Threads and Scheduling - */ -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_thread_id -acpi_thread_id acpi_os_get_thread_id(void); -#endif - -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_execute -acpi_status -acpi_os_execute(acpi_execute_type type, - acpi_osd_exec_callback function, void *context); -#endif - -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_wait_events_complete -void acpi_os_wait_events_complete(void); -#endif - -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_sleep -void acpi_os_sleep(u64 milliseconds); -#endif - -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_stall -void acpi_os_stall(u32 microseconds); -#endif - -/* - * Platform and hardware-independent I/O interfaces - */ -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_read_port -acpi_status acpi_os_read_port(acpi_io_address address, u32 *value, u32 width); -#endif - -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_write_port -acpi_status acpi_os_write_port(acpi_io_address address, u32 value, u32 width); -#endif - -/* - * Platform and hardware-independent physical memory interfaces - */ -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_read_memory -acpi_status -acpi_os_read_memory(acpi_physical_address address, u64 *value, u32 width); -#endif - -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_write_memory -acpi_status -acpi_os_write_memory(acpi_physical_address address, u64 value, u32 width); -#endif - -/* - * Platform and hardware-independent PCI configuration space access - * Note: Can't use "Register" as a parameter, changed to "Reg" -- - * certain compilers complain. - */ -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_read_pci_configuration -acpi_status -acpi_os_read_pci_configuration(struct acpi_pci_id *pci_id, - u32 reg, u64 *value, u32 width); -#endif - -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_write_pci_configuration -acpi_status -acpi_os_write_pci_configuration(struct acpi_pci_id *pci_id, - u32 reg, u64 value, u32 width); -#endif - -/* - * Miscellaneous - */ -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_readable -u8 acpi_os_readable(void *pointer, acpi_size length); -#endif - -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_writable -u8 acpi_os_writable(void *pointer, acpi_size length); -#endif - -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_timer -u64 acpi_os_get_timer(void); -#endif - -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_signal -acpi_status acpi_os_signal(u32 function, void *info); -#endif - -/* - * Debug print routines - */ -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_printf -void ACPI_INTERNAL_VAR_XFACE acpi_os_printf(const char *format, ...); -#endif - -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_vprintf -void acpi_os_vprintf(const char *format, va_list args); -#endif - -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_redirect_output -void acpi_os_redirect_output(void *destination); -#endif - -/* - * Debug IO - */ -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_line -acpi_status acpi_os_get_line(char *buffer, u32 buffer_length, u32 *bytes_read); -#endif - -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_initialize_command_signals -acpi_status acpi_os_initialize_command_signals(void); -#endif - -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_terminate_command_signals -void acpi_os_terminate_command_signals(void); -#endif - -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_wait_command_ready -acpi_status acpi_os_wait_command_ready(void); -#endif - -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_notify_command_complete -acpi_status acpi_os_notify_command_complete(void); -#endif - -/* - * Obtain ACPI table(s) - */ -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_table_by_name -acpi_status -acpi_os_get_table_by_name(char *signature, - u32 instance, - struct acpi_table_header **table, - acpi_physical_address * address); -#endif - -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_table_by_index -acpi_status -acpi_os_get_table_by_index(u32 index, - struct acpi_table_header **table, - u32 *instance, acpi_physical_address * address); -#endif - -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_table_by_address -acpi_status -acpi_os_get_table_by_address(acpi_physical_address address, - struct acpi_table_header **table); -#endif - -/* - * Directory manipulation - */ -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_open_directory -void *acpi_os_open_directory(char *pathname, - char *wildcard_spec, char requested_file_type); -#endif - -/* requeste_file_type values */ - -#define REQUEST_FILE_ONLY 0 -#define REQUEST_DIR_ONLY 1 - -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_next_filename -char *acpi_os_get_next_filename(void *dir_handle); -#endif - -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_close_directory -void acpi_os_close_directory(void *dir_handle); -#endif - -/* - * File I/O and related support - */ -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_open_file -ACPI_FILE acpi_os_open_file(const char *path, u8 modes); -#endif - -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_close_file -void acpi_os_close_file(ACPI_FILE file); -#endif - -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_read_file -int -acpi_os_read_file(ACPI_FILE file, - void *buffer, acpi_size size, acpi_size count); -#endif - -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_write_file -int -acpi_os_write_file(ACPI_FILE file, - void *buffer, acpi_size size, acpi_size count); -#endif - -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_file_offset -long acpi_os_get_file_offset(ACPI_FILE file); -#endif - -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_set_file_offset -acpi_status acpi_os_set_file_offset(ACPI_FILE file, long offset, u8 from); -#endif - -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_trace_point -void -acpi_os_trace_point(acpi_trace_event_type type, - u8 begin, u8 *aml, char *pathname); -#endif - -#endif /* __ACPIOSXF_H__ */ diff --git a/drivers/include/acpi/acpixf.h b/drivers/include/acpi/acpixf.h deleted file mode 100644 index 17556979dc..0000000000 --- a/drivers/include/acpi/acpixf.h +++ /dev/null @@ -1,967 +0,0 @@ -/****************************************************************************** - * - * Name: acpixf.h - External interfaces to the ACPI subsystem - * - *****************************************************************************/ - -/* - * Copyright (C) 2000 - 2016, 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 __ACXFACE_H__ -#define __ACXFACE_H__ - -/* Current ACPICA subsystem version in YYYYMMDD format */ - -#define ACPI_CA_VERSION 0x20160108 - -#include -#include -#include -#include - -/***************************************************************************** - * - * Macros used for ACPICA globals and configuration - * - ****************************************************************************/ - -/* - * Ensure that global variables are defined and initialized only once. - * - * The use of these macros allows for a single list of globals (here) - * in order to simplify maintenance of the code. - */ -#ifdef DEFINE_ACPI_GLOBALS -#define ACPI_GLOBAL(type,name) \ - extern type name; \ - type name - -#define ACPI_INIT_GLOBAL(type,name,value) \ - type name=value - -#else -#ifndef ACPI_GLOBAL -#define ACPI_GLOBAL(type,name) \ - extern type name -#endif - -#ifndef ACPI_INIT_GLOBAL -#define ACPI_INIT_GLOBAL(type,name,value) \ - extern type name -#endif -#endif - -/* - * These macros configure the various ACPICA interfaces. They are - * useful for generating stub inline functions for features that are - * configured out of the current kernel or ACPICA application. - */ -#ifndef ACPI_EXTERNAL_RETURN_STATUS -#define ACPI_EXTERNAL_RETURN_STATUS(prototype) \ - prototype; -#endif - -#ifndef ACPI_EXTERNAL_RETURN_OK -#define ACPI_EXTERNAL_RETURN_OK(prototype) \ - prototype; -#endif - -#ifndef ACPI_EXTERNAL_RETURN_VOID -#define ACPI_EXTERNAL_RETURN_VOID(prototype) \ - prototype; -#endif - -#ifndef ACPI_EXTERNAL_RETURN_UINT32 -#define ACPI_EXTERNAL_RETURN_UINT32(prototype) \ - prototype; -#endif - -#ifndef ACPI_EXTERNAL_RETURN_PTR -#define ACPI_EXTERNAL_RETURN_PTR(prototype) \ - prototype; -#endif - -/***************************************************************************** - * - * Public globals and runtime configuration options - * - ****************************************************************************/ - -/* - * Enable "slack mode" of the AML interpreter? Default is FALSE, and the - * interpreter strictly follows the ACPI specification. Setting to TRUE - * allows the interpreter to ignore certain errors and/or bad AML constructs. - * - * Currently, these features are enabled by this flag: - * - * 1) Allow "implicit return" of last value in a control method - * 2) Allow access beyond the end of an operation region - * 3) Allow access to uninitialized locals/args (auto-init to integer 0) - * 4) Allow ANY object type to be a source operand for the Store() operator - * 5) Allow unresolved references (invalid target name) in package objects - * 6) Enable warning messages for behavior that is not ACPI spec compliant - */ -ACPI_INIT_GLOBAL(u8, acpi_gbl_enable_interpreter_slack, FALSE); - -/* - * Automatically serialize all methods that create named objects? Default - * is TRUE, meaning that all non_serialized methods are scanned once at - * table load time to determine those that create named objects. Methods - * that create named objects are marked Serialized in order to prevent - * possible run-time problems if they are entered by more than one thread. - */ -ACPI_INIT_GLOBAL(u8, acpi_gbl_auto_serialize_methods, TRUE); - -/* - * Create the predefined _OSI method in the namespace? Default is TRUE - * because ACPICA is fully compatible with other ACPI implementations. - * Changing this will revert ACPICA (and machine ASL) to pre-OSI behavior. - */ -ACPI_INIT_GLOBAL(u8, acpi_gbl_create_osi_method, TRUE); - -/* - * Optionally use default values for the ACPI register widths. Set this to - * TRUE to use the defaults, if an FADT contains incorrect widths/lengths. - */ -ACPI_INIT_GLOBAL(u8, acpi_gbl_use_default_register_widths, TRUE); - -/* - * Whether or not to verify the table checksum before installation. Set - * this to TRUE to verify the table checksum before install it to the table - * manager. Note that enabling this option causes errors to happen in some - * OSPMs during early initialization stages. Default behavior is to do such - * verification. - */ -ACPI_INIT_GLOBAL(u8, acpi_gbl_verify_table_checksum, TRUE); - -/* - * Optionally enable output from the AML Debug Object. - */ -ACPI_INIT_GLOBAL(u8, acpi_gbl_enable_aml_debug_object, FALSE); - -/* - * Optionally copy the entire DSDT to local memory (instead of simply - * mapping it.) There are some BIOSs that corrupt or replace the original - * DSDT, creating the need for this option. Default is FALSE, do not copy - * the DSDT. - */ -ACPI_INIT_GLOBAL(u8, acpi_gbl_copy_dsdt_locally, FALSE); - -/* - * Optionally ignore an XSDT if present and use the RSDT instead. - * Although the ACPI specification requires that an XSDT be used instead - * of the RSDT, the XSDT has been found to be corrupt or ill-formed on - * some machines. Default behavior is to use the XSDT if present. - */ -ACPI_INIT_GLOBAL(u8, acpi_gbl_do_not_use_xsdt, FALSE); - -/* - * Optionally support group module level code. - */ -ACPI_INIT_GLOBAL(u8, acpi_gbl_group_module_level_code, TRUE); - -/* - * Optionally use 32-bit FADT addresses if and when there is a conflict - * (address mismatch) between the 32-bit and 64-bit versions of the - * address. Although ACPICA adheres to the ACPI specification which - * requires the use of the corresponding 64-bit address if it is non-zero, - * some machines have been found to have a corrupted non-zero 64-bit - * address. Default is FALSE, do not favor the 32-bit addresses. - */ -ACPI_INIT_GLOBAL(u8, acpi_gbl_use32_bit_fadt_addresses, FALSE); - -/* - * Optionally use 32-bit FACS table addresses. - * It is reported that some platforms fail to resume from system suspending - * if 64-bit FACS table address is selected: - * https://bugzilla.kernel.org/show_bug.cgi?id=74021 - * Default is TRUE, favor the 32-bit addresses. - */ -ACPI_INIT_GLOBAL(u8, acpi_gbl_use32_bit_facs_addresses, TRUE); - -/* - * Optionally truncate I/O addresses to 16 bits. Provides compatibility - * with other ACPI implementations. NOTE: During ACPICA initialization, - * this value is set to TRUE if any Windows OSI strings have been - * requested by the BIOS. - */ -ACPI_INIT_GLOBAL(u8, acpi_gbl_truncate_io_addresses, FALSE); - -/* - * Disable runtime checking and repair of values returned by control methods. - * Use only if the repair is causing a problem on a particular machine. - */ -ACPI_INIT_GLOBAL(u8, acpi_gbl_disable_auto_repair, FALSE); - -/* - * Optionally do not install any SSDTs from the RSDT/XSDT during initialization. - * This can be useful for debugging ACPI problems on some machines. - */ -ACPI_INIT_GLOBAL(u8, acpi_gbl_disable_ssdt_table_install, FALSE); - -/* - * Optionally enable runtime namespace override. - */ -ACPI_INIT_GLOBAL(u8, acpi_gbl_runtime_namespace_override, TRUE); - -/* - * We keep track of the latest version of Windows that has been requested by - * the BIOS. ACPI 5.0. - */ -ACPI_INIT_GLOBAL(u8, acpi_gbl_osi_data, 0); - -/* - * ACPI 5.0 introduces the concept of a "reduced hardware platform", meaning - * that the ACPI hardware is no longer required. A flag in the FADT indicates - * a reduced HW machine, and that flag is duplicated here for convenience. - */ -ACPI_INIT_GLOBAL(u8, acpi_gbl_reduced_hardware, FALSE); - -/* - * This mechanism is used to trace a specified AML method. The method is - * traced each time it is executed. - */ -ACPI_INIT_GLOBAL(u32, acpi_gbl_trace_flags, 0); -ACPI_INIT_GLOBAL(const char *, acpi_gbl_trace_method_name, NULL); -ACPI_INIT_GLOBAL(u32, acpi_gbl_trace_dbg_level, ACPI_TRACE_LEVEL_DEFAULT); -ACPI_INIT_GLOBAL(u32, acpi_gbl_trace_dbg_layer, ACPI_TRACE_LAYER_DEFAULT); - -/* - * Runtime configuration of debug output control masks. We want the debug - * switches statically initialized so they are already set when the debugger - * is entered. - */ -ACPI_INIT_GLOBAL(u32, acpi_dbg_level, ACPI_DEBUG_DEFAULT); -ACPI_INIT_GLOBAL(u32, acpi_dbg_layer, 0); - -/* Optionally enable timer output with Debug Object output */ - -ACPI_INIT_GLOBAL(u8, acpi_gbl_display_debug_timer, FALSE); - -/* - * Debugger command handshake globals. Host OSes need to access these - * variables to implement their own command handshake mechanism. - */ -#ifdef ACPI_DEBUGGER -ACPI_INIT_GLOBAL(u8, acpi_gbl_method_executing, FALSE); -ACPI_GLOBAL(char, acpi_gbl_db_line_buf[ACPI_DB_LINE_BUFFER_SIZE]); -#endif - -/* - * Other miscellaneous globals - */ -ACPI_GLOBAL(struct acpi_table_fadt, acpi_gbl_FADT); -ACPI_GLOBAL(u32, acpi_current_gpe_count); -ACPI_GLOBAL(u8, acpi_gbl_system_awake_and_running); - -/***************************************************************************** - * - * ACPICA public interface configuration. - * - * Interfaces that are configured out of the ACPICA build are replaced - * by inlined stubs by default. - * - ****************************************************************************/ - -/* - * Hardware-reduced prototypes (default: Not hardware reduced). - * - * All ACPICA hardware-related interfaces that use these macros will be - * configured out of the ACPICA build if the ACPI_REDUCED_HARDWARE flag - * is set to TRUE. - * - * Note: This static build option for reduced hardware is intended to - * reduce ACPICA code size if desired or necessary. However, even if this - * option is not specified, the runtime behavior of ACPICA is dependent - * on the actual FADT reduced hardware flag (HW_REDUCED_ACPI). If set, - * the flag will enable similar behavior -- ACPICA will not attempt - * to access any ACPI-relate hardware (SCI, GPEs, Fixed Events, etc.) - */ -#if (!ACPI_REDUCED_HARDWARE) -#define ACPI_HW_DEPENDENT_RETURN_STATUS(prototype) \ - ACPI_EXTERNAL_RETURN_STATUS(prototype) - -#define ACPI_HW_DEPENDENT_RETURN_OK(prototype) \ - ACPI_EXTERNAL_RETURN_OK(prototype) - -#define ACPI_HW_DEPENDENT_RETURN_VOID(prototype) \ - ACPI_EXTERNAL_RETURN_VOID(prototype) - -#else -#define ACPI_HW_DEPENDENT_RETURN_STATUS(prototype) \ - static ACPI_INLINE prototype {return(AE_NOT_CONFIGURED);} - -#define ACPI_HW_DEPENDENT_RETURN_OK(prototype) \ - static ACPI_INLINE prototype {return(AE_OK);} - -#define ACPI_HW_DEPENDENT_RETURN_VOID(prototype) \ - static ACPI_INLINE prototype {return;} - -#endif /* !ACPI_REDUCED_HARDWARE */ - -/* - * Error message prototypes (default: error messages enabled). - * - * All interfaces related to error and warning messages - * will be configured out of the ACPICA build if the - * ACPI_NO_ERROR_MESSAGE flag is defined. - */ -#ifndef ACPI_NO_ERROR_MESSAGES -#define ACPI_MSG_DEPENDENT_RETURN_VOID(prototype) \ - prototype; - -#else -#define ACPI_MSG_DEPENDENT_RETURN_VOID(prototype) \ - static ACPI_INLINE prototype {return;} - -#endif /* ACPI_NO_ERROR_MESSAGES */ - -/* - * Debugging output prototypes (default: no debug output). - * - * All interfaces related to debug output messages - * will be configured out of the ACPICA build unless the - * ACPI_DEBUG_OUTPUT flag is defined. - */ -#ifdef ACPI_DEBUG_OUTPUT -#define ACPI_DBG_DEPENDENT_RETURN_VOID(prototype) \ - prototype; - -#else -#define ACPI_DBG_DEPENDENT_RETURN_VOID(prototype) \ - static ACPI_INLINE prototype {return;} - -#endif /* ACPI_DEBUG_OUTPUT */ - -/* - * Application prototypes - * - * All interfaces used by application will be configured - * out of the ACPICA build unless the ACPI_APPLICATION - * flag is defined. - */ -#ifdef ACPI_APPLICATION -#define ACPI_APP_DEPENDENT_RETURN_VOID(prototype) \ - prototype; - -#else -#define ACPI_APP_DEPENDENT_RETURN_VOID(prototype) \ - static ACPI_INLINE prototype {return;} - -#endif /* ACPI_APPLICATION */ - -/* - * Debugger prototypes - * - * All interfaces used by debugger will be configured - * out of the ACPICA build unless the ACPI_DEBUGGER - * flag is defined. - */ -#ifdef ACPI_DEBUGGER -#define ACPI_DBR_DEPENDENT_RETURN_OK(prototype) \ - ACPI_EXTERNAL_RETURN_OK(prototype) - -#define ACPI_DBR_DEPENDENT_RETURN_VOID(prototype) \ - ACPI_EXTERNAL_RETURN_VOID(prototype) - -#else -#define ACPI_DBR_DEPENDENT_RETURN_OK(prototype) \ - static ACPI_INLINE prototype {return(AE_OK);} - -#define ACPI_DBR_DEPENDENT_RETURN_VOID(prototype) \ - static ACPI_INLINE prototype {return;} - -#endif /* ACPI_DEBUGGER */ - -/***************************************************************************** - * - * ACPICA public interface prototypes - * - ****************************************************************************/ - -/* - * Initialization - */ -ACPI_EXTERNAL_RETURN_STATUS(acpi_status __init - acpi_initialize_tables(struct acpi_table_desc - *initial_storage, - u32 initial_table_count, - u8 allow_resize)) -ACPI_EXTERNAL_RETURN_STATUS(acpi_status __init acpi_initialize_subsystem(void)) - -ACPI_EXTERNAL_RETURN_STATUS(acpi_status __init acpi_enable_subsystem(u32 flags)) - -ACPI_EXTERNAL_RETURN_STATUS(acpi_status __init - acpi_initialize_objects(u32 flags)) -ACPI_EXTERNAL_RETURN_STATUS(acpi_status __init acpi_terminate(void)) - -/* - * Miscellaneous global interfaces - */ -ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_enable(void)) -ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_disable(void)) -ACPI_EXTERNAL_RETURN_STATUS(acpi_status acpi_subsystem_status(void)) - -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_get_system_info(struct acpi_buffer - *ret_buffer)) -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_get_statistics(struct acpi_statistics *stats)) -ACPI_EXTERNAL_RETURN_PTR(const char - *acpi_format_exception(acpi_status exception)) -ACPI_EXTERNAL_RETURN_STATUS(acpi_status acpi_purge_cached_objects(void)) - -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_install_interface(acpi_string interface_name)) - -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_remove_interface(acpi_string interface_name)) -ACPI_EXTERNAL_RETURN_STATUS(acpi_status acpi_update_interfaces(u8 action)) - -ACPI_EXTERNAL_RETURN_UINT32(u32 - acpi_check_address_range(acpi_adr_space_type - space_id, - acpi_physical_address - address, acpi_size length, - u8 warn)) -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_decode_pld_buffer(u8 *in_buffer, - acpi_size length, - struct acpi_pld_info - **return_buffer)) - -/* - * ACPI table load/unload interfaces - */ -ACPI_EXTERNAL_RETURN_STATUS(acpi_status __init - acpi_install_table(acpi_physical_address address, - u8 physical)) - -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_load_table(struct acpi_table_header *table)) - -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_unload_parent_table(acpi_handle object)) -ACPI_EXTERNAL_RETURN_STATUS(acpi_status __init acpi_load_tables(void)) - -/* - * ACPI table manipulation interfaces - */ -ACPI_EXTERNAL_RETURN_STATUS(acpi_status __init acpi_reallocate_root_table(void)) - -ACPI_EXTERNAL_RETURN_STATUS(acpi_status __init - acpi_find_root_pointer(acpi_physical_address * - rsdp_address)) -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_get_table_header(acpi_string signature, - u32 instance, - struct acpi_table_header - *out_table_header)) -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_get_table(acpi_string signature, u32 instance, - struct acpi_table_header - **out_table)) -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_get_table_by_index(u32 table_index, - struct acpi_table_header - **out_table)) -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_install_table_handler(acpi_table_handler - handler, void *context)) -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_remove_table_handler(acpi_table_handler - handler)) - -/* - * Namespace and name interfaces - */ -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_walk_namespace(acpi_object_type type, - acpi_handle start_object, - u32 max_depth, - acpi_walk_callback - descending_callback, - acpi_walk_callback - ascending_callback, - void *context, - void **return_value)) -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_get_devices(const char *HID, - acpi_walk_callback user_function, - void *context, - void **return_value)) -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_get_name(acpi_handle object, u32 name_type, - struct acpi_buffer *ret_path_ptr)) -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_get_handle(acpi_handle parent, - acpi_string pathname, - acpi_handle * ret_handle)) -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_attach_data(acpi_handle object, - acpi_object_handler handler, - void *data)) -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_detach_data(acpi_handle object, - acpi_object_handler handler)) -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_get_data(acpi_handle object, - acpi_object_handler handler, - void **data)) -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_debug_trace(const char *name, u32 debug_level, - u32 debug_layer, u32 flags)) - -/* - * Object manipulation and enumeration - */ -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_evaluate_object(acpi_handle object, - acpi_string pathname, - struct acpi_object_list - *parameter_objects, - struct acpi_buffer - *return_object_buffer)) -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_evaluate_object_typed(acpi_handle object, - acpi_string pathname, - struct acpi_object_list - *external_params, - struct acpi_buffer - *return_buffer, - acpi_object_type - return_type)) -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_get_object_info(acpi_handle object, - struct acpi_device_info - **return_buffer)) -ACPI_EXTERNAL_RETURN_STATUS(acpi_status acpi_install_method(u8 *buffer)) - -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_get_next_object(acpi_object_type type, - acpi_handle parent, - acpi_handle child, - acpi_handle * out_handle)) - -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_get_type(acpi_handle object, - acpi_object_type * out_type)) - -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_get_parent(acpi_handle object, - acpi_handle * out_handle)) - -/* - * Handler interfaces - */ -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_install_initialization_handler - (acpi_init_handler handler, u32 function)) -ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status - acpi_install_sci_handler(acpi_sci_handler - address, - void *context)) -ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status - acpi_remove_sci_handler(acpi_sci_handler - address)) -ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status - acpi_install_global_event_handler - (acpi_gbl_event_handler handler, - void *context)) -ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status - acpi_install_fixed_event_handler(u32 - acpi_event, - acpi_event_handler - handler, - void - *context)) -ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status - acpi_remove_fixed_event_handler(u32 acpi_event, - acpi_event_handler - handler)) -ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status - acpi_install_gpe_handler(acpi_handle - gpe_device, - u32 gpe_number, - u32 type, - acpi_gpe_handler - address, - void *context)) -ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status - acpi_install_gpe_raw_handler(acpi_handle - gpe_device, - u32 gpe_number, - u32 type, - acpi_gpe_handler - address, - void *context)) -ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status - acpi_remove_gpe_handler(acpi_handle gpe_device, - u32 gpe_number, - acpi_gpe_handler - address)) -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_install_notify_handler(acpi_handle device, - u32 handler_type, - acpi_notify_handler - handler, - void *context)) -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_remove_notify_handler(acpi_handle device, - u32 handler_type, - acpi_notify_handler - handler)) -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_install_address_space_handler(acpi_handle - device, - acpi_adr_space_type - space_id, - acpi_adr_space_handler - handler, - acpi_adr_space_setup - setup, - void *context)) -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_remove_address_space_handler(acpi_handle - device, - acpi_adr_space_type - space_id, - acpi_adr_space_handler - handler)) -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_install_exception_handler - (acpi_exception_handler handler)) -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_install_interface_handler - (acpi_interface_handler handler)) - -/* - * Global Lock interfaces - */ -ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status - acpi_acquire_global_lock(u16 timeout, - u32 *handle)) - -ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status - acpi_release_global_lock(u32 handle)) - -/* - * Interfaces to AML mutex objects - */ -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_acquire_mutex(acpi_handle handle, - acpi_string pathname, - u16 timeout)) - -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_release_mutex(acpi_handle handle, - acpi_string pathname)) - -/* - * Fixed Event interfaces - */ -ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status - acpi_enable_event(u32 event, u32 flags)) - -ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status - acpi_disable_event(u32 event, u32 flags)) -ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_clear_event(u32 event)) - -ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status - acpi_get_event_status(u32 event, - acpi_event_status - *event_status)) - -/* - * General Purpose Event (GPE) Interfaces - */ -ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_update_all_gpes(void)) - -ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status - acpi_enable_gpe(acpi_handle gpe_device, - u32 gpe_number)) - -ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status - acpi_disable_gpe(acpi_handle gpe_device, - u32 gpe_number)) - -ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status - acpi_clear_gpe(acpi_handle gpe_device, - u32 gpe_number)) - -ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status - acpi_set_gpe(acpi_handle gpe_device, - u32 gpe_number, u8 action)) - -ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status - acpi_finish_gpe(acpi_handle gpe_device, - u32 gpe_number)) - -ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status - acpi_mark_gpe_for_wake(acpi_handle gpe_device, - u32 gpe_number)) - -ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status - acpi_setup_gpe_for_wake(acpi_handle - parent_device, - acpi_handle gpe_device, - u32 gpe_number)) -ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status - acpi_set_gpe_wake_mask(acpi_handle gpe_device, - u32 gpe_number, - u8 action)) -ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status - acpi_get_gpe_status(acpi_handle gpe_device, - u32 gpe_number, - acpi_event_status - *event_status)) -ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_disable_all_gpes(void)) -ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_enable_all_runtime_gpes(void)) -ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_enable_all_wakeup_gpes(void)) - -ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status - acpi_get_gpe_device(u32 gpe_index, - acpi_handle * gpe_device)) - -ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status - acpi_install_gpe_block(acpi_handle gpe_device, - struct - acpi_generic_address - *gpe_block_address, - u32 register_count, - u32 interrupt_number)) -ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status - acpi_remove_gpe_block(acpi_handle gpe_device)) - -/* - * Resource interfaces - */ -typedef -acpi_status(*acpi_walk_resource_callback) (struct acpi_resource * resource, - void *context); - -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_get_vendor_resource(acpi_handle device, - char *name, - struct acpi_vendor_uuid - *uuid, - struct acpi_buffer - *ret_buffer)) -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_get_current_resources(acpi_handle device, - struct acpi_buffer - *ret_buffer)) -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_get_possible_resources(acpi_handle device, - struct acpi_buffer - *ret_buffer)) -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_get_event_resources(acpi_handle device_handle, - struct acpi_buffer - *ret_buffer)) -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_walk_resource_buffer(struct acpi_buffer - *buffer, - acpi_walk_resource_callback - user_function, - void *context)) -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_walk_resources(acpi_handle device, char *name, - acpi_walk_resource_callback - user_function, void *context)) -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_set_current_resources(acpi_handle device, - struct acpi_buffer - *in_buffer)) -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_get_irq_routing_table(acpi_handle device, - struct acpi_buffer - *ret_buffer)) -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_resource_to_address64(struct acpi_resource - *resource, - struct - acpi_resource_address64 - *out)) -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_buffer_to_resource(u8 *aml_buffer, - u16 aml_buffer_length, - struct acpi_resource - **resource_ptr)) - -/* - * Hardware (ACPI device) interfaces - */ -ACPI_EXTERNAL_RETURN_STATUS(acpi_status acpi_reset(void)) - -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_read(u64 *value, - struct acpi_generic_address *reg)) - -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_write(u64 value, - struct acpi_generic_address *reg)) - -ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status - acpi_read_bit_register(u32 register_id, - u32 *return_value)) - -ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status - acpi_write_bit_register(u32 register_id, - u32 value)) - -/* - * Sleep/Wake interfaces - */ -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_get_sleep_type_data(u8 sleep_state, - u8 *slp_typ_a, - u8 *slp_typ_b)) - -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_enter_sleep_state_prep(u8 sleep_state)) -ACPI_EXTERNAL_RETURN_STATUS(acpi_status acpi_enter_sleep_state(u8 sleep_state)) - -ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_enter_sleep_state_s4bios(void)) - -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_leave_sleep_state_prep(u8 sleep_state)) -ACPI_EXTERNAL_RETURN_STATUS(acpi_status acpi_leave_sleep_state(u8 sleep_state)) - -ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status - acpi_set_firmware_waking_vector - (acpi_physical_address physical_address, - acpi_physical_address physical_address64)) -/* - * ACPI Timer interfaces - */ -ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status - acpi_get_timer_resolution(u32 *resolution)) -ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_get_timer(u32 *ticks)) - -ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status - acpi_get_timer_duration(u32 start_ticks, - u32 end_ticks, - u32 *time_elapsed)) - -/* - * Error/Warning output - */ -ACPI_MSG_DEPENDENT_RETURN_VOID(ACPI_PRINTF_LIKE(3) - void ACPI_INTERNAL_VAR_XFACE - acpi_error(const char *module_name, - u32 line_number, - const char *format, ...)) -ACPI_MSG_DEPENDENT_RETURN_VOID(ACPI_PRINTF_LIKE(4) - void ACPI_INTERNAL_VAR_XFACE - acpi_exception(const char *module_name, - u32 line_number, - acpi_status status, - const char *format, ...)) -ACPI_MSG_DEPENDENT_RETURN_VOID(ACPI_PRINTF_LIKE(3) - void ACPI_INTERNAL_VAR_XFACE - acpi_warning(const char *module_name, - u32 line_number, - const char *format, ...)) -ACPI_MSG_DEPENDENT_RETURN_VOID(ACPI_PRINTF_LIKE(1) - void ACPI_INTERNAL_VAR_XFACE - acpi_info(const char *format, ...)) -ACPI_MSG_DEPENDENT_RETURN_VOID(ACPI_PRINTF_LIKE(3) - void ACPI_INTERNAL_VAR_XFACE - acpi_bios_error(const char *module_name, - u32 line_number, - const char *format, ...)) -ACPI_MSG_DEPENDENT_RETURN_VOID(ACPI_PRINTF_LIKE(3) - void ACPI_INTERNAL_VAR_XFACE - acpi_bios_warning(const char *module_name, - u32 line_number, - const char *format, ...)) - -/* - * Debug output - */ -ACPI_DBG_DEPENDENT_RETURN_VOID(ACPI_PRINTF_LIKE(6) - void ACPI_INTERNAL_VAR_XFACE - acpi_debug_print(u32 requested_debug_level, - u32 line_number, - const char *function_name, - const char *module_name, - u32 component_id, - const char *format, ...)) -ACPI_DBG_DEPENDENT_RETURN_VOID(ACPI_PRINTF_LIKE(6) - void ACPI_INTERNAL_VAR_XFACE - acpi_debug_print_raw(u32 requested_debug_level, - u32 line_number, - const char *function_name, - const char *module_name, - u32 component_id, - const char *format, ...)) - -ACPI_DBG_DEPENDENT_RETURN_VOID(void - acpi_trace_point(acpi_trace_event_type type, - u8 begin, - u8 *aml, char *pathname)) -ACPI_APP_DEPENDENT_RETURN_VOID(ACPI_PRINTF_LIKE(1) - void ACPI_INTERNAL_VAR_XFACE - acpi_log_error(const char *format, ...)) - acpi_status acpi_initialize_debugger(void); - -void acpi_terminate_debugger(void); - -/* - * Divergences - */ -ACPI_GLOBAL(u8, acpi_gbl_permanent_mmap); - -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_get_table_with_size(acpi_string signature, - u32 instance, - struct acpi_table_header - **out_table, - acpi_size *tbl_size)) - -ACPI_EXTERNAL_RETURN_STATUS(acpi_status - acpi_get_data_full(acpi_handle object, - acpi_object_handler handler, - void **data, - void (*callback)(void *))) - -void acpi_run_debugger(char *batch_buffer); - -void acpi_set_debugger_thread_id(acpi_thread_id thread_id); - -#endif /* __ACXFACE_H__ */ diff --git a/drivers/include/acpi/acrestyp.h b/drivers/include/acpi/acrestyp.h deleted file mode 100644 index cf2acb84df..0000000000 --- a/drivers/include/acpi/acrestyp.h +++ /dev/null @@ -1,621 +0,0 @@ -/****************************************************************************** - * - * Name: acrestyp.h - Defines, types, and structures for resource descriptors - * - *****************************************************************************/ - -/* - * Copyright (C) 2000 - 2016, 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 __ACRESTYP_H__ -#define __ACRESTYP_H__ - -/* - * Definitions for Resource Attributes - */ -typedef u16 acpi_rs_length; /* Resource Length field is fixed at 16 bits */ -typedef u32 acpi_rsdesc_size; /* Max Resource Descriptor size is (Length+3) = (64K-1)+3 */ - -/* - * Memory Attributes - */ -#define ACPI_READ_ONLY_MEMORY (u8) 0x00 -#define ACPI_READ_WRITE_MEMORY (u8) 0x01 - -#define ACPI_NON_CACHEABLE_MEMORY (u8) 0x00 -#define ACPI_CACHABLE_MEMORY (u8) 0x01 -#define ACPI_WRITE_COMBINING_MEMORY (u8) 0x02 -#define ACPI_PREFETCHABLE_MEMORY (u8) 0x03 - -/*! [Begin] no source code translation */ -/* - * IO Attributes - * The ISA IO ranges are: n000-n0FFh, n400-n4FFh, n800-n8FFh, nC00-nCFFh. - * The non-ISA IO ranges are: n100-n3FFh, n500-n7FFh, n900-nBFFh, nCD0-nFFFh. - */ -/*! [End] no source code translation !*/ - -#define ACPI_NON_ISA_ONLY_RANGES (u8) 0x01 -#define ACPI_ISA_ONLY_RANGES (u8) 0x02 -#define ACPI_ENTIRE_RANGE (ACPI_NON_ISA_ONLY_RANGES | ACPI_ISA_ONLY_RANGES) - -/* Type of translation - 1=Sparse, 0=Dense */ - -#define ACPI_SPARSE_TRANSLATION (u8) 0x01 - -/* - * IO Port Descriptor Decode - */ -#define ACPI_DECODE_10 (u8) 0x00 /* 10-bit IO address decode */ -#define ACPI_DECODE_16 (u8) 0x01 /* 16-bit IO address decode */ - -/* - * Interrupt attributes - used in multiple descriptors - */ - -/* Triggering */ - -#define ACPI_LEVEL_SENSITIVE (u8) 0x00 -#define ACPI_EDGE_SENSITIVE (u8) 0x01 - -/* Polarity */ - -#define ACPI_ACTIVE_HIGH (u8) 0x00 -#define ACPI_ACTIVE_LOW (u8) 0x01 -#define ACPI_ACTIVE_BOTH (u8) 0x02 - -/* Sharing */ - -#define ACPI_EXCLUSIVE (u8) 0x00 -#define ACPI_SHARED (u8) 0x01 - -/* Wake */ - -#define ACPI_NOT_WAKE_CAPABLE (u8) 0x00 -#define ACPI_WAKE_CAPABLE (u8) 0x01 - -/* - * DMA Attributes - */ -#define ACPI_COMPATIBILITY (u8) 0x00 -#define ACPI_TYPE_A (u8) 0x01 -#define ACPI_TYPE_B (u8) 0x02 -#define ACPI_TYPE_F (u8) 0x03 - -#define ACPI_NOT_BUS_MASTER (u8) 0x00 -#define ACPI_BUS_MASTER (u8) 0x01 - -#define ACPI_TRANSFER_8 (u8) 0x00 -#define ACPI_TRANSFER_8_16 (u8) 0x01 -#define ACPI_TRANSFER_16 (u8) 0x02 - -/* - * Start Dependent Functions Priority definitions - */ -#define ACPI_GOOD_CONFIGURATION (u8) 0x00 -#define ACPI_ACCEPTABLE_CONFIGURATION (u8) 0x01 -#define ACPI_SUB_OPTIMAL_CONFIGURATION (u8) 0x02 - -/* - * 16, 32 and 64-bit Address Descriptor resource types - */ -#define ACPI_MEMORY_RANGE (u8) 0x00 -#define ACPI_IO_RANGE (u8) 0x01 -#define ACPI_BUS_NUMBER_RANGE (u8) 0x02 - -#define ACPI_ADDRESS_NOT_FIXED (u8) 0x00 -#define ACPI_ADDRESS_FIXED (u8) 0x01 - -#define ACPI_POS_DECODE (u8) 0x00 -#define ACPI_SUB_DECODE (u8) 0x01 - -/* Producer/Consumer */ - -#define ACPI_PRODUCER (u8) 0x00 -#define ACPI_CONSUMER (u8) 0x01 - -/* - * If possible, pack the following structures to byte alignment - */ -#ifndef ACPI_MISALIGNMENT_NOT_SUPPORTED -#pragma pack(1) -#endif - -/* UUID data structures for use in vendor-defined resource descriptors */ - -struct acpi_uuid { - u8 data[ACPI_UUID_LENGTH]; -}; - -struct acpi_vendor_uuid { - u8 subtype; - u8 data[ACPI_UUID_LENGTH]; -}; - -/* - * Structures used to describe device resources - */ -struct acpi_resource_irq { - u8 descriptor_length; - u8 triggering; - u8 polarity; - u8 sharable; - u8 wake_capable; - u8 interrupt_count; - u8 interrupts[1]; -}; - -struct acpi_resource_dma { - u8 type; - u8 bus_master; - u8 transfer; - u8 channel_count; - u8 channels[1]; -}; - -struct acpi_resource_start_dependent { - u8 descriptor_length; - u8 compatibility_priority; - u8 performance_robustness; -}; - -/* - * The END_DEPENDENT_FUNCTIONS_RESOURCE struct is not - * needed because it has no fields - */ - -struct acpi_resource_io { - u8 io_decode; - u8 alignment; - u8 address_length; - u16 minimum; - u16 maximum; -}; - -struct acpi_resource_fixed_io { - u16 address; - u8 address_length; -}; - -struct acpi_resource_fixed_dma { - u16 request_lines; - u16 channels; - u8 width; -}; - -/* Values for Width field above */ - -#define ACPI_DMA_WIDTH8 0 -#define ACPI_DMA_WIDTH16 1 -#define ACPI_DMA_WIDTH32 2 -#define ACPI_DMA_WIDTH64 3 -#define ACPI_DMA_WIDTH128 4 -#define ACPI_DMA_WIDTH256 5 - -struct acpi_resource_vendor { - u16 byte_length; - u8 byte_data[1]; -}; - -/* Vendor resource with UUID info (introduced in ACPI 3.0) */ - -struct acpi_resource_vendor_typed { - u16 byte_length; - u8 uuid_subtype; - u8 uuid[ACPI_UUID_LENGTH]; - u8 byte_data[1]; -}; - -struct acpi_resource_end_tag { - u8 checksum; -}; - -struct acpi_resource_memory24 { - u8 write_protect; - u16 minimum; - u16 maximum; - u16 alignment; - u16 address_length; -}; - -struct acpi_resource_memory32 { - u8 write_protect; - u32 minimum; - u32 maximum; - u32 alignment; - u32 address_length; -}; - -struct acpi_resource_fixed_memory32 { - u8 write_protect; - u32 address; - u32 address_length; -}; - -struct acpi_memory_attribute { - u8 write_protect; - u8 caching; - u8 range_type; - u8 translation; -}; - -struct acpi_io_attribute { - u8 range_type; - u8 translation; - u8 translation_type; - u8 reserved1; -}; - -union acpi_resource_attribute { - struct acpi_memory_attribute mem; - struct acpi_io_attribute io; - - /* Used for the *word_space macros */ - - u8 type_specific; -}; - -struct acpi_resource_source { - u8 index; - u16 string_length; - char *string_ptr; -}; - -/* Fields common to all address descriptors, 16/32/64 bit */ - -#define ACPI_RESOURCE_ADDRESS_COMMON \ - u8 resource_type; \ - u8 producer_consumer; \ - u8 decode; \ - u8 min_address_fixed; \ - u8 max_address_fixed; \ - union acpi_resource_attribute info; - -struct acpi_address16_attribute { - u16 granularity; - u16 minimum; - u16 maximum; - u16 translation_offset; - u16 address_length; -}; - -struct acpi_address32_attribute { - u32 granularity; - u32 minimum; - u32 maximum; - u32 translation_offset; - u32 address_length; -}; - -struct acpi_address64_attribute { - u64 granularity; - u64 minimum; - u64 maximum; - u64 translation_offset; - u64 address_length; -}; - -struct acpi_resource_address { -ACPI_RESOURCE_ADDRESS_COMMON}; - -struct acpi_resource_address16 { - ACPI_RESOURCE_ADDRESS_COMMON struct acpi_address16_attribute address; - struct acpi_resource_source resource_source; -}; - -struct acpi_resource_address32 { - ACPI_RESOURCE_ADDRESS_COMMON struct acpi_address32_attribute address; - struct acpi_resource_source resource_source; -}; - -struct acpi_resource_address64 { - ACPI_RESOURCE_ADDRESS_COMMON struct acpi_address64_attribute address; - struct acpi_resource_source resource_source; -}; - -struct acpi_resource_extended_address64 { - ACPI_RESOURCE_ADDRESS_COMMON u8 revision_ID; - struct acpi_address64_attribute address; - u64 type_specific; -}; - -struct acpi_resource_extended_irq { - u8 producer_consumer; - u8 triggering; - u8 polarity; - u8 sharable; - u8 wake_capable; - u8 interrupt_count; - struct acpi_resource_source resource_source; - u32 interrupts[1]; -}; - -struct acpi_resource_generic_register { - u8 space_id; - u8 bit_width; - u8 bit_offset; - u8 access_size; - u64 address; -}; - -struct acpi_resource_gpio { - u8 revision_id; - u8 connection_type; - u8 producer_consumer; /* For values, see Producer/Consumer above */ - u8 pin_config; - u8 sharable; /* For values, see Interrupt Attributes above */ - u8 wake_capable; /* For values, see Interrupt Attributes above */ - u8 io_restriction; - u8 triggering; /* For values, see Interrupt Attributes above */ - u8 polarity; /* For values, see Interrupt Attributes above */ - u16 drive_strength; - u16 debounce_timeout; - u16 pin_table_length; - u16 vendor_length; - struct acpi_resource_source resource_source; - u16 *pin_table; - u8 *vendor_data; -}; - -/* Values for GPIO connection_type field above */ - -#define ACPI_RESOURCE_GPIO_TYPE_INT 0 -#define ACPI_RESOURCE_GPIO_TYPE_IO 1 - -/* Values for pin_config field above */ - -#define ACPI_PIN_CONFIG_DEFAULT 0 -#define ACPI_PIN_CONFIG_PULLUP 1 -#define ACPI_PIN_CONFIG_PULLDOWN 2 -#define ACPI_PIN_CONFIG_NOPULL 3 - -/* Values for io_restriction field above */ - -#define ACPI_IO_RESTRICT_NONE 0 -#define ACPI_IO_RESTRICT_INPUT 1 -#define ACPI_IO_RESTRICT_OUTPUT 2 -#define ACPI_IO_RESTRICT_NONE_PRESERVE 3 - -/* Common structure for I2C, SPI, and UART serial descriptors */ - -#define ACPI_RESOURCE_SERIAL_COMMON \ - u8 revision_id; \ - u8 type; \ - u8 producer_consumer; /* For values, see Producer/Consumer above */\ - u8 slave_mode; \ - u8 type_revision_id; \ - u16 type_data_length; \ - u16 vendor_length; \ - struct acpi_resource_source resource_source; \ - u8 *vendor_data; - -struct acpi_resource_common_serialbus { -ACPI_RESOURCE_SERIAL_COMMON}; - -/* Values for the Type field above */ - -#define ACPI_RESOURCE_SERIAL_TYPE_I2C 1 -#define ACPI_RESOURCE_SERIAL_TYPE_SPI 2 -#define ACPI_RESOURCE_SERIAL_TYPE_UART 3 - -/* Values for slave_mode field above */ - -#define ACPI_CONTROLLER_INITIATED 0 -#define ACPI_DEVICE_INITIATED 1 - -struct acpi_resource_i2c_serialbus { - ACPI_RESOURCE_SERIAL_COMMON u8 access_mode; - u16 slave_address; - u32 connection_speed; -}; - -/* Values for access_mode field above */ - -#define ACPI_I2C_7BIT_MODE 0 -#define ACPI_I2C_10BIT_MODE 1 - -struct acpi_resource_spi_serialbus { - ACPI_RESOURCE_SERIAL_COMMON u8 wire_mode; - u8 device_polarity; - u8 data_bit_length; - u8 clock_phase; - u8 clock_polarity; - u16 device_selection; - u32 connection_speed; -}; - -/* Values for wire_mode field above */ - -#define ACPI_SPI_4WIRE_MODE 0 -#define ACPI_SPI_3WIRE_MODE 1 - -/* Values for device_polarity field above */ - -#define ACPI_SPI_ACTIVE_LOW 0 -#define ACPI_SPI_ACTIVE_HIGH 1 - -/* Values for clock_phase field above */ - -#define ACPI_SPI_FIRST_PHASE 0 -#define ACPI_SPI_SECOND_PHASE 1 - -/* Values for clock_polarity field above */ - -#define ACPI_SPI_START_LOW 0 -#define ACPI_SPI_START_HIGH 1 - -struct acpi_resource_uart_serialbus { - ACPI_RESOURCE_SERIAL_COMMON u8 endian; - u8 data_bits; - u8 stop_bits; - u8 flow_control; - u8 parity; - u8 lines_enabled; - u16 rx_fifo_size; - u16 tx_fifo_size; - u32 default_baud_rate; -}; - -/* Values for Endian field above */ - -#define ACPI_UART_LITTLE_ENDIAN 0 -#define ACPI_UART_BIG_ENDIAN 1 - -/* Values for data_bits field above */ - -#define ACPI_UART_5_DATA_BITS 0 -#define ACPI_UART_6_DATA_BITS 1 -#define ACPI_UART_7_DATA_BITS 2 -#define ACPI_UART_8_DATA_BITS 3 -#define ACPI_UART_9_DATA_BITS 4 - -/* Values for stop_bits field above */ - -#define ACPI_UART_NO_STOP_BITS 0 -#define ACPI_UART_1_STOP_BIT 1 -#define ACPI_UART_1P5_STOP_BITS 2 -#define ACPI_UART_2_STOP_BITS 3 - -/* Values for flow_control field above */ - -#define ACPI_UART_FLOW_CONTROL_NONE 0 -#define ACPI_UART_FLOW_CONTROL_HW 1 -#define ACPI_UART_FLOW_CONTROL_XON_XOFF 2 - -/* Values for Parity field above */ - -#define ACPI_UART_PARITY_NONE 0 -#define ACPI_UART_PARITY_EVEN 1 -#define ACPI_UART_PARITY_ODD 2 -#define ACPI_UART_PARITY_MARK 3 -#define ACPI_UART_PARITY_SPACE 4 - -/* Values for lines_enabled bitfield above */ - -#define ACPI_UART_CARRIER_DETECT (1<<2) -#define ACPI_UART_RING_INDICATOR (1<<3) -#define ACPI_UART_DATA_SET_READY (1<<4) -#define ACPI_UART_DATA_TERMINAL_READY (1<<5) -#define ACPI_UART_CLEAR_TO_SEND (1<<6) -#define ACPI_UART_REQUEST_TO_SEND (1<<7) - -/* ACPI_RESOURCE_TYPEs */ - -#define ACPI_RESOURCE_TYPE_IRQ 0 -#define ACPI_RESOURCE_TYPE_DMA 1 -#define ACPI_RESOURCE_TYPE_START_DEPENDENT 2 -#define ACPI_RESOURCE_TYPE_END_DEPENDENT 3 -#define ACPI_RESOURCE_TYPE_IO 4 -#define ACPI_RESOURCE_TYPE_FIXED_IO 5 -#define ACPI_RESOURCE_TYPE_VENDOR 6 -#define ACPI_RESOURCE_TYPE_END_TAG 7 -#define ACPI_RESOURCE_TYPE_MEMORY24 8 -#define ACPI_RESOURCE_TYPE_MEMORY32 9 -#define ACPI_RESOURCE_TYPE_FIXED_MEMORY32 10 -#define ACPI_RESOURCE_TYPE_ADDRESS16 11 -#define ACPI_RESOURCE_TYPE_ADDRESS32 12 -#define ACPI_RESOURCE_TYPE_ADDRESS64 13 -#define ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64 14 /* ACPI 3.0 */ -#define ACPI_RESOURCE_TYPE_EXTENDED_IRQ 15 -#define ACPI_RESOURCE_TYPE_GENERIC_REGISTER 16 -#define ACPI_RESOURCE_TYPE_GPIO 17 /* ACPI 5.0 */ -#define ACPI_RESOURCE_TYPE_FIXED_DMA 18 /* ACPI 5.0 */ -#define ACPI_RESOURCE_TYPE_SERIAL_BUS 19 /* ACPI 5.0 */ -#define ACPI_RESOURCE_TYPE_MAX 19 - -/* Master union for resource descriptors */ - -union acpi_resource_data { - struct acpi_resource_irq irq; - struct acpi_resource_dma dma; - struct acpi_resource_start_dependent start_dpf; - struct acpi_resource_io io; - struct acpi_resource_fixed_io fixed_io; - struct acpi_resource_fixed_dma fixed_dma; - struct acpi_resource_vendor vendor; - struct acpi_resource_vendor_typed vendor_typed; - struct acpi_resource_end_tag end_tag; - struct acpi_resource_memory24 memory24; - struct acpi_resource_memory32 memory32; - struct acpi_resource_fixed_memory32 fixed_memory32; - struct acpi_resource_address16 address16; - struct acpi_resource_address32 address32; - struct acpi_resource_address64 address64; - struct acpi_resource_extended_address64 ext_address64; - struct acpi_resource_extended_irq extended_irq; - struct acpi_resource_generic_register generic_reg; - struct acpi_resource_gpio gpio; - struct acpi_resource_i2c_serialbus i2c_serial_bus; - struct acpi_resource_spi_serialbus spi_serial_bus; - struct acpi_resource_uart_serialbus uart_serial_bus; - struct acpi_resource_common_serialbus common_serial_bus; - - /* Common fields */ - - struct acpi_resource_address address; /* Common 16/32/64 address fields */ -}; - -/* Common resource header */ - -struct acpi_resource { - u32 type; - u32 length; - union acpi_resource_data data; -}; - -/* restore default alignment */ - -#pragma pack() - -#define ACPI_RS_SIZE_NO_DATA 8 /* Id + Length fields */ -#define ACPI_RS_SIZE_MIN (u32) ACPI_ROUND_UP_TO_NATIVE_WORD (12) -#define ACPI_RS_SIZE(type) (u32) (ACPI_RS_SIZE_NO_DATA + sizeof (type)) - -/* Macro for walking resource templates with multiple descriptors */ - -#define ACPI_NEXT_RESOURCE(res) \ - ACPI_ADD_PTR (struct acpi_resource, (res), (res)->length) - -struct acpi_pci_routing_table { - u32 length; - u32 pin; - u64 address; /* here for 64-bit alignment */ - u32 source_index; - char source[4]; /* pad to 64 bits so sizeof() works in all cases */ -}; - -#endif /* __ACRESTYP_H__ */ diff --git a/drivers/include/acpi/actbl.h b/drivers/include/acpi/actbl.h deleted file mode 100644 index 0cb1a00369..0000000000 --- a/drivers/include/acpi/actbl.h +++ /dev/null @@ -1,416 +0,0 @@ -/****************************************************************************** - * - * Name: actbl.h - Basic ACPI Table Definitions - * - *****************************************************************************/ - -/* - * Copyright (C) 2000 - 2016, 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 __ACTBL_H__ -#define __ACTBL_H__ - -/******************************************************************************* - * - * Fundamental ACPI tables - * - * This file contains definitions for the ACPI tables that are directly consumed - * by ACPICA. All other tables are consumed by the OS-dependent ACPI-related - * device drivers and other OS support code. - * - * The RSDP and FACS do not use the common ACPI table header. All other ACPI - * tables use the header. - * - ******************************************************************************/ - -/* - * Values for description table header signatures for tables defined in this - * file. Useful because they make it more difficult to inadvertently type in - * the wrong signature. - */ -#define ACPI_SIG_DSDT "DSDT" /* Differentiated System Description Table */ -#define ACPI_SIG_FADT "FACP" /* Fixed ACPI Description Table */ -#define ACPI_SIG_FACS "FACS" /* Firmware ACPI Control Structure */ -#define ACPI_SIG_OSDT "OSDT" /* Override System Description Table */ -#define ACPI_SIG_PSDT "PSDT" /* Persistent System Description Table */ -#define ACPI_SIG_RSDP "RSD PTR " /* Root System Description Pointer */ -#define ACPI_SIG_RSDT "RSDT" /* Root System Description Table */ -#define ACPI_SIG_XSDT "XSDT" /* Extended System Description Table */ -#define ACPI_SIG_SSDT "SSDT" /* Secondary System Description Table */ -#define ACPI_RSDP_NAME "RSDP" /* Short name for RSDP, not signature */ - -/* - * All tables and structures must be byte-packed to match the ACPI - * specification, since the tables are provided by the system BIOS - */ -#pragma pack(1) - -/* - * Note: C bitfields are not used for this reason: - * - * "Bitfields are great and easy to read, but unfortunately the C language - * does not specify the layout of bitfields in memory, which means they are - * essentially useless for dealing with packed data in on-disk formats or - * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me, - * this decision was a design error in C. Ritchie could have picked an order - * and stuck with it." Norman Ramsey. - * See http://stackoverflow.com/a/1053662/41661 - */ - -/******************************************************************************* - * - * Master ACPI Table Header. This common header is used by all ACPI tables - * except the RSDP and FACS. - * - ******************************************************************************/ - -struct acpi_table_header { - char signature[ACPI_NAME_SIZE]; /* ASCII table signature */ - u32 length; /* Length of table in bytes, including this header */ - u8 revision; /* ACPI Specification minor version number */ - u8 checksum; /* To make sum of entire table == 0 */ - char oem_id[ACPI_OEM_ID_SIZE]; /* ASCII OEM identification */ - char oem_table_id[ACPI_OEM_TABLE_ID_SIZE]; /* ASCII OEM table identification */ - u32 oem_revision; /* OEM revision number */ - char asl_compiler_id[ACPI_NAME_SIZE]; /* ASCII ASL compiler vendor ID */ - u32 asl_compiler_revision; /* ASL compiler version */ -}; - -/******************************************************************************* - * - * GAS - Generic Address Structure (ACPI 2.0+) - * - * Note: Since this structure is used in the ACPI tables, it is byte aligned. - * If misaligned access is not supported by the hardware, accesses to the - * 64-bit Address field must be performed with care. - * - ******************************************************************************/ - -struct acpi_generic_address { - u8 space_id; /* Address space where struct or register exists */ - u8 bit_width; /* Size in bits of given register */ - u8 bit_offset; /* Bit offset within the register */ - u8 access_width; /* Minimum Access size (ACPI 3.0) */ - u64 address; /* 64-bit address of struct or register */ -}; - -/******************************************************************************* - * - * RSDP - Root System Description Pointer (Signature is "RSD PTR ") - * Version 2 - * - ******************************************************************************/ - -struct acpi_table_rsdp { - char signature[8]; /* ACPI signature, contains "RSD PTR " */ - u8 checksum; /* ACPI 1.0 checksum */ - char oem_id[ACPI_OEM_ID_SIZE]; /* OEM identification */ - u8 revision; /* Must be (0) for ACPI 1.0 or (2) for ACPI 2.0+ */ - u32 rsdt_physical_address; /* 32-bit physical address of the RSDT */ - u32 length; /* Table length in bytes, including header (ACPI 2.0+) */ - u64 xsdt_physical_address; /* 64-bit physical address of the XSDT (ACPI 2.0+) */ - u8 extended_checksum; /* Checksum of entire table (ACPI 2.0+) */ - u8 reserved[3]; /* Reserved, must be zero */ -}; - -/* Standalone struct for the ACPI 1.0 RSDP */ - -struct acpi_rsdp_common { - char signature[8]; - u8 checksum; - char oem_id[ACPI_OEM_ID_SIZE]; - u8 revision; - u32 rsdt_physical_address; -}; - -/* Standalone struct for the extended part of the RSDP (ACPI 2.0+) */ - -struct acpi_rsdp_extension { - u32 length; - u64 xsdt_physical_address; - u8 extended_checksum; - u8 reserved[3]; -}; - -/******************************************************************************* - * - * RSDT/XSDT - Root System Description Tables - * Version 1 (both) - * - ******************************************************************************/ - -struct acpi_table_rsdt { - struct acpi_table_header header; /* Common ACPI table header */ - u32 table_offset_entry[1]; /* Array of pointers to ACPI tables */ -}; - -struct acpi_table_xsdt { - struct acpi_table_header header; /* Common ACPI table header */ - u64 table_offset_entry[1]; /* Array of pointers to ACPI tables */ -}; - -#define ACPI_RSDT_ENTRY_SIZE (sizeof (u32)) -#define ACPI_XSDT_ENTRY_SIZE (sizeof (u64)) - -/******************************************************************************* - * - * FACS - Firmware ACPI Control Structure (FACS) - * - ******************************************************************************/ - -struct acpi_table_facs { - char signature[4]; /* ASCII table signature */ - u32 length; /* Length of structure, in bytes */ - u32 hardware_signature; /* Hardware configuration signature */ - u32 firmware_waking_vector; /* 32-bit physical address of the Firmware Waking Vector */ - u32 global_lock; /* Global Lock for shared hardware resources */ - u32 flags; - u64 xfirmware_waking_vector; /* 64-bit version of the Firmware Waking Vector (ACPI 2.0+) */ - u8 version; /* Version of this table (ACPI 2.0+) */ - u8 reserved[3]; /* Reserved, must be zero */ - u32 ospm_flags; /* Flags to be set by OSPM (ACPI 4.0) */ - u8 reserved1[24]; /* Reserved, must be zero */ -}; - -/* Masks for global_lock flag field above */ - -#define ACPI_GLOCK_PENDING (1) /* 00: Pending global lock ownership */ -#define ACPI_GLOCK_OWNED (1<<1) /* 01: Global lock is owned */ - -/* Masks for Flags field above */ - -#define ACPI_FACS_S4_BIOS_PRESENT (1) /* 00: S4BIOS support is present */ -#define ACPI_FACS_64BIT_WAKE (1<<1) /* 01: 64-bit wake vector supported (ACPI 4.0) */ - -/* Masks for ospm_flags field above */ - -#define ACPI_FACS_64BIT_ENVIRONMENT (1) /* 00: 64-bit wake environment is required (ACPI 4.0) */ - -/******************************************************************************* - * - * FADT - Fixed ACPI Description Table (Signature "FACP") - * Version 4 - * - ******************************************************************************/ - -/* Fields common to all versions of the FADT */ - -struct acpi_table_fadt { - struct acpi_table_header header; /* Common ACPI table header */ - u32 facs; /* 32-bit physical address of FACS */ - u32 dsdt; /* 32-bit physical address of DSDT */ - u8 model; /* System Interrupt Model (ACPI 1.0) - not used in ACPI 2.0+ */ - u8 preferred_profile; /* Conveys preferred power management profile to OSPM. */ - u16 sci_interrupt; /* System vector of SCI interrupt */ - u32 smi_command; /* 32-bit Port address of SMI command port */ - u8 acpi_enable; /* Value to write to SMI_CMD to enable ACPI */ - u8 acpi_disable; /* Value to write to SMI_CMD to disable ACPI */ - u8 s4_bios_request; /* Value to write to SMI_CMD to enter S4BIOS state */ - u8 pstate_control; /* Processor performance state control */ - u32 pm1a_event_block; /* 32-bit port address of Power Mgt 1a Event Reg Blk */ - u32 pm1b_event_block; /* 32-bit port address of Power Mgt 1b Event Reg Blk */ - u32 pm1a_control_block; /* 32-bit port address of Power Mgt 1a Control Reg Blk */ - u32 pm1b_control_block; /* 32-bit port address of Power Mgt 1b Control Reg Blk */ - u32 pm2_control_block; /* 32-bit port address of Power Mgt 2 Control Reg Blk */ - u32 pm_timer_block; /* 32-bit port address of Power Mgt Timer Ctrl Reg Blk */ - u32 gpe0_block; /* 32-bit port address of General Purpose Event 0 Reg Blk */ - u32 gpe1_block; /* 32-bit port address of General Purpose Event 1 Reg Blk */ - u8 pm1_event_length; /* Byte Length of ports at pm1x_event_block */ - u8 pm1_control_length; /* Byte Length of ports at pm1x_control_block */ - u8 pm2_control_length; /* Byte Length of ports at pm2_control_block */ - u8 pm_timer_length; /* Byte Length of ports at pm_timer_block */ - u8 gpe0_block_length; /* Byte Length of ports at gpe0_block */ - u8 gpe1_block_length; /* Byte Length of ports at gpe1_block */ - u8 gpe1_base; /* Offset in GPE number space where GPE1 events start */ - u8 cst_control; /* Support for the _CST object and C-States change notification */ - u16 c2_latency; /* Worst case HW latency to enter/exit C2 state */ - u16 c3_latency; /* Worst case HW latency to enter/exit C3 state */ - u16 flush_size; /* Processor memory cache line width, in bytes */ - u16 flush_stride; /* Number of flush strides that need to be read */ - u8 duty_offset; /* Processor duty cycle index in processor P_CNT reg */ - u8 duty_width; /* Processor duty cycle value bit width in P_CNT register */ - u8 day_alarm; /* Index to day-of-month alarm in RTC CMOS RAM */ - u8 month_alarm; /* Index to month-of-year alarm in RTC CMOS RAM */ - u8 century; /* Index to century in RTC CMOS RAM */ - u16 boot_flags; /* IA-PC Boot Architecture Flags (see below for individual flags) */ - u8 reserved; /* Reserved, must be zero */ - u32 flags; /* Miscellaneous flag bits (see below for individual flags) */ - struct acpi_generic_address reset_register; /* 64-bit address of the Reset register */ - u8 reset_value; /* Value to write to the reset_register port to reset the system */ - u16 arm_boot_flags; /* ARM-Specific Boot Flags (see below for individual flags) (ACPI 5.1) */ - u8 minor_revision; /* FADT Minor Revision (ACPI 5.1) */ - u64 Xfacs; /* 64-bit physical address of FACS */ - u64 Xdsdt; /* 64-bit physical address of DSDT */ - struct acpi_generic_address xpm1a_event_block; /* 64-bit Extended Power Mgt 1a Event Reg Blk address */ - struct acpi_generic_address xpm1b_event_block; /* 64-bit Extended Power Mgt 1b Event Reg Blk address */ - struct acpi_generic_address xpm1a_control_block; /* 64-bit Extended Power Mgt 1a Control Reg Blk address */ - struct acpi_generic_address xpm1b_control_block; /* 64-bit Extended Power Mgt 1b Control Reg Blk address */ - struct acpi_generic_address xpm2_control_block; /* 64-bit Extended Power Mgt 2 Control Reg Blk address */ - struct acpi_generic_address xpm_timer_block; /* 64-bit Extended Power Mgt Timer Ctrl Reg Blk address */ - struct acpi_generic_address xgpe0_block; /* 64-bit Extended General Purpose Event 0 Reg Blk address */ - struct acpi_generic_address xgpe1_block; /* 64-bit Extended General Purpose Event 1 Reg Blk address */ - struct acpi_generic_address sleep_control; /* 64-bit Sleep Control register (ACPI 5.0) */ - struct acpi_generic_address sleep_status; /* 64-bit Sleep Status register (ACPI 5.0) */ - u64 hypervisor_id; /* Hypervisor Vendor ID (ACPI 6.0) */ -}; - -/* Masks for FADT IA-PC Boot Architecture Flags (boot_flags) [Vx]=Introduced in this FADT revision */ - -#define ACPI_FADT_LEGACY_DEVICES (1) /* 00: [V2] System has LPC or ISA bus devices */ -#define ACPI_FADT_8042 (1<<1) /* 01: [V3] System has an 8042 controller on port 60/64 */ -#define ACPI_FADT_NO_VGA (1<<2) /* 02: [V4] It is not safe to probe for VGA hardware */ -#define ACPI_FADT_NO_MSI (1<<3) /* 03: [V4] Message Signaled Interrupts (MSI) must not be enabled */ -#define ACPI_FADT_NO_ASPM (1<<4) /* 04: [V4] PCIe ASPM control must not be enabled */ -#define ACPI_FADT_NO_CMOS_RTC (1<<5) /* 05: [V5] No CMOS real-time clock present */ - -#define FADT2_REVISION_ID 3 - -/* Masks for FADT ARM Boot Architecture Flags (arm_boot_flags) ACPI 5.1 */ - -#define ACPI_FADT_PSCI_COMPLIANT (1) /* 00: [V5+] PSCI 0.2+ is implemented */ -#define ACPI_FADT_PSCI_USE_HVC (1<<1) /* 01: [V5+] HVC must be used instead of SMC as the PSCI conduit */ - -/* Masks for FADT flags */ - -#define ACPI_FADT_WBINVD (1) /* 00: [V1] The WBINVD instruction works properly */ -#define ACPI_FADT_WBINVD_FLUSH (1<<1) /* 01: [V1] WBINVD flushes but does not invalidate caches */ -#define ACPI_FADT_C1_SUPPORTED (1<<2) /* 02: [V1] All processors support C1 state */ -#define ACPI_FADT_C2_MP_SUPPORTED (1<<3) /* 03: [V1] C2 state works on MP system */ -#define ACPI_FADT_POWER_BUTTON (1<<4) /* 04: [V1] Power button is handled as a control method device */ -#define ACPI_FADT_SLEEP_BUTTON (1<<5) /* 05: [V1] Sleep button is handled as a control method device */ -#define ACPI_FADT_FIXED_RTC (1<<6) /* 06: [V1] RTC wakeup status is not in fixed register space */ -#define ACPI_FADT_S4_RTC_WAKE (1<<7) /* 07: [V1] RTC alarm can wake system from S4 */ -#define ACPI_FADT_32BIT_TIMER (1<<8) /* 08: [V1] ACPI timer width is 32-bit (0=24-bit) */ -#define ACPI_FADT_DOCKING_SUPPORTED (1<<9) /* 09: [V1] Docking supported */ -#define ACPI_FADT_RESET_REGISTER (1<<10) /* 10: [V2] System reset via the FADT RESET_REG supported */ -#define ACPI_FADT_SEALED_CASE (1<<11) /* 11: [V3] No internal expansion capabilities and case is sealed */ -#define ACPI_FADT_HEADLESS (1<<12) /* 12: [V3] No local video capabilities or local input devices */ -#define ACPI_FADT_SLEEP_TYPE (1<<13) /* 13: [V3] Must execute native instruction after writing SLP_TYPx register */ -#define ACPI_FADT_PCI_EXPRESS_WAKE (1<<14) /* 14: [V4] System supports PCIEXP_WAKE (STS/EN) bits (ACPI 3.0) */ -#define ACPI_FADT_PLATFORM_CLOCK (1<<15) /* 15: [V4] OSPM should use platform-provided timer (ACPI 3.0) */ -#define ACPI_FADT_S4_RTC_VALID (1<<16) /* 16: [V4] Contents of RTC_STS valid after S4 wake (ACPI 3.0) */ -#define ACPI_FADT_REMOTE_POWER_ON (1<<17) /* 17: [V4] System is compatible with remote power on (ACPI 3.0) */ -#define ACPI_FADT_APIC_CLUSTER (1<<18) /* 18: [V4] All local APICs must use cluster model (ACPI 3.0) */ -#define ACPI_FADT_APIC_PHYSICAL (1<<19) /* 19: [V4] All local xAPICs must use physical dest mode (ACPI 3.0) */ -#define ACPI_FADT_HW_REDUCED (1<<20) /* 20: [V5] ACPI hardware is not implemented (ACPI 5.0) */ -#define ACPI_FADT_LOW_POWER_S0 (1<<21) /* 21: [V5] S0 power savings are equal or better than S3 (ACPI 5.0) */ - -/* Values for preferred_profile (Preferred Power Management Profiles) */ - -enum acpi_preferred_pm_profiles { - PM_UNSPECIFIED = 0, - PM_DESKTOP = 1, - PM_MOBILE = 2, - PM_WORKSTATION = 3, - PM_ENTERPRISE_SERVER = 4, - PM_SOHO_SERVER = 5, - PM_APPLIANCE_PC = 6, - PM_PERFORMANCE_SERVER = 7, - PM_TABLET = 8 -}; - -/* Values for sleep_status and sleep_control registers (V5+ FADT) */ - -#define ACPI_X_WAKE_STATUS 0x80 -#define ACPI_X_SLEEP_TYPE_MASK 0x1C -#define ACPI_X_SLEEP_TYPE_POSITION 0x02 -#define ACPI_X_SLEEP_ENABLE 0x20 - -/* Reset to default packing */ - -#pragma pack() - -/* - * Internal table-related structures - */ -union acpi_name_union { - u32 integer; - char ascii[4]; -}; - -/* Internal ACPI Table Descriptor. One per ACPI table. */ - -struct acpi_table_desc { - acpi_physical_address address; - struct acpi_table_header *pointer; - u32 length; /* Length fixed at 32 bits (fixed in table header) */ - union acpi_name_union signature; - acpi_owner_id owner_id; - u8 flags; -}; - -/* Masks for Flags field above */ - -#define ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL (0) /* Virtual address, external maintained */ -#define ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL (1) /* Physical address, internally mapped */ -#define ACPI_TABLE_ORIGIN_INTERNAL_VIRTUAL (2) /* Virtual address, internallly allocated */ -#define ACPI_TABLE_ORIGIN_MASK (3) -#define ACPI_TABLE_IS_LOADED (8) - -/* - * Get the remaining ACPI tables - */ -#include -#include -#include - -/* Macros used to generate offsets to specific table fields */ - -#define ACPI_FADT_OFFSET(f) (u16) ACPI_OFFSET (struct acpi_table_fadt, f) - -/* - * Sizes of the various flavors of FADT. We need to look closely - * at the FADT length because the version number essentially tells - * us nothing because of many BIOS bugs where the version does not - * match the expected length. In other words, the length of the - * FADT is the bottom line as to what the version really is. - * - * For reference, the values below are as follows: - * FADT V1 size: 0x074 - * FADT V2 size: 0x084 - * FADT V3 size: 0x0F4 - * FADT V4 size: 0x0F4 - * FADT V5 size: 0x10C - * FADT V6 size: 0x114 - */ -#define ACPI_FADT_V1_SIZE (u32) (ACPI_FADT_OFFSET (flags) + 4) -#define ACPI_FADT_V2_SIZE (u32) (ACPI_FADT_OFFSET (minor_revision) + 1) -#define ACPI_FADT_V3_SIZE (u32) (ACPI_FADT_OFFSET (sleep_control)) -#define ACPI_FADT_V5_SIZE (u32) (ACPI_FADT_OFFSET (hypervisor_id)) -#define ACPI_FADT_V6_SIZE (u32) (sizeof (struct acpi_table_fadt)) - -#endif /* __ACTBL_H__ */ diff --git a/drivers/include/acpi/actbl1.h b/drivers/include/acpi/actbl1.h deleted file mode 100644 index 16e013600c..0000000000 --- a/drivers/include/acpi/actbl1.h +++ /dev/null @@ -1,1211 +0,0 @@ -/****************************************************************************** - * - * Name: actbl1.h - Additional ACPI table definitions - * - *****************************************************************************/ - -/* - * Copyright (C) 2000 - 2016, 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 __ACTBL1_H__ -#define __ACTBL1_H__ - -/******************************************************************************* - * - * Additional ACPI Tables (1) - * - * These tables are not consumed directly by the ACPICA subsystem, but are - * included here to support device drivers and the AML disassembler. - * - * The tables in this file are fully defined within the ACPI specification. - * - ******************************************************************************/ - -/* - * Values for description table header signatures for tables defined in this - * file. Useful because they make it more difficult to inadvertently type in - * the wrong signature. - */ -#define ACPI_SIG_BERT "BERT" /* Boot Error Record Table */ -#define ACPI_SIG_CPEP "CPEP" /* Corrected Platform Error Polling table */ -#define ACPI_SIG_ECDT "ECDT" /* Embedded Controller Boot Resources Table */ -#define ACPI_SIG_EINJ "EINJ" /* Error Injection table */ -#define ACPI_SIG_ERST "ERST" /* Error Record Serialization Table */ -#define ACPI_SIG_HEST "HEST" /* Hardware Error Source Table */ -#define ACPI_SIG_MADT "APIC" /* Multiple APIC Description Table */ -#define ACPI_SIG_MSCT "MSCT" /* Maximum System Characteristics Table */ -#define ACPI_SIG_SBST "SBST" /* Smart Battery Specification Table */ -#define ACPI_SIG_SLIT "SLIT" /* System Locality Distance Information Table */ -#define ACPI_SIG_SRAT "SRAT" /* System Resource Affinity Table */ -#define ACPI_SIG_NFIT "NFIT" /* NVDIMM Firmware Interface Table */ - -/* - * All tables must be byte-packed to match the ACPI specification, since - * the tables are provided by the system BIOS. - */ -#pragma pack(1) - -/* - * Note: C bitfields are not used for this reason: - * - * "Bitfields are great and easy to read, but unfortunately the C language - * does not specify the layout of bitfields in memory, which means they are - * essentially useless for dealing with packed data in on-disk formats or - * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me, - * this decision was a design error in C. Ritchie could have picked an order - * and stuck with it." Norman Ramsey. - * See http://stackoverflow.com/a/1053662/41661 - */ - -/******************************************************************************* - * - * Common subtable headers - * - ******************************************************************************/ - -/* Generic subtable header (used in MADT, SRAT, etc.) */ - -struct acpi_subtable_header { - u8 type; - u8 length; -}; - -/* Subtable header for WHEA tables (EINJ, ERST, WDAT) */ - -struct acpi_whea_header { - u8 action; - u8 instruction; - u8 flags; - u8 reserved; - struct acpi_generic_address register_region; - u64 value; /* Value used with Read/Write register */ - u64 mask; /* Bitmask required for this register instruction */ -}; - -/******************************************************************************* - * - * BERT - Boot Error Record Table (ACPI 4.0) - * Version 1 - * - ******************************************************************************/ - -struct acpi_table_bert { - struct acpi_table_header header; /* Common ACPI table header */ - u32 region_length; /* Length of the boot error region */ - u64 address; /* Physical address of the error region */ -}; - -/* Boot Error Region (not a subtable, pointed to by Address field above) */ - -struct acpi_bert_region { - u32 block_status; /* Type of error information */ - u32 raw_data_offset; /* Offset to raw error data */ - u32 raw_data_length; /* Length of raw error data */ - u32 data_length; /* Length of generic error data */ - u32 error_severity; /* Severity code */ -}; - -/* Values for block_status flags above */ - -#define ACPI_BERT_UNCORRECTABLE (1) -#define ACPI_BERT_CORRECTABLE (1<<1) -#define ACPI_BERT_MULTIPLE_UNCORRECTABLE (1<<2) -#define ACPI_BERT_MULTIPLE_CORRECTABLE (1<<3) -#define ACPI_BERT_ERROR_ENTRY_COUNT (0xFF<<4) /* 8 bits, error count */ - -/* Values for error_severity above */ - -enum acpi_bert_error_severity { - ACPI_BERT_ERROR_CORRECTABLE = 0, - ACPI_BERT_ERROR_FATAL = 1, - ACPI_BERT_ERROR_CORRECTED = 2, - ACPI_BERT_ERROR_NONE = 3, - ACPI_BERT_ERROR_RESERVED = 4 /* 4 and greater are reserved */ -}; - -/* - * Note: The generic error data that follows the error_severity field above - * uses the struct acpi_hest_generic_data defined under the HEST table below - */ - -/******************************************************************************* - * - * CPEP - Corrected Platform Error Polling table (ACPI 4.0) - * Version 1 - * - ******************************************************************************/ - -struct acpi_table_cpep { - struct acpi_table_header header; /* Common ACPI table header */ - u64 reserved; -}; - -/* Subtable */ - -struct acpi_cpep_polling { - struct acpi_subtable_header header; - u8 id; /* Processor ID */ - u8 eid; /* Processor EID */ - u32 interval; /* Polling interval (msec) */ -}; - -/******************************************************************************* - * - * ECDT - Embedded Controller Boot Resources Table - * Version 1 - * - ******************************************************************************/ - -struct acpi_table_ecdt { - struct acpi_table_header header; /* Common ACPI table header */ - struct acpi_generic_address control; /* Address of EC command/status register */ - struct acpi_generic_address data; /* Address of EC data register */ - u32 uid; /* Unique ID - must be same as the EC _UID method */ - u8 gpe; /* The GPE for the EC */ - u8 id[1]; /* Full namepath of the EC in the ACPI namespace */ -}; - -/******************************************************************************* - * - * EINJ - Error Injection Table (ACPI 4.0) - * Version 1 - * - ******************************************************************************/ - -struct acpi_table_einj { - struct acpi_table_header header; /* Common ACPI table header */ - u32 header_length; - u8 flags; - u8 reserved[3]; - u32 entries; -}; - -/* EINJ Injection Instruction Entries (actions) */ - -struct acpi_einj_entry { - struct acpi_whea_header whea_header; /* Common header for WHEA tables */ -}; - -/* Masks for Flags field above */ - -#define ACPI_EINJ_PRESERVE (1) - -/* Values for Action field above */ - -enum acpi_einj_actions { - ACPI_EINJ_BEGIN_OPERATION = 0, - ACPI_EINJ_GET_TRIGGER_TABLE = 1, - ACPI_EINJ_SET_ERROR_TYPE = 2, - ACPI_EINJ_GET_ERROR_TYPE = 3, - ACPI_EINJ_END_OPERATION = 4, - ACPI_EINJ_EXECUTE_OPERATION = 5, - ACPI_EINJ_CHECK_BUSY_STATUS = 6, - ACPI_EINJ_GET_COMMAND_STATUS = 7, - ACPI_EINJ_SET_ERROR_TYPE_WITH_ADDRESS = 8, - ACPI_EINJ_ACTION_RESERVED = 9, /* 9 and greater are reserved */ - ACPI_EINJ_TRIGGER_ERROR = 0xFF /* Except for this value */ -}; - -/* Values for Instruction field above */ - -enum acpi_einj_instructions { - ACPI_EINJ_READ_REGISTER = 0, - ACPI_EINJ_READ_REGISTER_VALUE = 1, - ACPI_EINJ_WRITE_REGISTER = 2, - ACPI_EINJ_WRITE_REGISTER_VALUE = 3, - ACPI_EINJ_NOOP = 4, - ACPI_EINJ_FLUSH_CACHELINE = 5, - ACPI_EINJ_INSTRUCTION_RESERVED = 6 /* 6 and greater are reserved */ -}; - -struct acpi_einj_error_type_with_addr { - u32 error_type; - u32 vendor_struct_offset; - u32 flags; - u32 apic_id; - u64 address; - u64 range; - u32 pcie_id; -}; - -struct acpi_einj_vendor { - u32 length; - u32 pcie_id; - u16 vendor_id; - u16 device_id; - u8 revision_id; - u8 reserved[3]; -}; - -/* EINJ Trigger Error Action Table */ - -struct acpi_einj_trigger { - u32 header_size; - u32 revision; - u32 table_size; - u32 entry_count; -}; - -/* Command status return values */ - -enum acpi_einj_command_status { - ACPI_EINJ_SUCCESS = 0, - ACPI_EINJ_FAILURE = 1, - ACPI_EINJ_INVALID_ACCESS = 2, - ACPI_EINJ_STATUS_RESERVED = 3 /* 3 and greater are reserved */ -}; - -/* Error types returned from ACPI_EINJ_GET_ERROR_TYPE (bitfield) */ - -#define ACPI_EINJ_PROCESSOR_CORRECTABLE (1) -#define ACPI_EINJ_PROCESSOR_UNCORRECTABLE (1<<1) -#define ACPI_EINJ_PROCESSOR_FATAL (1<<2) -#define ACPI_EINJ_MEMORY_CORRECTABLE (1<<3) -#define ACPI_EINJ_MEMORY_UNCORRECTABLE (1<<4) -#define ACPI_EINJ_MEMORY_FATAL (1<<5) -#define ACPI_EINJ_PCIX_CORRECTABLE (1<<6) -#define ACPI_EINJ_PCIX_UNCORRECTABLE (1<<7) -#define ACPI_EINJ_PCIX_FATAL (1<<8) -#define ACPI_EINJ_PLATFORM_CORRECTABLE (1<<9) -#define ACPI_EINJ_PLATFORM_UNCORRECTABLE (1<<10) -#define ACPI_EINJ_PLATFORM_FATAL (1<<11) -#define ACPI_EINJ_VENDOR_DEFINED (1<<31) - -/******************************************************************************* - * - * ERST - Error Record Serialization Table (ACPI 4.0) - * Version 1 - * - ******************************************************************************/ - -struct acpi_table_erst { - struct acpi_table_header header; /* Common ACPI table header */ - u32 header_length; - u32 reserved; - u32 entries; -}; - -/* ERST Serialization Entries (actions) */ - -struct acpi_erst_entry { - struct acpi_whea_header whea_header; /* Common header for WHEA tables */ -}; - -/* Masks for Flags field above */ - -#define ACPI_ERST_PRESERVE (1) - -/* Values for Action field above */ - -enum acpi_erst_actions { - ACPI_ERST_BEGIN_WRITE = 0, - ACPI_ERST_BEGIN_READ = 1, - ACPI_ERST_BEGIN_CLEAR = 2, - ACPI_ERST_END = 3, - ACPI_ERST_SET_RECORD_OFFSET = 4, - ACPI_ERST_EXECUTE_OPERATION = 5, - ACPI_ERST_CHECK_BUSY_STATUS = 6, - ACPI_ERST_GET_COMMAND_STATUS = 7, - ACPI_ERST_GET_RECORD_ID = 8, - ACPI_ERST_SET_RECORD_ID = 9, - ACPI_ERST_GET_RECORD_COUNT = 10, - ACPI_ERST_BEGIN_DUMMY_WRIITE = 11, - ACPI_ERST_NOT_USED = 12, - ACPI_ERST_GET_ERROR_RANGE = 13, - ACPI_ERST_GET_ERROR_LENGTH = 14, - ACPI_ERST_GET_ERROR_ATTRIBUTES = 15, - ACPI_ERST_ACTION_RESERVED = 16 /* 16 and greater are reserved */ -}; - -/* Values for Instruction field above */ - -enum acpi_erst_instructions { - ACPI_ERST_READ_REGISTER = 0, - ACPI_ERST_READ_REGISTER_VALUE = 1, - ACPI_ERST_WRITE_REGISTER = 2, - ACPI_ERST_WRITE_REGISTER_VALUE = 3, - ACPI_ERST_NOOP = 4, - ACPI_ERST_LOAD_VAR1 = 5, - ACPI_ERST_LOAD_VAR2 = 6, - ACPI_ERST_STORE_VAR1 = 7, - ACPI_ERST_ADD = 8, - ACPI_ERST_SUBTRACT = 9, - ACPI_ERST_ADD_VALUE = 10, - ACPI_ERST_SUBTRACT_VALUE = 11, - ACPI_ERST_STALL = 12, - ACPI_ERST_STALL_WHILE_TRUE = 13, - ACPI_ERST_SKIP_NEXT_IF_TRUE = 14, - ACPI_ERST_GOTO = 15, - ACPI_ERST_SET_SRC_ADDRESS_BASE = 16, - ACPI_ERST_SET_DST_ADDRESS_BASE = 17, - ACPI_ERST_MOVE_DATA = 18, - ACPI_ERST_INSTRUCTION_RESERVED = 19 /* 19 and greater are reserved */ -}; - -/* Command status return values */ - -enum acpi_erst_command_status { - ACPI_ERST_SUCESS = 0, - ACPI_ERST_NO_SPACE = 1, - ACPI_ERST_NOT_AVAILABLE = 2, - ACPI_ERST_FAILURE = 3, - ACPI_ERST_RECORD_EMPTY = 4, - ACPI_ERST_NOT_FOUND = 5, - ACPI_ERST_STATUS_RESERVED = 6 /* 6 and greater are reserved */ -}; - -/* Error Record Serialization Information */ - -struct acpi_erst_info { - u16 signature; /* Should be "ER" */ - u8 data[48]; -}; - -/******************************************************************************* - * - * HEST - Hardware Error Source Table (ACPI 4.0) - * Version 1 - * - ******************************************************************************/ - -struct acpi_table_hest { - struct acpi_table_header header; /* Common ACPI table header */ - u32 error_source_count; -}; - -/* HEST subtable header */ - -struct acpi_hest_header { - u16 type; - u16 source_id; -}; - -/* Values for Type field above for subtables */ - -enum acpi_hest_types { - ACPI_HEST_TYPE_IA32_CHECK = 0, - ACPI_HEST_TYPE_IA32_CORRECTED_CHECK = 1, - ACPI_HEST_TYPE_IA32_NMI = 2, - ACPI_HEST_TYPE_NOT_USED3 = 3, - ACPI_HEST_TYPE_NOT_USED4 = 4, - ACPI_HEST_TYPE_NOT_USED5 = 5, - ACPI_HEST_TYPE_AER_ROOT_PORT = 6, - ACPI_HEST_TYPE_AER_ENDPOINT = 7, - ACPI_HEST_TYPE_AER_BRIDGE = 8, - ACPI_HEST_TYPE_GENERIC_ERROR = 9, - ACPI_HEST_TYPE_RESERVED = 10 /* 10 and greater are reserved */ -}; - -/* - * HEST substructures contained in subtables - */ - -/* - * IA32 Error Bank(s) - Follows the struct acpi_hest_ia_machine_check and - * struct acpi_hest_ia_corrected structures. - */ -struct acpi_hest_ia_error_bank { - u8 bank_number; - u8 clear_status_on_init; - u8 status_format; - u8 reserved; - u32 control_register; - u64 control_data; - u32 status_register; - u32 address_register; - u32 misc_register; -}; - -/* Common HEST sub-structure for PCI/AER structures below (6,7,8) */ - -struct acpi_hest_aer_common { - u16 reserved1; - u8 flags; - u8 enabled; - u32 records_to_preallocate; - u32 max_sections_per_record; - u32 bus; /* Bus and Segment numbers */ - u16 device; - u16 function; - u16 device_control; - u16 reserved2; - u32 uncorrectable_mask; - u32 uncorrectable_severity; - u32 correctable_mask; - u32 advanced_capabilities; -}; - -/* Masks for HEST Flags fields */ - -#define ACPI_HEST_FIRMWARE_FIRST (1) -#define ACPI_HEST_GLOBAL (1<<1) - -/* - * Macros to access the bus/segment numbers in Bus field above: - * Bus number is encoded in bits 7:0 - * Segment number is encoded in bits 23:8 - */ -#define ACPI_HEST_BUS(bus) ((bus) & 0xFF) -#define ACPI_HEST_SEGMENT(bus) (((bus) >> 8) & 0xFFFF) - -/* Hardware Error Notification */ - -struct acpi_hest_notify { - u8 type; - u8 length; - u16 config_write_enable; - u32 poll_interval; - u32 vector; - u32 polling_threshold_value; - u32 polling_threshold_window; - u32 error_threshold_value; - u32 error_threshold_window; -}; - -/* Values for Notify Type field above */ - -enum acpi_hest_notify_types { - ACPI_HEST_NOTIFY_POLLED = 0, - ACPI_HEST_NOTIFY_EXTERNAL = 1, - ACPI_HEST_NOTIFY_LOCAL = 2, - ACPI_HEST_NOTIFY_SCI = 3, - ACPI_HEST_NOTIFY_NMI = 4, - ACPI_HEST_NOTIFY_CMCI = 5, /* ACPI 5.0 */ - ACPI_HEST_NOTIFY_MCE = 6, /* ACPI 5.0 */ - ACPI_HEST_NOTIFY_RESERVED = 7 /* 7 and greater are reserved */ -}; - -/* Values for config_write_enable bitfield above */ - -#define ACPI_HEST_TYPE (1) -#define ACPI_HEST_POLL_INTERVAL (1<<1) -#define ACPI_HEST_POLL_THRESHOLD_VALUE (1<<2) -#define ACPI_HEST_POLL_THRESHOLD_WINDOW (1<<3) -#define ACPI_HEST_ERR_THRESHOLD_VALUE (1<<4) -#define ACPI_HEST_ERR_THRESHOLD_WINDOW (1<<5) - -/* - * HEST subtables - */ - -/* 0: IA32 Machine Check Exception */ - -struct acpi_hest_ia_machine_check { - struct acpi_hest_header header; - u16 reserved1; - u8 flags; - u8 enabled; - u32 records_to_preallocate; - u32 max_sections_per_record; - u64 global_capability_data; - u64 global_control_data; - u8 num_hardware_banks; - u8 reserved3[7]; -}; - -/* 1: IA32 Corrected Machine Check */ - -struct acpi_hest_ia_corrected { - struct acpi_hest_header header; - u16 reserved1; - u8 flags; - u8 enabled; - u32 records_to_preallocate; - u32 max_sections_per_record; - struct acpi_hest_notify notify; - u8 num_hardware_banks; - u8 reserved2[3]; -}; - -/* 2: IA32 Non-Maskable Interrupt */ - -struct acpi_hest_ia_nmi { - struct acpi_hest_header header; - u32 reserved; - u32 records_to_preallocate; - u32 max_sections_per_record; - u32 max_raw_data_length; -}; - -/* 3,4,5: Not used */ - -/* 6: PCI Express Root Port AER */ - -struct acpi_hest_aer_root { - struct acpi_hest_header header; - struct acpi_hest_aer_common aer; - u32 root_error_command; -}; - -/* 7: PCI Express AER (AER Endpoint) */ - -struct acpi_hest_aer { - struct acpi_hest_header header; - struct acpi_hest_aer_common aer; -}; - -/* 8: PCI Express/PCI-X Bridge AER */ - -struct acpi_hest_aer_bridge { - struct acpi_hest_header header; - struct acpi_hest_aer_common aer; - u32 uncorrectable_mask2; - u32 uncorrectable_severity2; - u32 advanced_capabilities2; -}; - -/* 9: Generic Hardware Error Source */ - -struct acpi_hest_generic { - struct acpi_hest_header header; - u16 related_source_id; - u8 reserved; - u8 enabled; - u32 records_to_preallocate; - u32 max_sections_per_record; - u32 max_raw_data_length; - struct acpi_generic_address error_status_address; - struct acpi_hest_notify notify; - u32 error_block_length; -}; - -/* Generic Error Status block */ - -struct acpi_hest_generic_status { - u32 block_status; - u32 raw_data_offset; - u32 raw_data_length; - u32 data_length; - u32 error_severity; -}; - -/* Values for block_status flags above */ - -#define ACPI_HEST_UNCORRECTABLE (1) -#define ACPI_HEST_CORRECTABLE (1<<1) -#define ACPI_HEST_MULTIPLE_UNCORRECTABLE (1<<2) -#define ACPI_HEST_MULTIPLE_CORRECTABLE (1<<3) -#define ACPI_HEST_ERROR_ENTRY_COUNT (0xFF<<4) /* 8 bits, error count */ - -/* Generic Error Data entry */ - -struct acpi_hest_generic_data { - u8 section_type[16]; - u32 error_severity; - u16 revision; - u8 validation_bits; - u8 flags; - u32 error_data_length; - u8 fru_id[16]; - u8 fru_text[20]; -}; - -/******************************************************************************* - * - * MADT - Multiple APIC Description Table - * Version 3 - * - ******************************************************************************/ - -struct acpi_table_madt { - struct acpi_table_header header; /* Common ACPI table header */ - u32 address; /* Physical address of local APIC */ - u32 flags; -}; - -/* Masks for Flags field above */ - -#define ACPI_MADT_PCAT_COMPAT (1) /* 00: System also has dual 8259s */ - -/* Values for PCATCompat flag */ - -#define ACPI_MADT_DUAL_PIC 0 -#define ACPI_MADT_MULTIPLE_APIC 1 - -/* Values for MADT subtable type in struct acpi_subtable_header */ - -enum acpi_madt_type { - ACPI_MADT_TYPE_LOCAL_APIC = 0, - ACPI_MADT_TYPE_IO_APIC = 1, - ACPI_MADT_TYPE_INTERRUPT_OVERRIDE = 2, - ACPI_MADT_TYPE_NMI_SOURCE = 3, - ACPI_MADT_TYPE_LOCAL_APIC_NMI = 4, - ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE = 5, - ACPI_MADT_TYPE_IO_SAPIC = 6, - ACPI_MADT_TYPE_LOCAL_SAPIC = 7, - ACPI_MADT_TYPE_INTERRUPT_SOURCE = 8, - ACPI_MADT_TYPE_LOCAL_X2APIC = 9, - ACPI_MADT_TYPE_LOCAL_X2APIC_NMI = 10, - ACPI_MADT_TYPE_GENERIC_INTERRUPT = 11, - ACPI_MADT_TYPE_GENERIC_DISTRIBUTOR = 12, - ACPI_MADT_TYPE_GENERIC_MSI_FRAME = 13, - ACPI_MADT_TYPE_GENERIC_REDISTRIBUTOR = 14, - ACPI_MADT_TYPE_GENERIC_TRANSLATOR = 15, - ACPI_MADT_TYPE_RESERVED = 16 /* 16 and greater are reserved */ -}; - -/* - * MADT Subtables, correspond to Type in struct acpi_subtable_header - */ - -/* 0: Processor Local APIC */ - -struct acpi_madt_local_apic { - struct acpi_subtable_header header; - u8 processor_id; /* ACPI processor id */ - u8 id; /* Processor's local APIC id */ - u32 lapic_flags; -}; - -/* 1: IO APIC */ - -struct acpi_madt_io_apic { - struct acpi_subtable_header header; - u8 id; /* I/O APIC ID */ - u8 reserved; /* reserved - must be zero */ - u32 address; /* APIC physical address */ - u32 global_irq_base; /* Global system interrupt where INTI lines start */ -}; - -/* 2: Interrupt Override */ - -struct acpi_madt_interrupt_override { - struct acpi_subtable_header header; - u8 bus; /* 0 - ISA */ - u8 source_irq; /* Interrupt source (IRQ) */ - u32 global_irq; /* Global system interrupt */ - u16 inti_flags; -}; - -/* 3: NMI Source */ - -struct acpi_madt_nmi_source { - struct acpi_subtable_header header; - u16 inti_flags; - u32 global_irq; /* Global system interrupt */ -}; - -/* 4: Local APIC NMI */ - -struct acpi_madt_local_apic_nmi { - struct acpi_subtable_header header; - u8 processor_id; /* ACPI processor id */ - u16 inti_flags; - u8 lint; /* LINTn to which NMI is connected */ -}; - -/* 5: Address Override */ - -struct acpi_madt_local_apic_override { - struct acpi_subtable_header header; - u16 reserved; /* Reserved, must be zero */ - u64 address; /* APIC physical address */ -}; - -/* 6: I/O Sapic */ - -struct acpi_madt_io_sapic { - struct acpi_subtable_header header; - u8 id; /* I/O SAPIC ID */ - u8 reserved; /* Reserved, must be zero */ - u32 global_irq_base; /* Global interrupt for SAPIC start */ - u64 address; /* SAPIC physical address */ -}; - -/* 7: Local Sapic */ - -struct acpi_madt_local_sapic { - struct acpi_subtable_header header; - u8 processor_id; /* ACPI processor id */ - u8 id; /* SAPIC ID */ - u8 eid; /* SAPIC EID */ - u8 reserved[3]; /* Reserved, must be zero */ - u32 lapic_flags; - u32 uid; /* Numeric UID - ACPI 3.0 */ - char uid_string[1]; /* String UID - ACPI 3.0 */ -}; - -/* 8: Platform Interrupt Source */ - -struct acpi_madt_interrupt_source { - struct acpi_subtable_header header; - u16 inti_flags; - u8 type; /* 1=PMI, 2=INIT, 3=corrected */ - u8 id; /* Processor ID */ - u8 eid; /* Processor EID */ - u8 io_sapic_vector; /* Vector value for PMI interrupts */ - u32 global_irq; /* Global system interrupt */ - u32 flags; /* Interrupt Source Flags */ -}; - -/* Masks for Flags field above */ - -#define ACPI_MADT_CPEI_OVERRIDE (1) - -/* 9: Processor Local X2APIC (ACPI 4.0) */ - -struct acpi_madt_local_x2apic { - struct acpi_subtable_header header; - u16 reserved; /* reserved - must be zero */ - u32 local_apic_id; /* Processor x2APIC ID */ - u32 lapic_flags; - u32 uid; /* ACPI processor UID */ -}; - -/* 10: Local X2APIC NMI (ACPI 4.0) */ - -struct acpi_madt_local_x2apic_nmi { - struct acpi_subtable_header header; - u16 inti_flags; - u32 uid; /* ACPI processor UID */ - u8 lint; /* LINTn to which NMI is connected */ - u8 reserved[3]; /* reserved - must be zero */ -}; - -/* 11: Generic Interrupt (ACPI 5.0 + ACPI 6.0 changes) */ - -struct acpi_madt_generic_interrupt { - struct acpi_subtable_header header; - u16 reserved; /* reserved - must be zero */ - u32 cpu_interface_number; - u32 uid; - u32 flags; - u32 parking_version; - u32 performance_interrupt; - u64 parked_address; - u64 base_address; - u64 gicv_base_address; - u64 gich_base_address; - u32 vgic_interrupt; - u64 gicr_base_address; - u64 arm_mpidr; - u8 efficiency_class; - u8 reserved2[3]; -}; - -/* Masks for Flags field above */ - -/* ACPI_MADT_ENABLED (1) Processor is usable if set */ -#define ACPI_MADT_PERFORMANCE_IRQ_MODE (1<<1) /* 01: Performance Interrupt Mode */ -#define ACPI_MADT_VGIC_IRQ_MODE (1<<2) /* 02: VGIC Maintenance Interrupt mode */ - -/* 12: Generic Distributor (ACPI 5.0 + ACPI 6.0 changes) */ - -struct acpi_madt_generic_distributor { - struct acpi_subtable_header header; - u16 reserved; /* reserved - must be zero */ - u32 gic_id; - u64 base_address; - u32 global_irq_base; - u8 version; - u8 reserved2[3]; /* reserved - must be zero */ -}; - -/* Values for Version field above */ - -enum acpi_madt_gic_version { - ACPI_MADT_GIC_VERSION_NONE = 0, - ACPI_MADT_GIC_VERSION_V1 = 1, - ACPI_MADT_GIC_VERSION_V2 = 2, - ACPI_MADT_GIC_VERSION_V3 = 3, - ACPI_MADT_GIC_VERSION_V4 = 4, - ACPI_MADT_GIC_VERSION_RESERVED = 5 /* 5 and greater are reserved */ -}; - -/* 13: Generic MSI Frame (ACPI 5.1) */ - -struct acpi_madt_generic_msi_frame { - struct acpi_subtable_header header; - u16 reserved; /* reserved - must be zero */ - u32 msi_frame_id; - u64 base_address; - u32 flags; - u16 spi_count; - u16 spi_base; -}; - -/* Masks for Flags field above */ - -#define ACPI_MADT_OVERRIDE_SPI_VALUES (1) - -/* 14: Generic Redistributor (ACPI 5.1) */ - -struct acpi_madt_generic_redistributor { - struct acpi_subtable_header header; - u16 reserved; /* reserved - must be zero */ - u64 base_address; - u32 length; -}; - -/* 15: Generic Translator (ACPI 6.0) */ - -struct acpi_madt_generic_translator { - struct acpi_subtable_header header; - u16 reserved; /* reserved - must be zero */ - u32 translation_id; - u64 base_address; - u32 reserved2; -}; - -/* - * Common flags fields for MADT subtables - */ - -/* MADT Local APIC flags */ - -#define ACPI_MADT_ENABLED (1) /* 00: Processor is usable if set */ - -/* MADT MPS INTI flags (inti_flags) */ - -#define ACPI_MADT_POLARITY_MASK (3) /* 00-01: Polarity of APIC I/O input signals */ -#define ACPI_MADT_TRIGGER_MASK (3<<2) /* 02-03: Trigger mode of APIC input signals */ - -/* Values for MPS INTI flags */ - -#define ACPI_MADT_POLARITY_CONFORMS 0 -#define ACPI_MADT_POLARITY_ACTIVE_HIGH 1 -#define ACPI_MADT_POLARITY_RESERVED 2 -#define ACPI_MADT_POLARITY_ACTIVE_LOW 3 - -#define ACPI_MADT_TRIGGER_CONFORMS (0) -#define ACPI_MADT_TRIGGER_EDGE (1<<2) -#define ACPI_MADT_TRIGGER_RESERVED (2<<2) -#define ACPI_MADT_TRIGGER_LEVEL (3<<2) - -/******************************************************************************* - * - * MSCT - Maximum System Characteristics Table (ACPI 4.0) - * Version 1 - * - ******************************************************************************/ - -struct acpi_table_msct { - struct acpi_table_header header; /* Common ACPI table header */ - u32 proximity_offset; /* Location of proximity info struct(s) */ - u32 max_proximity_domains; /* Max number of proximity domains */ - u32 max_clock_domains; /* Max number of clock domains */ - u64 max_address; /* Max physical address in system */ -}; - -/* subtable - Maximum Proximity Domain Information. Version 1 */ - -struct acpi_msct_proximity { - u8 revision; - u8 length; - u32 range_start; /* Start of domain range */ - u32 range_end; /* End of domain range */ - u32 processor_capacity; - u64 memory_capacity; /* In bytes */ -}; - -/******************************************************************************* - * - * NFIT - NVDIMM Interface Table (ACPI 6.0) - * Version 1 - * - ******************************************************************************/ - -struct acpi_table_nfit { - struct acpi_table_header header; /* Common ACPI table header */ - u32 reserved; /* Reserved, must be zero */ -}; - -/* Subtable header for NFIT */ - -struct acpi_nfit_header { - u16 type; - u16 length; -}; - -/* Values for subtable type in struct acpi_nfit_header */ - -enum acpi_nfit_type { - ACPI_NFIT_TYPE_SYSTEM_ADDRESS = 0, - ACPI_NFIT_TYPE_MEMORY_MAP = 1, - ACPI_NFIT_TYPE_INTERLEAVE = 2, - ACPI_NFIT_TYPE_SMBIOS = 3, - ACPI_NFIT_TYPE_CONTROL_REGION = 4, - ACPI_NFIT_TYPE_DATA_REGION = 5, - ACPI_NFIT_TYPE_FLUSH_ADDRESS = 6, - ACPI_NFIT_TYPE_RESERVED = 7 /* 7 and greater are reserved */ -}; - -/* - * NFIT Subtables - */ - -/* 0: System Physical Address Range Structure */ - -struct acpi_nfit_system_address { - struct acpi_nfit_header header; - u16 range_index; - u16 flags; - u32 reserved; /* Reseved, must be zero */ - u32 proximity_domain; - u8 range_guid[16]; - u64 address; - u64 length; - u64 memory_mapping; -}; - -/* Flags */ - -#define ACPI_NFIT_ADD_ONLINE_ONLY (1) /* 00: Add/Online Operation Only */ -#define ACPI_NFIT_PROXIMITY_VALID (1<<1) /* 01: Proximity Domain Valid */ - -/* Range Type GUIDs appear in the include/acuuid.h file */ - -/* 1: Memory Device to System Address Range Map Structure */ - -struct acpi_nfit_memory_map { - struct acpi_nfit_header header; - u32 device_handle; - u16 physical_id; - u16 region_id; - u16 range_index; - u16 region_index; - u64 region_size; - u64 region_offset; - u64 address; - u16 interleave_index; - u16 interleave_ways; - u16 flags; - u16 reserved; /* Reserved, must be zero */ -}; - -/* Flags */ - -#define ACPI_NFIT_MEM_SAVE_FAILED (1) /* 00: Last SAVE to Memory Device failed */ -#define ACPI_NFIT_MEM_RESTORE_FAILED (1<<1) /* 01: Last RESTORE from Memory Device failed */ -#define ACPI_NFIT_MEM_FLUSH_FAILED (1<<2) /* 02: Platform flush failed */ -#define ACPI_NFIT_MEM_NOT_ARMED (1<<3) /* 03: Memory Device is not armed */ -#define ACPI_NFIT_MEM_HEALTH_OBSERVED (1<<4) /* 04: Memory Device observed SMART/health events */ -#define ACPI_NFIT_MEM_HEALTH_ENABLED (1<<5) /* 05: SMART/health events enabled */ - -/* 2: Interleave Structure */ - -struct acpi_nfit_interleave { - struct acpi_nfit_header header; - u16 interleave_index; - u16 reserved; /* Reserved, must be zero */ - u32 line_count; - u32 line_size; - u32 line_offset[1]; /* Variable length */ -}; - -/* 3: SMBIOS Management Information Structure */ - -struct acpi_nfit_smbios { - struct acpi_nfit_header header; - u32 reserved; /* Reserved, must be zero */ - u8 data[1]; /* Variable length */ -}; - -/* 4: NVDIMM Control Region Structure */ - -struct acpi_nfit_control_region { - struct acpi_nfit_header header; - u16 region_index; - u16 vendor_id; - u16 device_id; - u16 revision_id; - u16 subsystem_vendor_id; - u16 subsystem_device_id; - u16 subsystem_revision_id; - u8 reserved[6]; /* Reserved, must be zero */ - u32 serial_number; - u16 code; - u16 windows; - u64 window_size; - u64 command_offset; - u64 command_size; - u64 status_offset; - u64 status_size; - u16 flags; - u8 reserved1[6]; /* Reserved, must be zero */ -}; - -/* Flags */ - -#define ACPI_NFIT_CONTROL_BUFFERED (1) /* Block Data Windows implementation is buffered */ - -/* 5: NVDIMM Block Data Window Region Structure */ - -struct acpi_nfit_data_region { - struct acpi_nfit_header header; - u16 region_index; - u16 windows; - u64 offset; - u64 size; - u64 capacity; - u64 start_address; -}; - -/* 6: Flush Hint Address Structure */ - -struct acpi_nfit_flush_address { - struct acpi_nfit_header header; - u32 device_handle; - u16 hint_count; - u8 reserved[6]; /* Reserved, must be zero */ - u64 hint_address[1]; /* Variable length */ -}; - -/******************************************************************************* - * - * SBST - Smart Battery Specification Table - * Version 1 - * - ******************************************************************************/ - -struct acpi_table_sbst { - struct acpi_table_header header; /* Common ACPI table header */ - u32 warning_level; - u32 low_level; - u32 critical_level; -}; - -/******************************************************************************* - * - * SLIT - System Locality Distance Information Table - * Version 1 - * - ******************************************************************************/ - -struct acpi_table_slit { - struct acpi_table_header header; /* Common ACPI table header */ - u64 locality_count; - u8 entry[1]; /* Real size = localities^2 */ -}; - -/******************************************************************************* - * - * SRAT - System Resource Affinity Table - * Version 3 - * - ******************************************************************************/ - -struct acpi_table_srat { - struct acpi_table_header header; /* Common ACPI table header */ - u32 table_revision; /* Must be value '1' */ - u64 reserved; /* Reserved, must be zero */ -}; - -/* Values for subtable type in struct acpi_subtable_header */ - -enum acpi_srat_type { - ACPI_SRAT_TYPE_CPU_AFFINITY = 0, - ACPI_SRAT_TYPE_MEMORY_AFFINITY = 1, - ACPI_SRAT_TYPE_X2APIC_CPU_AFFINITY = 2, - ACPI_SRAT_TYPE_GICC_AFFINITY = 3, - ACPI_SRAT_TYPE_RESERVED = 4 /* 4 and greater are reserved */ -}; - -/* - * SRAT Subtables, correspond to Type in struct acpi_subtable_header - */ - -/* 0: Processor Local APIC/SAPIC Affinity */ - -struct acpi_srat_cpu_affinity { - struct acpi_subtable_header header; - u8 proximity_domain_lo; - u8 apic_id; - u32 flags; - u8 local_sapic_eid; - u8 proximity_domain_hi[3]; - u32 clock_domain; -}; - -/* Flags */ - -#define ACPI_SRAT_CPU_USE_AFFINITY (1) /* 00: Use affinity structure */ - -/* 1: Memory Affinity */ - -struct acpi_srat_mem_affinity { - struct acpi_subtable_header header; - u32 proximity_domain; - u16 reserved; /* Reserved, must be zero */ - u64 base_address; - u64 length; - u32 reserved1; - u32 flags; - u64 reserved2; /* Reserved, must be zero */ -}; - -/* Flags */ - -#define ACPI_SRAT_MEM_ENABLED (1) /* 00: Use affinity structure */ -#define ACPI_SRAT_MEM_HOT_PLUGGABLE (1<<1) /* 01: Memory region is hot pluggable */ -#define ACPI_SRAT_MEM_NON_VOLATILE (1<<2) /* 02: Memory region is non-volatile */ - -/* 2: Processor Local X2_APIC Affinity (ACPI 4.0) */ - -struct acpi_srat_x2apic_cpu_affinity { - struct acpi_subtable_header header; - u16 reserved; /* Reserved, must be zero */ - u32 proximity_domain; - u32 apic_id; - u32 flags; - u32 clock_domain; - u32 reserved2; -}; - -/* Flags for struct acpi_srat_cpu_affinity and struct acpi_srat_x2apic_cpu_affinity */ - -#define ACPI_SRAT_CPU_ENABLED (1) /* 00: Use affinity structure */ - -/* 3: GICC Affinity (ACPI 5.1) */ - -struct acpi_srat_gicc_affinity { - struct acpi_subtable_header header; - u32 proximity_domain; - u32 acpi_processor_uid; - u32 flags; - u32 clock_domain; -}; - -/* Flags for struct acpi_srat_gicc_affinity */ - -#define ACPI_SRAT_GICC_ENABLED (1) /* 00: Use affinity structure */ - -/* Reset to default packing */ - -#pragma pack() - -#endif /* __ACTBL1_H__ */ diff --git a/drivers/include/acpi/actbl2.h b/drivers/include/acpi/actbl2.h deleted file mode 100644 index a4ef62537c..0000000000 --- a/drivers/include/acpi/actbl2.h +++ /dev/null @@ -1,1467 +0,0 @@ -/****************************************************************************** - * - * Name: actbl2.h - ACPI Table Definitions (tables not in ACPI spec) - * - *****************************************************************************/ - -/* - * Copyright (C) 2000 - 2016, 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 __ACTBL2_H__ -#define __ACTBL2_H__ - -/******************************************************************************* - * - * Additional ACPI Tables (2) - * - * These tables are not consumed directly by the ACPICA subsystem, but are - * included here to support device drivers and the AML disassembler. - * - * Generally, the tables in this file are defined by third-party specifications, - * and are not defined directly by the ACPI specification itself. - * - ******************************************************************************/ - -/* - * Values for description table header signatures for tables defined in this - * file. Useful because they make it more difficult to inadvertently type in - * the wrong signature. - */ -#define ACPI_SIG_ASF "ASF!" /* Alert Standard Format table */ -#define ACPI_SIG_BOOT "BOOT" /* Simple Boot Flag Table */ -#define ACPI_SIG_CSRT "CSRT" /* Core System Resource Table */ -#define ACPI_SIG_DBG2 "DBG2" /* Debug Port table type 2 */ -#define ACPI_SIG_DBGP "DBGP" /* Debug Port table */ -#define ACPI_SIG_DMAR "DMAR" /* DMA Remapping table */ -#define ACPI_SIG_HPET "HPET" /* High Precision Event Timer table */ -#define ACPI_SIG_IBFT "IBFT" /* iSCSI Boot Firmware Table */ -#define ACPI_SIG_IORT "IORT" /* IO Remapping Table */ -#define ACPI_SIG_IVRS "IVRS" /* I/O Virtualization Reporting Structure */ -#define ACPI_SIG_LPIT "LPIT" /* Low Power Idle Table */ -#define ACPI_SIG_MCFG "MCFG" /* PCI Memory Mapped Configuration table */ -#define ACPI_SIG_MCHI "MCHI" /* Management Controller Host Interface table */ -#define ACPI_SIG_MSDM "MSDM" /* Microsoft Data Management Table */ -#define ACPI_SIG_MTMR "MTMR" /* MID Timer table */ -#define ACPI_SIG_SLIC "SLIC" /* Software Licensing Description Table */ -#define ACPI_SIG_SPCR "SPCR" /* Serial Port Console Redirection table */ -#define ACPI_SIG_SPMI "SPMI" /* Server Platform Management Interface table */ -#define ACPI_SIG_TCPA "TCPA" /* Trusted Computing Platform Alliance table */ -#define ACPI_SIG_TPM2 "TPM2" /* Trusted Platform Module 2.0 H/W interface table */ -#define ACPI_SIG_UEFI "UEFI" /* Uefi Boot Optimization Table */ -#define ACPI_SIG_VRTC "VRTC" /* Virtual Real Time Clock Table */ -#define ACPI_SIG_WAET "WAET" /* Windows ACPI Emulated devices Table */ -#define ACPI_SIG_WDAT "WDAT" /* Watchdog Action Table */ -#define ACPI_SIG_WDDT "WDDT" /* Watchdog Timer Description Table */ -#define ACPI_SIG_WDRT "WDRT" /* Watchdog Resource Table */ - -#ifdef ACPI_UNDEFINED_TABLES -/* - * These tables have been seen in the field, but no definition has been found - */ -#define ACPI_SIG_ATKG "ATKG" -#define ACPI_SIG_GSCI "GSCI" /* GMCH SCI table */ -#define ACPI_SIG_IEIT "IEIT" -#endif - -/* - * All tables must be byte-packed to match the ACPI specification, since - * the tables are provided by the system BIOS. - */ -#pragma pack(1) - -/* - * Note: C bitfields are not used for this reason: - * - * "Bitfields are great and easy to read, but unfortunately the C language - * does not specify the layout of bitfields in memory, which means they are - * essentially useless for dealing with packed data in on-disk formats or - * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me, - * this decision was a design error in C. Ritchie could have picked an order - * and stuck with it." Norman Ramsey. - * See http://stackoverflow.com/a/1053662/41661 - */ - -/******************************************************************************* - * - * ASF - Alert Standard Format table (Signature "ASF!") - * Revision 0x10 - * - * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003 - * - ******************************************************************************/ - -struct acpi_table_asf { - struct acpi_table_header header; /* Common ACPI table header */ -}; - -/* ASF subtable header */ - -struct acpi_asf_header { - u8 type; - u8 reserved; - u16 length; -}; - -/* Values for Type field above */ - -enum acpi_asf_type { - ACPI_ASF_TYPE_INFO = 0, - ACPI_ASF_TYPE_ALERT = 1, - ACPI_ASF_TYPE_CONTROL = 2, - ACPI_ASF_TYPE_BOOT = 3, - ACPI_ASF_TYPE_ADDRESS = 4, - ACPI_ASF_TYPE_RESERVED = 5 -}; - -/* - * ASF subtables - */ - -/* 0: ASF Information */ - -struct acpi_asf_info { - struct acpi_asf_header header; - u8 min_reset_value; - u8 min_poll_interval; - u16 system_id; - u32 mfg_id; - u8 flags; - u8 reserved2[3]; -}; - -/* Masks for Flags field above */ - -#define ACPI_ASF_SMBUS_PROTOCOLS (1) - -/* 1: ASF Alerts */ - -struct acpi_asf_alert { - struct acpi_asf_header header; - u8 assert_mask; - u8 deassert_mask; - u8 alerts; - u8 data_length; -}; - -struct acpi_asf_alert_data { - u8 address; - u8 command; - u8 mask; - u8 value; - u8 sensor_type; - u8 type; - u8 offset; - u8 source_type; - u8 severity; - u8 sensor_number; - u8 entity; - u8 instance; -}; - -/* 2: ASF Remote Control */ - -struct acpi_asf_remote { - struct acpi_asf_header header; - u8 controls; - u8 data_length; - u16 reserved2; -}; - -struct acpi_asf_control_data { - u8 function; - u8 address; - u8 command; - u8 value; -}; - -/* 3: ASF RMCP Boot Options */ - -struct acpi_asf_rmcp { - struct acpi_asf_header header; - u8 capabilities[7]; - u8 completion_code; - u32 enterprise_id; - u8 command; - u16 parameter; - u16 boot_options; - u16 oem_parameters; -}; - -/* 4: ASF Address */ - -struct acpi_asf_address { - struct acpi_asf_header header; - u8 eprom_address; - u8 devices; -}; - -/******************************************************************************* - * - * BOOT - Simple Boot Flag Table - * Version 1 - * - * Conforms to the "Simple Boot Flag Specification", Version 2.1 - * - ******************************************************************************/ - -struct acpi_table_boot { - struct acpi_table_header header; /* Common ACPI table header */ - u8 cmos_index; /* Index in CMOS RAM for the boot register */ - u8 reserved[3]; -}; - -/******************************************************************************* - * - * CSRT - Core System Resource Table - * Version 0 - * - * Conforms to the "Core System Resource Table (CSRT)", November 14, 2011 - * - ******************************************************************************/ - -struct acpi_table_csrt { - struct acpi_table_header header; /* Common ACPI table header */ -}; - -/* Resource Group subtable */ - -struct acpi_csrt_group { - u32 length; - u32 vendor_id; - u32 subvendor_id; - u16 device_id; - u16 subdevice_id; - u16 revision; - u16 reserved; - u32 shared_info_length; - - /* Shared data immediately follows (Length = shared_info_length) */ -}; - -/* Shared Info subtable */ - -struct acpi_csrt_shared_info { - u16 major_version; - u16 minor_version; - u32 mmio_base_low; - u32 mmio_base_high; - u32 gsi_interrupt; - u8 interrupt_polarity; - u8 interrupt_mode; - u8 num_channels; - u8 dma_address_width; - u16 base_request_line; - u16 num_handshake_signals; - u32 max_block_size; - - /* Resource descriptors immediately follow (Length = Group length - shared_info_length) */ -}; - -/* Resource Descriptor subtable */ - -struct acpi_csrt_descriptor { - u32 length; - u16 type; - u16 subtype; - u32 uid; - - /* Resource-specific information immediately follows */ -}; - -/* Resource Types */ - -#define ACPI_CSRT_TYPE_INTERRUPT 0x0001 -#define ACPI_CSRT_TYPE_TIMER 0x0002 -#define ACPI_CSRT_TYPE_DMA 0x0003 - -/* Resource Subtypes */ - -#define ACPI_CSRT_XRUPT_LINE 0x0000 -#define ACPI_CSRT_XRUPT_CONTROLLER 0x0001 -#define ACPI_CSRT_TIMER 0x0000 -#define ACPI_CSRT_DMA_CHANNEL 0x0000 -#define ACPI_CSRT_DMA_CONTROLLER 0x0001 - -/******************************************************************************* - * - * DBG2 - Debug Port Table 2 - * Version 0 (Both main table and subtables) - * - * Conforms to "Microsoft Debug Port Table 2 (DBG2)", May 22 2012. - * - ******************************************************************************/ - -struct acpi_table_dbg2 { - struct acpi_table_header header; /* Common ACPI table header */ - u32 info_offset; - u32 info_count; -}; - -struct acpi_dbg2_header { - u32 info_offset; - u32 info_count; -}; - -/* Debug Device Information Subtable */ - -struct acpi_dbg2_device { - u8 revision; - u16 length; - u8 register_count; /* Number of base_address registers */ - u16 namepath_length; - u16 namepath_offset; - u16 oem_data_length; - u16 oem_data_offset; - u16 port_type; - u16 port_subtype; - u16 reserved; - u16 base_address_offset; - u16 address_size_offset; - /* - * Data that follows: - * base_address (required) - Each in 12-byte Generic Address Structure format. - * address_size (required) - Array of u32 sizes corresponding to each base_address register. - * Namepath (required) - Null terminated string. Single dot if not supported. - * oem_data (optional) - Length is oem_data_length. - */ -}; - -/* Types for port_type field above */ - -#define ACPI_DBG2_SERIAL_PORT 0x8000 -#define ACPI_DBG2_1394_PORT 0x8001 -#define ACPI_DBG2_USB_PORT 0x8002 -#define ACPI_DBG2_NET_PORT 0x8003 - -/* Subtypes for port_subtype field above */ - -#define ACPI_DBG2_16550_COMPATIBLE 0x0000 -#define ACPI_DBG2_16550_SUBSET 0x0001 - -#define ACPI_DBG2_1394_STANDARD 0x0000 - -#define ACPI_DBG2_USB_XHCI 0x0000 -#define ACPI_DBG2_USB_EHCI 0x0001 - -/******************************************************************************* - * - * DBGP - Debug Port table - * Version 1 - * - * Conforms to the "Debug Port Specification", Version 1.00, 2/9/2000 - * - ******************************************************************************/ - -struct acpi_table_dbgp { - struct acpi_table_header header; /* Common ACPI table header */ - u8 type; /* 0=full 16550, 1=subset of 16550 */ - u8 reserved[3]; - struct acpi_generic_address debug_port; -}; - -/******************************************************************************* - * - * DMAR - DMA Remapping table - * Version 1 - * - * Conforms to "Intel Virtualization Technology for Directed I/O", - * Version 2.2, Sept. 2013 - * - ******************************************************************************/ - -struct acpi_table_dmar { - struct acpi_table_header header; /* Common ACPI table header */ - u8 width; /* Host Address Width */ - u8 flags; - u8 reserved[10]; -}; - -/* Masks for Flags field above */ - -#define ACPI_DMAR_INTR_REMAP (1) - -/* DMAR subtable header */ - -struct acpi_dmar_header { - u16 type; - u16 length; -}; - -/* Values for subtable type in struct acpi_dmar_header */ - -enum acpi_dmar_type { - ACPI_DMAR_TYPE_HARDWARE_UNIT = 0, - ACPI_DMAR_TYPE_RESERVED_MEMORY = 1, - ACPI_DMAR_TYPE_ROOT_ATS = 2, - ACPI_DMAR_TYPE_HARDWARE_AFFINITY = 3, - ACPI_DMAR_TYPE_NAMESPACE = 4, - ACPI_DMAR_TYPE_RESERVED = 5 /* 5 and greater are reserved */ -}; - -/* DMAR Device Scope structure */ - -struct acpi_dmar_device_scope { - u8 entry_type; - u8 length; - u16 reserved; - u8 enumeration_id; - u8 bus; -}; - -/* Values for entry_type in struct acpi_dmar_device_scope - device types */ - -enum acpi_dmar_scope_type { - ACPI_DMAR_SCOPE_TYPE_NOT_USED = 0, - ACPI_DMAR_SCOPE_TYPE_ENDPOINT = 1, - ACPI_DMAR_SCOPE_TYPE_BRIDGE = 2, - ACPI_DMAR_SCOPE_TYPE_IOAPIC = 3, - ACPI_DMAR_SCOPE_TYPE_HPET = 4, - ACPI_DMAR_SCOPE_TYPE_NAMESPACE = 5, - ACPI_DMAR_SCOPE_TYPE_RESERVED = 6 /* 6 and greater are reserved */ -}; - -struct acpi_dmar_pci_path { - u8 device; - u8 function; -}; - -/* - * DMAR Subtables, correspond to Type in struct acpi_dmar_header - */ - -/* 0: Hardware Unit Definition */ - -struct acpi_dmar_hardware_unit { - struct acpi_dmar_header header; - u8 flags; - u8 reserved; - u16 segment; - u64 address; /* Register Base Address */ -}; - -/* Masks for Flags field above */ - -#define ACPI_DMAR_INCLUDE_ALL (1) - -/* 1: Reserved Memory Defininition */ - -struct acpi_dmar_reserved_memory { - struct acpi_dmar_header header; - u16 reserved; - u16 segment; - u64 base_address; /* 4K aligned base address */ - u64 end_address; /* 4K aligned limit address */ -}; - -/* Masks for Flags field above */ - -#define ACPI_DMAR_ALLOW_ALL (1) - -/* 2: Root Port ATS Capability Reporting Structure */ - -struct acpi_dmar_atsr { - struct acpi_dmar_header header; - u8 flags; - u8 reserved; - u16 segment; -}; - -/* Masks for Flags field above */ - -#define ACPI_DMAR_ALL_PORTS (1) - -/* 3: Remapping Hardware Static Affinity Structure */ - -struct acpi_dmar_rhsa { - struct acpi_dmar_header header; - u32 reserved; - u64 base_address; - u32 proximity_domain; -}; - -/* 4: ACPI Namespace Device Declaration Structure */ - -struct acpi_dmar_andd { - struct acpi_dmar_header header; - u8 reserved[3]; - u8 device_number; - char device_name[1]; -}; - -/******************************************************************************* - * - * HPET - High Precision Event Timer table - * Version 1 - * - * Conforms to "IA-PC HPET (High Precision Event Timers) Specification", - * Version 1.0a, October 2004 - * - ******************************************************************************/ - -struct acpi_table_hpet { - struct acpi_table_header header; /* Common ACPI table header */ - u32 id; /* Hardware ID of event timer block */ - struct acpi_generic_address address; /* Address of event timer block */ - u8 sequence; /* HPET sequence number */ - u16 minimum_tick; /* Main counter min tick, periodic mode */ - u8 flags; -}; - -/* Masks for Flags field above */ - -#define ACPI_HPET_PAGE_PROTECT_MASK (3) - -/* Values for Page Protect flags */ - -enum acpi_hpet_page_protect { - ACPI_HPET_NO_PAGE_PROTECT = 0, - ACPI_HPET_PAGE_PROTECT4 = 1, - ACPI_HPET_PAGE_PROTECT64 = 2 -}; - -/******************************************************************************* - * - * IBFT - Boot Firmware Table - * Version 1 - * - * Conforms to "iSCSI Boot Firmware Table (iBFT) as Defined in ACPI 3.0b - * Specification", Version 1.01, March 1, 2007 - * - * Note: It appears that this table is not intended to appear in the RSDT/XSDT. - * Therefore, it is not currently supported by the disassembler. - * - ******************************************************************************/ - -struct acpi_table_ibft { - struct acpi_table_header header; /* Common ACPI table header */ - u8 reserved[12]; -}; - -/* IBFT common subtable header */ - -struct acpi_ibft_header { - u8 type; - u8 version; - u16 length; - u8 index; - u8 flags; -}; - -/* Values for Type field above */ - -enum acpi_ibft_type { - ACPI_IBFT_TYPE_NOT_USED = 0, - ACPI_IBFT_TYPE_CONTROL = 1, - ACPI_IBFT_TYPE_INITIATOR = 2, - ACPI_IBFT_TYPE_NIC = 3, - ACPI_IBFT_TYPE_TARGET = 4, - ACPI_IBFT_TYPE_EXTENSIONS = 5, - ACPI_IBFT_TYPE_RESERVED = 6 /* 6 and greater are reserved */ -}; - -/* IBFT subtables */ - -struct acpi_ibft_control { - struct acpi_ibft_header header; - u16 extensions; - u16 initiator_offset; - u16 nic0_offset; - u16 target0_offset; - u16 nic1_offset; - u16 target1_offset; -}; - -struct acpi_ibft_initiator { - struct acpi_ibft_header header; - u8 sns_server[16]; - u8 slp_server[16]; - u8 primary_server[16]; - u8 secondary_server[16]; - u16 name_length; - u16 name_offset; -}; - -struct acpi_ibft_nic { - struct acpi_ibft_header header; - u8 ip_address[16]; - u8 subnet_mask_prefix; - u8 origin; - u8 gateway[16]; - u8 primary_dns[16]; - u8 secondary_dns[16]; - u8 dhcp[16]; - u16 vlan; - u8 mac_address[6]; - u16 pci_address; - u16 name_length; - u16 name_offset; -}; - -struct acpi_ibft_target { - struct acpi_ibft_header header; - u8 target_ip_address[16]; - u16 target_ip_socket; - u8 target_boot_lun[8]; - u8 chap_type; - u8 nic_association; - u16 target_name_length; - u16 target_name_offset; - u16 chap_name_length; - u16 chap_name_offset; - u16 chap_secret_length; - u16 chap_secret_offset; - u16 reverse_chap_name_length; - u16 reverse_chap_name_offset; - u16 reverse_chap_secret_length; - u16 reverse_chap_secret_offset; -}; - -/******************************************************************************* - * - * IORT - IO Remapping Table - * - * Conforms to "IO Remapping Table System Software on ARM Platforms", - * Document number: ARM DEN 0049A, 2015 - * - ******************************************************************************/ - -struct acpi_table_iort { - struct acpi_table_header header; - u32 node_count; - u32 node_offset; - u32 reserved; -}; - -/* - * IORT subtables - */ -struct acpi_iort_node { - u8 type; - u16 length; - u8 revision; - u32 reserved; - u32 mapping_count; - u32 mapping_offset; - char node_data[1]; -}; - -/* Values for subtable Type above */ - -enum acpi_iort_node_type { - ACPI_IORT_NODE_ITS_GROUP = 0x00, - ACPI_IORT_NODE_NAMED_COMPONENT = 0x01, - ACPI_IORT_NODE_PCI_ROOT_COMPLEX = 0x02, - ACPI_IORT_NODE_SMMU = 0x03 -}; - -struct acpi_iort_id_mapping { - u32 input_base; /* Lowest value in input range */ - u32 id_count; /* Number of IDs */ - u32 output_base; /* Lowest value in output range */ - u32 output_reference; /* A reference to the output node */ - u32 flags; -}; - -/* Masks for Flags field above for IORT subtable */ - -#define ACPI_IORT_ID_SINGLE_MAPPING (1) - -struct acpi_iort_memory_access { - u32 cache_coherency; - u8 hints; - u16 reserved; - u8 memory_flags; -}; - -/* Values for cache_coherency field above */ - -#define ACPI_IORT_NODE_COHERENT 0x00000001 /* The device node is fully coherent */ -#define ACPI_IORT_NODE_NOT_COHERENT 0x00000000 /* The device node is not coherent */ - -/* Masks for Hints field above */ - -#define ACPI_IORT_HT_TRANSIENT (1) -#define ACPI_IORT_HT_WRITE (1<<1) -#define ACPI_IORT_HT_READ (1<<2) -#define ACPI_IORT_HT_OVERRIDE (1<<3) - -/* Masks for memory_flags field above */ - -#define ACPI_IORT_MF_COHERENCY (1) -#define ACPI_IORT_MF_ATTRIBUTES (1<<1) - -/* - * IORT node specific subtables - */ -struct acpi_iort_its_group { - u32 its_count; - u32 identifiers[1]; /* GIC ITS identifier arrary */ -}; - -struct acpi_iort_named_component { - u32 node_flags; - u64 memory_properties; /* Memory access properties */ - u8 memory_address_limit; /* Memory address size limit */ - char device_name[1]; /* Path of namespace object */ -}; - -struct acpi_iort_root_complex { - u64 memory_properties; /* Memory access properties */ - u32 ats_attribute; - u32 pci_segment_number; -}; - -/* Values for ats_attribute field above */ - -#define ACPI_IORT_ATS_SUPPORTED 0x00000001 /* The root complex supports ATS */ -#define ACPI_IORT_ATS_UNSUPPORTED 0x00000000 /* The root complex doesn't support ATS */ - -struct acpi_iort_smmu { - u64 base_address; /* SMMU base address */ - u64 span; /* Length of memory range */ - u32 model; - u32 flags; - u32 global_interrupt_offset; - u32 context_interrupt_count; - u32 context_interrupt_offset; - u32 pmu_interrupt_count; - u32 pmu_interrupt_offset; - u64 interrupts[1]; /* Interrupt array */ -}; - -/* Values for Model field above */ - -#define ACPI_IORT_SMMU_V1 0x00000000 /* Generic SMMUv1 */ -#define ACPI_IORT_SMMU_V2 0x00000001 /* Generic SMMUv2 */ -#define ACPI_IORT_SMMU_CORELINK_MMU400 0x00000002 /* ARM Corelink MMU-400 */ -#define ACPI_IORT_SMMU_CORELINK_MMU500 0x00000003 /* ARM Corelink MMU-500 */ - -/* Masks for Flags field above */ - -#define ACPI_IORT_SMMU_DVM_SUPPORTED (1) -#define ACPI_IORT_SMMU_COHERENT_WALK (1<<1) - -/******************************************************************************* - * - * IVRS - I/O Virtualization Reporting Structure - * Version 1 - * - * Conforms to "AMD I/O Virtualization Technology (IOMMU) Specification", - * Revision 1.26, February 2009. - * - ******************************************************************************/ - -struct acpi_table_ivrs { - struct acpi_table_header header; /* Common ACPI table header */ - u32 info; /* Common virtualization info */ - u64 reserved; -}; - -/* Values for Info field above */ - -#define ACPI_IVRS_PHYSICAL_SIZE 0x00007F00 /* 7 bits, physical address size */ -#define ACPI_IVRS_VIRTUAL_SIZE 0x003F8000 /* 7 bits, virtual address size */ -#define ACPI_IVRS_ATS_RESERVED 0x00400000 /* ATS address translation range reserved */ - -/* IVRS subtable header */ - -struct acpi_ivrs_header { - u8 type; /* Subtable type */ - u8 flags; - u16 length; /* Subtable length */ - u16 device_id; /* ID of IOMMU */ -}; - -/* Values for subtable Type above */ - -enum acpi_ivrs_type { - ACPI_IVRS_TYPE_HARDWARE = 0x10, - ACPI_IVRS_TYPE_MEMORY1 = 0x20, - ACPI_IVRS_TYPE_MEMORY2 = 0x21, - ACPI_IVRS_TYPE_MEMORY3 = 0x22 -}; - -/* Masks for Flags field above for IVHD subtable */ - -#define ACPI_IVHD_TT_ENABLE (1) -#define ACPI_IVHD_PASS_PW (1<<1) -#define ACPI_IVHD_RES_PASS_PW (1<<2) -#define ACPI_IVHD_ISOC (1<<3) -#define ACPI_IVHD_IOTLB (1<<4) - -/* Masks for Flags field above for IVMD subtable */ - -#define ACPI_IVMD_UNITY (1) -#define ACPI_IVMD_READ (1<<1) -#define ACPI_IVMD_WRITE (1<<2) -#define ACPI_IVMD_EXCLUSION_RANGE (1<<3) - -/* - * IVRS subtables, correspond to Type in struct acpi_ivrs_header - */ - -/* 0x10: I/O Virtualization Hardware Definition Block (IVHD) */ - -struct acpi_ivrs_hardware { - struct acpi_ivrs_header header; - u16 capability_offset; /* Offset for IOMMU control fields */ - u64 base_address; /* IOMMU control registers */ - u16 pci_segment_group; - u16 info; /* MSI number and unit ID */ - u32 reserved; -}; - -/* Masks for Info field above */ - -#define ACPI_IVHD_MSI_NUMBER_MASK 0x001F /* 5 bits, MSI message number */ -#define ACPI_IVHD_UNIT_ID_MASK 0x1F00 /* 5 bits, unit_ID */ - -/* - * Device Entries for IVHD subtable, appear after struct acpi_ivrs_hardware structure. - * Upper two bits of the Type field are the (encoded) length of the structure. - * Currently, only 4 and 8 byte entries are defined. 16 and 32 byte entries - * are reserved for future use but not defined. - */ -struct acpi_ivrs_de_header { - u8 type; - u16 id; - u8 data_setting; -}; - -/* Length of device entry is in the top two bits of Type field above */ - -#define ACPI_IVHD_ENTRY_LENGTH 0xC0 - -/* Values for device entry Type field above */ - -enum acpi_ivrs_device_entry_type { - /* 4-byte device entries, all use struct acpi_ivrs_device4 */ - - ACPI_IVRS_TYPE_PAD4 = 0, - ACPI_IVRS_TYPE_ALL = 1, - ACPI_IVRS_TYPE_SELECT = 2, - ACPI_IVRS_TYPE_START = 3, - ACPI_IVRS_TYPE_END = 4, - - /* 8-byte device entries */ - - ACPI_IVRS_TYPE_PAD8 = 64, - ACPI_IVRS_TYPE_NOT_USED = 65, - ACPI_IVRS_TYPE_ALIAS_SELECT = 66, /* Uses struct acpi_ivrs_device8a */ - ACPI_IVRS_TYPE_ALIAS_START = 67, /* Uses struct acpi_ivrs_device8a */ - ACPI_IVRS_TYPE_EXT_SELECT = 70, /* Uses struct acpi_ivrs_device8b */ - ACPI_IVRS_TYPE_EXT_START = 71, /* Uses struct acpi_ivrs_device8b */ - ACPI_IVRS_TYPE_SPECIAL = 72 /* Uses struct acpi_ivrs_device8c */ -}; - -/* Values for Data field above */ - -#define ACPI_IVHD_INIT_PASS (1) -#define ACPI_IVHD_EINT_PASS (1<<1) -#define ACPI_IVHD_NMI_PASS (1<<2) -#define ACPI_IVHD_SYSTEM_MGMT (3<<4) -#define ACPI_IVHD_LINT0_PASS (1<<6) -#define ACPI_IVHD_LINT1_PASS (1<<7) - -/* Types 0-4: 4-byte device entry */ - -struct acpi_ivrs_device4 { - struct acpi_ivrs_de_header header; -}; - -/* Types 66-67: 8-byte device entry */ - -struct acpi_ivrs_device8a { - struct acpi_ivrs_de_header header; - u8 reserved1; - u16 used_id; - u8 reserved2; -}; - -/* Types 70-71: 8-byte device entry */ - -struct acpi_ivrs_device8b { - struct acpi_ivrs_de_header header; - u32 extended_data; -}; - -/* Values for extended_data above */ - -#define ACPI_IVHD_ATS_DISABLED (1<<31) - -/* Type 72: 8-byte device entry */ - -struct acpi_ivrs_device8c { - struct acpi_ivrs_de_header header; - u8 handle; - u16 used_id; - u8 variety; -}; - -/* Values for Variety field above */ - -#define ACPI_IVHD_IOAPIC 1 -#define ACPI_IVHD_HPET 2 - -/* 0x20, 0x21, 0x22: I/O Virtualization Memory Definition Block (IVMD) */ - -struct acpi_ivrs_memory { - struct acpi_ivrs_header header; - u16 aux_data; - u64 reserved; - u64 start_address; - u64 memory_length; -}; - -/******************************************************************************* - * - * LPIT - Low Power Idle Table - * - * Conforms to "ACPI Low Power Idle Table (LPIT)" July 2014. - * - ******************************************************************************/ - -struct acpi_table_lpit { - struct acpi_table_header header; /* Common ACPI table header */ -}; - -/* LPIT subtable header */ - -struct acpi_lpit_header { - u32 type; /* Subtable type */ - u32 length; /* Subtable length */ - u16 unique_id; - u16 reserved; - u32 flags; -}; - -/* Values for subtable Type above */ - -enum acpi_lpit_type { - ACPI_LPIT_TYPE_NATIVE_CSTATE = 0x00, - ACPI_LPIT_TYPE_RESERVED = 0x01 /* 1 and above are reserved */ -}; - -/* Masks for Flags field above */ - -#define ACPI_LPIT_STATE_DISABLED (1) -#define ACPI_LPIT_NO_COUNTER (1<<1) - -/* - * LPIT subtables, correspond to Type in struct acpi_lpit_header - */ - -/* 0x00: Native C-state instruction based LPI structure */ - -struct acpi_lpit_native { - struct acpi_lpit_header header; - struct acpi_generic_address entry_trigger; - u32 residency; - u32 latency; - struct acpi_generic_address residency_counter; - u64 counter_frequency; -}; - -/******************************************************************************* - * - * MCFG - PCI Memory Mapped Configuration table and subtable - * Version 1 - * - * Conforms to "PCI Firmware Specification", Revision 3.0, June 20, 2005 - * - ******************************************************************************/ - -struct acpi_table_mcfg { - struct acpi_table_header header; /* Common ACPI table header */ - u8 reserved[8]; -}; - -/* Subtable */ - -struct acpi_mcfg_allocation { - u64 address; /* Base address, processor-relative */ - u16 pci_segment; /* PCI segment group number */ - u8 start_bus_number; /* Starting PCI Bus number */ - u8 end_bus_number; /* Final PCI Bus number */ - u32 reserved; -}; - -/******************************************************************************* - * - * MCHI - Management Controller Host Interface Table - * Version 1 - * - * Conforms to "Management Component Transport Protocol (MCTP) Host - * Interface Specification", Revision 1.0.0a, October 13, 2009 - * - ******************************************************************************/ - -struct acpi_table_mchi { - struct acpi_table_header header; /* Common ACPI table header */ - u8 interface_type; - u8 protocol; - u64 protocol_data; - u8 interrupt_type; - u8 gpe; - u8 pci_device_flag; - u32 global_interrupt; - struct acpi_generic_address control_register; - u8 pci_segment; - u8 pci_bus; - u8 pci_device; - u8 pci_function; -}; - -/******************************************************************************* - * - * MSDM - Microsoft Data Management table - * - * Conforms to "Microsoft Software Licensing Tables (SLIC and MSDM)", - * November 29, 2011. Copyright 2011 Microsoft - * - ******************************************************************************/ - -/* Basic MSDM table is only the common ACPI header */ - -struct acpi_table_msdm { - struct acpi_table_header header; /* Common ACPI table header */ -}; - -/******************************************************************************* - * - * MTMR - MID Timer Table - * Version 1 - * - * Conforms to "Simple Firmware Interface Specification", - * Draft 0.8.2, Oct 19, 2010 - * NOTE: The ACPI MTMR is equivalent to the SFI MTMR table. - * - ******************************************************************************/ - -struct acpi_table_mtmr { - struct acpi_table_header header; /* Common ACPI table header */ -}; - -/* MTMR entry */ - -struct acpi_mtmr_entry { - struct acpi_generic_address physical_address; - u32 frequency; - u32 irq; -}; - -/******************************************************************************* - * - * SLIC - Software Licensing Description Table - * - * Conforms to "Microsoft Software Licensing Tables (SLIC and MSDM)", - * November 29, 2011. Copyright 2011 Microsoft - * - ******************************************************************************/ - -/* Basic SLIC table is only the common ACPI header */ - -struct acpi_table_slic { - struct acpi_table_header header; /* Common ACPI table header */ -}; - -/******************************************************************************* - * - * SPCR - Serial Port Console Redirection table - * Version 1 - * - * Conforms to "Serial Port Console Redirection Table", - * Version 1.00, January 11, 2002 - * - ******************************************************************************/ - -struct acpi_table_spcr { - struct acpi_table_header header; /* Common ACPI table header */ - u8 interface_type; /* 0=full 16550, 1=subset of 16550 */ - u8 reserved[3]; - struct acpi_generic_address serial_port; - u8 interrupt_type; - u8 pc_interrupt; - u32 interrupt; - u8 baud_rate; - u8 parity; - u8 stop_bits; - u8 flow_control; - u8 terminal_type; - u8 reserved1; - u16 pci_device_id; - u16 pci_vendor_id; - u8 pci_bus; - u8 pci_device; - u8 pci_function; - u32 pci_flags; - u8 pci_segment; - u32 reserved2; -}; - -/* Masks for pci_flags field above */ - -#define ACPI_SPCR_DO_NOT_DISABLE (1) - -/******************************************************************************* - * - * SPMI - Server Platform Management Interface table - * Version 5 - * - * Conforms to "Intelligent Platform Management Interface Specification - * Second Generation v2.0", Document Revision 1.0, February 12, 2004 with - * June 12, 2009 markup. - * - ******************************************************************************/ - -struct acpi_table_spmi { - struct acpi_table_header header; /* Common ACPI table header */ - u8 interface_type; - u8 reserved; /* Must be 1 */ - u16 spec_revision; /* Version of IPMI */ - u8 interrupt_type; - u8 gpe_number; /* GPE assigned */ - u8 reserved1; - u8 pci_device_flag; - u32 interrupt; - struct acpi_generic_address ipmi_register; - u8 pci_segment; - u8 pci_bus; - u8 pci_device; - u8 pci_function; - u8 reserved2; -}; - -/* Values for interface_type above */ - -enum acpi_spmi_interface_types { - ACPI_SPMI_NOT_USED = 0, - ACPI_SPMI_KEYBOARD = 1, - ACPI_SPMI_SMI = 2, - ACPI_SPMI_BLOCK_TRANSFER = 3, - ACPI_SPMI_SMBUS = 4, - ACPI_SPMI_RESERVED = 5 /* 5 and above are reserved */ -}; - -/******************************************************************************* - * - * TCPA - Trusted Computing Platform Alliance table - * Version 2 - * - * Conforms to "TCG ACPI Specification, Family 1.2 and 2.0", - * December 19, 2014 - * - * NOTE: There are two versions of the table with the same signature -- - * the client version and the server version. The common platform_class - * field is used to differentiate the two types of tables. - * - ******************************************************************************/ - -struct acpi_table_tcpa_hdr { - struct acpi_table_header header; /* Common ACPI table header */ - u16 platform_class; -}; - -/* - * Values for platform_class above. - * This is how the client and server subtables are differentiated - */ -#define ACPI_TCPA_CLIENT_TABLE 0 -#define ACPI_TCPA_SERVER_TABLE 1 - -struct acpi_table_tcpa_client { - u32 minimum_log_length; /* Minimum length for the event log area */ - u64 log_address; /* Address of the event log area */ -}; - -struct acpi_table_tcpa_server { - u16 reserved; - u64 minimum_log_length; /* Minimum length for the event log area */ - u64 log_address; /* Address of the event log area */ - u16 spec_revision; - u8 device_flags; - u8 interrupt_flags; - u8 gpe_number; - u8 reserved2[3]; - u32 global_interrupt; - struct acpi_generic_address address; - u32 reserved3; - struct acpi_generic_address config_address; - u8 group; - u8 bus; /* PCI Bus/Segment/Function numbers */ - u8 device; - u8 function; -}; - -/* Values for device_flags above */ - -#define ACPI_TCPA_PCI_DEVICE (1) -#define ACPI_TCPA_BUS_PNP (1<<1) -#define ACPI_TCPA_ADDRESS_VALID (1<<2) - -/* Values for interrupt_flags above */ - -#define ACPI_TCPA_INTERRUPT_MODE (1) -#define ACPI_TCPA_INTERRUPT_POLARITY (1<<1) -#define ACPI_TCPA_SCI_VIA_GPE (1<<2) -#define ACPI_TCPA_GLOBAL_INTERRUPT (1<<3) - -/******************************************************************************* - * - * TPM2 - Trusted Platform Module (TPM) 2.0 Hardware Interface Table - * Version 4 - * - * Conforms to "TCG ACPI Specification, Family 1.2 and 2.0", - * December 19, 2014 - * - ******************************************************************************/ - -struct acpi_table_tpm2 { - struct acpi_table_header header; /* Common ACPI table header */ - u16 platform_class; - u16 reserved; - u64 control_address; - u32 start_method; - - /* Platform-specific data follows */ -}; - -/* Values for start_method above */ - -#define ACPI_TPM2_NOT_ALLOWED 0 -#define ACPI_TPM2_START_METHOD 2 -#define ACPI_TPM2_MEMORY_MAPPED 6 -#define ACPI_TPM2_COMMAND_BUFFER 7 -#define ACPI_TPM2_COMMAND_BUFFER_WITH_START_METHOD 8 - -/******************************************************************************* - * - * UEFI - UEFI Boot optimization Table - * Version 1 - * - * Conforms to "Unified Extensible Firmware Interface Specification", - * Version 2.3, May 8, 2009 - * - ******************************************************************************/ - -struct acpi_table_uefi { - struct acpi_table_header header; /* Common ACPI table header */ - u8 identifier[16]; /* UUID identifier */ - u16 data_offset; /* Offset of remaining data in table */ -}; - -/******************************************************************************* - * - * VRTC - Virtual Real Time Clock Table - * Version 1 - * - * Conforms to "Simple Firmware Interface Specification", - * Draft 0.8.2, Oct 19, 2010 - * NOTE: The ACPI VRTC is equivalent to The SFI MRTC table. - * - ******************************************************************************/ - -struct acpi_table_vrtc { - struct acpi_table_header header; /* Common ACPI table header */ -}; - -/* VRTC entry */ - -struct acpi_vrtc_entry { - struct acpi_generic_address physical_address; - u32 irq; -}; - -/******************************************************************************* - * - * WAET - Windows ACPI Emulated devices Table - * Version 1 - * - * Conforms to "Windows ACPI Emulated Devices Table", version 1.0, April 6, 2009 - * - ******************************************************************************/ - -struct acpi_table_waet { - struct acpi_table_header header; /* Common ACPI table header */ - u32 flags; -}; - -/* Masks for Flags field above */ - -#define ACPI_WAET_RTC_NO_ACK (1) /* RTC requires no int acknowledge */ -#define ACPI_WAET_TIMER_ONE_READ (1<<1) /* PM timer requires only one read */ - -/******************************************************************************* - * - * WDAT - Watchdog Action Table - * Version 1 - * - * Conforms to "Hardware Watchdog Timers Design Specification", - * Copyright 2006 Microsoft Corporation. - * - ******************************************************************************/ - -struct acpi_table_wdat { - struct acpi_table_header header; /* Common ACPI table header */ - u32 header_length; /* Watchdog Header Length */ - u16 pci_segment; /* PCI Segment number */ - u8 pci_bus; /* PCI Bus number */ - u8 pci_device; /* PCI Device number */ - u8 pci_function; /* PCI Function number */ - u8 reserved[3]; - u32 timer_period; /* Period of one timer count (msec) */ - u32 max_count; /* Maximum counter value supported */ - u32 min_count; /* Minimum counter value */ - u8 flags; - u8 reserved2[3]; - u32 entries; /* Number of watchdog entries that follow */ -}; - -/* Masks for Flags field above */ - -#define ACPI_WDAT_ENABLED (1) -#define ACPI_WDAT_STOPPED 0x80 - -/* WDAT Instruction Entries (actions) */ - -struct acpi_wdat_entry { - u8 action; - u8 instruction; - u16 reserved; - struct acpi_generic_address register_region; - u32 value; /* Value used with Read/Write register */ - u32 mask; /* Bitmask required for this register instruction */ -}; - -/* Values for Action field above */ - -enum acpi_wdat_actions { - ACPI_WDAT_RESET = 1, - ACPI_WDAT_GET_CURRENT_COUNTDOWN = 4, - ACPI_WDAT_GET_COUNTDOWN = 5, - ACPI_WDAT_SET_COUNTDOWN = 6, - ACPI_WDAT_GET_RUNNING_STATE = 8, - ACPI_WDAT_SET_RUNNING_STATE = 9, - ACPI_WDAT_GET_STOPPED_STATE = 10, - ACPI_WDAT_SET_STOPPED_STATE = 11, - ACPI_WDAT_GET_REBOOT = 16, - ACPI_WDAT_SET_REBOOT = 17, - ACPI_WDAT_GET_SHUTDOWN = 18, - ACPI_WDAT_SET_SHUTDOWN = 19, - ACPI_WDAT_GET_STATUS = 32, - ACPI_WDAT_SET_STATUS = 33, - ACPI_WDAT_ACTION_RESERVED = 34 /* 34 and greater are reserved */ -}; - -/* Values for Instruction field above */ - -enum acpi_wdat_instructions { - ACPI_WDAT_READ_VALUE = 0, - ACPI_WDAT_READ_COUNTDOWN = 1, - ACPI_WDAT_WRITE_VALUE = 2, - ACPI_WDAT_WRITE_COUNTDOWN = 3, - ACPI_WDAT_INSTRUCTION_RESERVED = 4, /* 4 and greater are reserved */ - ACPI_WDAT_PRESERVE_REGISTER = 0x80 /* Except for this value */ -}; - -/******************************************************************************* - * - * WDDT - Watchdog Descriptor Table - * Version 1 - * - * Conforms to "Using the Intel ICH Family Watchdog Timer (WDT)", - * Version 001, September 2002 - * - ******************************************************************************/ - -struct acpi_table_wddt { - struct acpi_table_header header; /* Common ACPI table header */ - u16 spec_version; - u16 table_version; - u16 pci_vendor_id; - struct acpi_generic_address address; - u16 max_count; /* Maximum counter value supported */ - u16 min_count; /* Minimum counter value supported */ - u16 period; - u16 status; - u16 capability; -}; - -/* Flags for Status field above */ - -#define ACPI_WDDT_AVAILABLE (1) -#define ACPI_WDDT_ACTIVE (1<<1) -#define ACPI_WDDT_TCO_OS_OWNED (1<<2) -#define ACPI_WDDT_USER_RESET (1<<11) -#define ACPI_WDDT_WDT_RESET (1<<12) -#define ACPI_WDDT_POWER_FAIL (1<<13) -#define ACPI_WDDT_UNKNOWN_RESET (1<<14) - -/* Flags for Capability field above */ - -#define ACPI_WDDT_AUTO_RESET (1) -#define ACPI_WDDT_ALERT_SUPPORT (1<<1) - -/******************************************************************************* - * - * WDRT - Watchdog Resource Table - * Version 1 - * - * Conforms to "Watchdog Timer Hardware Requirements for Windows Server 2003", - * Version 1.01, August 28, 2006 - * - ******************************************************************************/ - -struct acpi_table_wdrt { - struct acpi_table_header header; /* Common ACPI table header */ - struct acpi_generic_address control_register; - struct acpi_generic_address count_register; - u16 pci_device_id; - u16 pci_vendor_id; - u8 pci_bus; /* PCI Bus number */ - u8 pci_device; /* PCI Device number */ - u8 pci_function; /* PCI Function number */ - u8 pci_segment; /* PCI Segment number */ - u16 max_count; /* Maximum counter value supported */ - u8 units; -}; - -/* Reset to default packing */ - -#pragma pack() - -#endif /* __ACTBL2_H__ */ diff --git a/drivers/include/acpi/actbl3.h b/drivers/include/acpi/actbl3.h deleted file mode 100644 index ddf5e66c3b..0000000000 --- a/drivers/include/acpi/actbl3.h +++ /dev/null @@ -1,762 +0,0 @@ -/****************************************************************************** - * - * Name: actbl3.h - ACPI Table Definitions - * - *****************************************************************************/ - -/* - * Copyright (C) 2000 - 2016, 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 __ACTBL3_H__ -#define __ACTBL3_H__ - -/******************************************************************************* - * - * Additional ACPI Tables (3) - * - * These tables are not consumed directly by the ACPICA subsystem, but are - * included here to support device drivers and the AML disassembler. - * - * In general, the tables in this file are fully defined within the ACPI - * specification. - * - ******************************************************************************/ - -/* - * Values for description table header signatures for tables defined in this - * file. Useful because they make it more difficult to inadvertently type in - * the wrong signature. - */ -#define ACPI_SIG_BGRT "BGRT" /* Boot Graphics Resource Table */ -#define ACPI_SIG_DRTM "DRTM" /* Dynamic Root of Trust for Measurement table */ -#define ACPI_SIG_FPDT "FPDT" /* Firmware Performance Data Table */ -#define ACPI_SIG_GTDT "GTDT" /* Generic Timer Description Table */ -#define ACPI_SIG_MPST "MPST" /* Memory Power State Table */ -#define ACPI_SIG_PCCT "PCCT" /* Platform Communications Channel Table */ -#define ACPI_SIG_PMTT "PMTT" /* Platform Memory Topology Table */ -#define ACPI_SIG_RASF "RASF" /* RAS Feature table */ -#define ACPI_SIG_STAO "STAO" /* Status Override table */ -#define ACPI_SIG_WPBT "WPBT" /* Windows Platform Binary Table */ -#define ACPI_SIG_XENV "XENV" /* Xen Environment table */ - -#define ACPI_SIG_S3PT "S3PT" /* S3 Performance (sub)Table */ -#define ACPI_SIG_PCCS "PCC" /* PCC Shared Memory Region */ - -/* Reserved table signatures */ - -#define ACPI_SIG_MATR "MATR" /* Memory Address Translation Table */ -#define ACPI_SIG_MSDM "MSDM" /* Microsoft Data Management Table */ - -/* - * All tables must be byte-packed to match the ACPI specification, since - * the tables are provided by the system BIOS. - */ -#pragma pack(1) - -/* - * Note: C bitfields are not used for this reason: - * - * "Bitfields are great and easy to read, but unfortunately the C language - * does not specify the layout of bitfields in memory, which means they are - * essentially useless for dealing with packed data in on-disk formats or - * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me, - * this decision was a design error in C. Ritchie could have picked an order - * and stuck with it." Norman Ramsey. - * See http://stackoverflow.com/a/1053662/41661 - */ - -/******************************************************************************* - * - * BGRT - Boot Graphics Resource Table (ACPI 5.0) - * Version 1 - * - ******************************************************************************/ - -struct acpi_table_bgrt { - struct acpi_table_header header; /* Common ACPI table header */ - u16 version; - u8 status; - u8 image_type; - u64 image_address; - u32 image_offset_x; - u32 image_offset_y; -}; - -/******************************************************************************* - * - * DRTM - Dynamic Root of Trust for Measurement table - * Conforms to "TCG D-RTM Architecture" June 17 2013, Version 1.0.0 - * Table version 1 - * - ******************************************************************************/ - -struct acpi_table_drtm { - struct acpi_table_header header; /* Common ACPI table header */ - u64 entry_base_address; - u64 entry_length; - u32 entry_address32; - u64 entry_address64; - u64 exit_address; - u64 log_area_address; - u32 log_area_length; - u64 arch_dependent_address; - u32 flags; -}; - -/* Flag Definitions for above */ - -#define ACPI_DRTM_ACCESS_ALLOWED (1) -#define ACPI_DRTM_ENABLE_GAP_CODE (1<<1) -#define ACPI_DRTM_INCOMPLETE_MEASUREMENTS (1<<2) -#define ACPI_DRTM_AUTHORITY_ORDER (1<<3) - -/* 1) Validated Tables List (64-bit addresses) */ - -struct acpi_drtm_vtable_list { - u32 validated_table_count; - u64 validated_tables[1]; -}; - -/* 2) Resources List (of Resource Descriptors) */ - -/* Resource Descriptor */ - -struct acpi_drtm_resource { - u8 size[7]; - u8 type; - u64 address; -}; - -struct acpi_drtm_resource_list { - u32 resource_count; - struct acpi_drtm_resource resources[1]; -}; - -/* 3) Platform-specific Identifiers List */ - -struct acpi_drtm_dps_id { - u32 dps_id_length; - u8 dps_id[16]; -}; - -/******************************************************************************* - * - * FPDT - Firmware Performance Data Table (ACPI 5.0) - * Version 1 - * - ******************************************************************************/ - -struct acpi_table_fpdt { - struct acpi_table_header header; /* Common ACPI table header */ -}; - -/* FPDT subtable header */ - -struct acpi_fpdt_header { - u16 type; - u8 length; - u8 revision; -}; - -/* Values for Type field above */ - -enum acpi_fpdt_type { - ACPI_FPDT_TYPE_BOOT = 0, - ACPI_FPDT_TYPE_S3PERF = 1 -}; - -/* - * FPDT subtables - */ - -/* 0: Firmware Basic Boot Performance Record */ - -struct acpi_fpdt_boot { - struct acpi_fpdt_header header; - u8 reserved[4]; - u64 reset_end; - u64 load_start; - u64 startup_start; - u64 exit_services_entry; - u64 exit_services_exit; -}; - -/* 1: S3 Performance Table Pointer Record */ - -struct acpi_fpdt_s3pt_ptr { - struct acpi_fpdt_header header; - u8 reserved[4]; - u64 address; -}; - -/* - * S3PT - S3 Performance Table. This table is pointed to by the - * FPDT S3 Pointer Record above. - */ -struct acpi_table_s3pt { - u8 signature[4]; /* "S3PT" */ - u32 length; -}; - -/* - * S3PT Subtables - */ -struct acpi_s3pt_header { - u16 type; - u8 length; - u8 revision; -}; - -/* Values for Type field above */ - -enum acpi_s3pt_type { - ACPI_S3PT_TYPE_RESUME = 0, - ACPI_S3PT_TYPE_SUSPEND = 1 -}; - -struct acpi_s3pt_resume { - struct acpi_s3pt_header header; - u32 resume_count; - u64 full_resume; - u64 average_resume; -}; - -struct acpi_s3pt_suspend { - struct acpi_s3pt_header header; - u64 suspend_start; - u64 suspend_end; -}; - -/******************************************************************************* - * - * GTDT - Generic Timer Description Table (ACPI 5.1) - * Version 2 - * - ******************************************************************************/ - -struct acpi_table_gtdt { - struct acpi_table_header header; /* Common ACPI table header */ - u64 counter_block_addresss; - u32 reserved; - u32 secure_el1_interrupt; - u32 secure_el1_flags; - u32 non_secure_el1_interrupt; - u32 non_secure_el1_flags; - u32 virtual_timer_interrupt; - u32 virtual_timer_flags; - u32 non_secure_el2_interrupt; - u32 non_secure_el2_flags; - u64 counter_read_block_address; - u32 platform_timer_count; - u32 platform_timer_offset; -}; - -/* Flag Definitions: Timer Block Physical Timers and Virtual timers */ - -#define ACPI_GTDT_INTERRUPT_MODE (1) -#define ACPI_GTDT_INTERRUPT_POLARITY (1<<1) -#define ACPI_GTDT_ALWAYS_ON (1<<2) - -/* Common GTDT subtable header */ - -struct acpi_gtdt_header { - u8 type; - u16 length; -}; - -/* Values for GTDT subtable type above */ - -enum acpi_gtdt_type { - ACPI_GTDT_TYPE_TIMER_BLOCK = 0, - ACPI_GTDT_TYPE_WATCHDOG = 1, - ACPI_GTDT_TYPE_RESERVED = 2 /* 2 and greater are reserved */ -}; - -/* GTDT Subtables, correspond to Type in struct acpi_gtdt_header */ - -/* 0: Generic Timer Block */ - -struct acpi_gtdt_timer_block { - struct acpi_gtdt_header header; - u8 reserved; - u64 block_address; - u32 timer_count; - u32 timer_offset; -}; - -/* Timer Sub-Structure, one per timer */ - -struct acpi_gtdt_timer_entry { - u8 frame_number; - u8 reserved[3]; - u64 base_address; - u64 el0_base_address; - u32 timer_interrupt; - u32 timer_flags; - u32 virtual_timer_interrupt; - u32 virtual_timer_flags; - u32 common_flags; -}; - -/* Flag Definitions: timer_flags and virtual_timer_flags above */ - -#define ACPI_GTDT_GT_IRQ_MODE (1) -#define ACPI_GTDT_GT_IRQ_POLARITY (1<<1) - -/* Flag Definitions: common_flags above */ - -#define ACPI_GTDT_GT_IS_SECURE_TIMER (1) -#define ACPI_GTDT_GT_ALWAYS_ON (1<<1) - -/* 1: SBSA Generic Watchdog Structure */ - -struct acpi_gtdt_watchdog { - struct acpi_gtdt_header header; - u8 reserved; - u64 refresh_frame_address; - u64 control_frame_address; - u32 timer_interrupt; - u32 timer_flags; -}; - -/* Flag Definitions: timer_flags above */ - -#define ACPI_GTDT_WATCHDOG_IRQ_MODE (1) -#define ACPI_GTDT_WATCHDOG_IRQ_POLARITY (1<<1) -#define ACPI_GTDT_WATCHDOG_SECURE (1<<2) - -/******************************************************************************* - * - * MPST - Memory Power State Table (ACPI 5.0) - * Version 1 - * - ******************************************************************************/ - -#define ACPI_MPST_CHANNEL_INFO \ - u8 channel_id; \ - u8 reserved1[3]; \ - u16 power_node_count; \ - u16 reserved2; - -/* Main table */ - -struct acpi_table_mpst { - struct acpi_table_header header; /* Common ACPI table header */ - ACPI_MPST_CHANNEL_INFO /* Platform Communication Channel */ -}; - -/* Memory Platform Communication Channel Info */ - -struct acpi_mpst_channel { - ACPI_MPST_CHANNEL_INFO /* Platform Communication Channel */ -}; - -/* Memory Power Node Structure */ - -struct acpi_mpst_power_node { - u8 flags; - u8 reserved1; - u16 node_id; - u32 length; - u64 range_address; - u64 range_length; - u32 num_power_states; - u32 num_physical_components; -}; - -/* Values for Flags field above */ - -#define ACPI_MPST_ENABLED 1 -#define ACPI_MPST_POWER_MANAGED 2 -#define ACPI_MPST_HOT_PLUG_CAPABLE 4 - -/* Memory Power State Structure (follows POWER_NODE above) */ - -struct acpi_mpst_power_state { - u8 power_state; - u8 info_index; -}; - -/* Physical Component ID Structure (follows POWER_STATE above) */ - -struct acpi_mpst_component { - u16 component_id; -}; - -/* Memory Power State Characteristics Structure (follows all POWER_NODEs) */ - -struct acpi_mpst_data_hdr { - u16 characteristics_count; - u16 reserved; -}; - -struct acpi_mpst_power_data { - u8 structure_id; - u8 flags; - u16 reserved1; - u32 average_power; - u32 power_saving; - u64 exit_latency; - u64 reserved2; -}; - -/* Values for Flags field above */ - -#define ACPI_MPST_PRESERVE 1 -#define ACPI_MPST_AUTOENTRY 2 -#define ACPI_MPST_AUTOEXIT 4 - -/* Shared Memory Region (not part of an ACPI table) */ - -struct acpi_mpst_shared { - u32 signature; - u16 pcc_command; - u16 pcc_status; - u32 command_register; - u32 status_register; - u32 power_state_id; - u32 power_node_id; - u64 energy_consumed; - u64 average_power; -}; - -/******************************************************************************* - * - * PCCT - Platform Communications Channel Table (ACPI 5.0) - * Version 1 - * - ******************************************************************************/ - -struct acpi_table_pcct { - struct acpi_table_header header; /* Common ACPI table header */ - u32 flags; - u64 reserved; -}; - -/* Values for Flags field above */ - -#define ACPI_PCCT_DOORBELL 1 - -/* Values for subtable type in struct acpi_subtable_header */ - -enum acpi_pcct_type { - ACPI_PCCT_TYPE_GENERIC_SUBSPACE = 0, - ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE = 1, - ACPI_PCCT_TYPE_RESERVED = 2 /* 2 and greater are reserved */ -}; - -/* - * PCCT Subtables, correspond to Type in struct acpi_subtable_header - */ - -/* 0: Generic Communications Subspace */ - -struct acpi_pcct_subspace { - struct acpi_subtable_header header; - u8 reserved[6]; - u64 base_address; - u64 length; - struct acpi_generic_address doorbell_register; - u64 preserve_mask; - u64 write_mask; - u32 latency; - u32 max_access_rate; - u16 min_turnaround_time; -}; - -/* 1: HW-reduced Communications Subspace (ACPI 5.1) */ - -struct acpi_pcct_hw_reduced { - struct acpi_subtable_header header; - u32 doorbell_interrupt; - u8 flags; - u8 reserved; - u64 base_address; - u64 length; - struct acpi_generic_address doorbell_register; - u64 preserve_mask; - u64 write_mask; - u32 latency; - u32 max_access_rate; - u16 min_turnaround_time; -}; - -/* Values for doorbell flags above */ - -#define ACPI_PCCT_INTERRUPT_POLARITY (1) -#define ACPI_PCCT_INTERRUPT_MODE (1<<1) - -/* - * PCC memory structures (not part of the ACPI table) - */ - -/* Shared Memory Region */ - -struct acpi_pcct_shared_memory { - u32 signature; - u16 command; - u16 status; -}; - -/******************************************************************************* - * - * PMTT - Platform Memory Topology Table (ACPI 5.0) - * Version 1 - * - ******************************************************************************/ - -struct acpi_table_pmtt { - struct acpi_table_header header; /* Common ACPI table header */ - u32 reserved; -}; - -/* Common header for PMTT subtables that follow main table */ - -struct acpi_pmtt_header { - u8 type; - u8 reserved1; - u16 length; - u16 flags; - u16 reserved2; -}; - -/* Values for Type field above */ - -#define ACPI_PMTT_TYPE_SOCKET 0 -#define ACPI_PMTT_TYPE_CONTROLLER 1 -#define ACPI_PMTT_TYPE_DIMM 2 -#define ACPI_PMTT_TYPE_RESERVED 3 /* 0x03-0xFF are reserved */ - -/* Values for Flags field above */ - -#define ACPI_PMTT_TOP_LEVEL 0x0001 -#define ACPI_PMTT_PHYSICAL 0x0002 -#define ACPI_PMTT_MEMORY_TYPE 0x000C - -/* - * PMTT subtables, correspond to Type in struct acpi_pmtt_header - */ - -/* 0: Socket Structure */ - -struct acpi_pmtt_socket { - struct acpi_pmtt_header header; - u16 socket_id; - u16 reserved; -}; - -/* 1: Memory Controller subtable */ - -struct acpi_pmtt_controller { - struct acpi_pmtt_header header; - u32 read_latency; - u32 write_latency; - u32 read_bandwidth; - u32 write_bandwidth; - u16 access_width; - u16 alignment; - u16 reserved; - u16 domain_count; -}; - -/* 1a: Proximity Domain substructure */ - -struct acpi_pmtt_domain { - u32 proximity_domain; -}; - -/* 2: Physical Component Identifier (DIMM) */ - -struct acpi_pmtt_physical_component { - struct acpi_pmtt_header header; - u16 component_id; - u16 reserved; - u32 memory_size; - u32 bios_handle; -}; - -/******************************************************************************* - * - * RASF - RAS Feature Table (ACPI 5.0) - * Version 1 - * - ******************************************************************************/ - -struct acpi_table_rasf { - struct acpi_table_header header; /* Common ACPI table header */ - u8 channel_id[12]; -}; - -/* RASF Platform Communication Channel Shared Memory Region */ - -struct acpi_rasf_shared_memory { - u32 signature; - u16 command; - u16 status; - u16 version; - u8 capabilities[16]; - u8 set_capabilities[16]; - u16 num_parameter_blocks; - u32 set_capabilities_status; -}; - -/* RASF Parameter Block Structure Header */ - -struct acpi_rasf_parameter_block { - u16 type; - u16 version; - u16 length; -}; - -/* RASF Parameter Block Structure for PATROL_SCRUB */ - -struct acpi_rasf_patrol_scrub_parameter { - struct acpi_rasf_parameter_block header; - u16 patrol_scrub_command; - u64 requested_address_range[2]; - u64 actual_address_range[2]; - u16 flags; - u8 requested_speed; -}; - -/* Masks for Flags and Speed fields above */ - -#define ACPI_RASF_SCRUBBER_RUNNING 1 -#define ACPI_RASF_SPEED (7<<1) -#define ACPI_RASF_SPEED_SLOW (0<<1) -#define ACPI_RASF_SPEED_MEDIUM (4<<1) -#define ACPI_RASF_SPEED_FAST (7<<1) - -/* Channel Commands */ - -enum acpi_rasf_commands { - ACPI_RASF_EXECUTE_RASF_COMMAND = 1 -}; - -/* Platform RAS Capabilities */ - -enum acpi_rasf_capabiliities { - ACPI_HW_PATROL_SCRUB_SUPPORTED = 0, - ACPI_SW_PATROL_SCRUB_EXPOSED = 1 -}; - -/* Patrol Scrub Commands */ - -enum acpi_rasf_patrol_scrub_commands { - ACPI_RASF_GET_PATROL_PARAMETERS = 1, - ACPI_RASF_START_PATROL_SCRUBBER = 2, - ACPI_RASF_STOP_PATROL_SCRUBBER = 3 -}; - -/* Channel Command flags */ - -#define ACPI_RASF_GENERATE_SCI (1<<15) - -/* Status values */ - -enum acpi_rasf_status { - ACPI_RASF_SUCCESS = 0, - ACPI_RASF_NOT_VALID = 1, - ACPI_RASF_NOT_SUPPORTED = 2, - ACPI_RASF_BUSY = 3, - ACPI_RASF_FAILED = 4, - ACPI_RASF_ABORTED = 5, - ACPI_RASF_INVALID_DATA = 6 -}; - -/* Status flags */ - -#define ACPI_RASF_COMMAND_COMPLETE (1) -#define ACPI_RASF_SCI_DOORBELL (1<<1) -#define ACPI_RASF_ERROR (1<<2) -#define ACPI_RASF_STATUS (0x1F<<3) - -/******************************************************************************* - * - * STAO - Status Override Table (_STA override) - ACPI 6.0 - * Version 1 - * - * Conforms to "ACPI Specification for Status Override Table" - * 6 January 2015 - * - ******************************************************************************/ - -struct acpi_table_stao { - struct acpi_table_header header; /* Common ACPI table header */ - u8 ignore_uart; -}; - -/******************************************************************************* - * - * WPBT - Windows Platform Environment Table (ACPI 6.0) - * Version 1 - * - * Conforms to "Windows Platform Binary Table (WPBT)" 29 November 2011 - * - ******************************************************************************/ - -struct acpi_table_wpbt { - struct acpi_table_header header; /* Common ACPI table header */ - u32 handoff_size; - u64 handoff_address; - u8 layout; - u8 type; - u16 arguments_length; -}; - -/******************************************************************************* - * - * XENV - Xen Environment Table (ACPI 6.0) - * Version 1 - * - * Conforms to "ACPI Specification for Xen Environment Table" 4 January 2015 - * - ******************************************************************************/ - -struct acpi_table_xenv { - struct acpi_table_header header; /* Common ACPI table header */ - u64 grant_table_address; - u64 grant_table_size; - u32 event_interrupt; - u8 event_flags; -}; - -/* Reset to default packing */ - -#pragma pack() - -#endif /* __ACTBL3_H__ */ diff --git a/drivers/include/acpi/actypes.h b/drivers/include/acpi/actypes.h deleted file mode 100644 index db46546d3b..0000000000 --- a/drivers/include/acpi/actypes.h +++ /dev/null @@ -1,1299 +0,0 @@ -/****************************************************************************** - * - * Name: actypes.h - Common data types for the entire ACPI subsystem - * - *****************************************************************************/ - -/* - * Copyright (C) 2000 - 2016, 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 __ACTYPES_H__ -#define __ACTYPES_H__ - -/* acpisrc:struct_defs -- for acpisrc conversion */ - -/* - * ACPI_MACHINE_WIDTH must be specified in an OS- or compiler-dependent header - * and must be either 32 or 64. 16-bit ACPICA is no longer supported, as of - * 12/2006. - */ -#ifndef ACPI_MACHINE_WIDTH -#error ACPI_MACHINE_WIDTH not defined -#endif - -/* - * Data type ranges - * Note: These macros are designed to be compiler independent as well as - * working around problems that some 32-bit compilers have with 64-bit - * constants. - */ -#define ACPI_UINT8_MAX (u8) (~((u8) 0)) /* 0xFF */ -#define ACPI_UINT16_MAX (u16)(~((u16) 0)) /* 0xFFFF */ -#define ACPI_UINT32_MAX (u32)(~((u32) 0)) /* 0xFFFFFFFF */ -#define ACPI_UINT64_MAX (u64)(~((u64) 0)) /* 0xFFFFFFFFFFFFFFFF */ -#define ACPI_ASCII_MAX 0x7F - -/* - * Architecture-specific ACPICA Subsystem Data Types - * - * The goal of these types is to provide source code portability across - * 16-bit, 32-bit, and 64-bit targets. - * - * 1) The following types are of fixed size for all targets (16/32/64): - * - * u8 Logical boolean - * - * u8 8-bit (1 byte) unsigned value - * u16 16-bit (2 byte) unsigned value - * u32 32-bit (4 byte) unsigned value - * u64 64-bit (8 byte) unsigned value - * - * s16 16-bit (2 byte) signed value - * s32 32-bit (4 byte) signed value - * s64 64-bit (8 byte) signed value - * - * COMPILER_DEPENDENT_UINT64/s64 - These types are defined in the - * compiler-dependent header(s) and were introduced because there is no common - * 64-bit integer type across the various compilation models, as shown in - * the table below. - * - * Datatype LP64 ILP64 LLP64 ILP32 LP32 16bit - * char 8 8 8 8 8 8 - * short 16 16 16 16 16 16 - * _int32 32 - * int 32 64 32 32 16 16 - * long 64 64 32 32 32 32 - * long long 64 64 - * pointer 64 64 64 32 32 32 - * - * Note: ILP64 and LP32 are currently not supported. - * - * - * 2) These types represent the native word size of the target mode of the - * processor, and may be 16-bit, 32-bit, or 64-bit as required. They are - * usually used for memory allocation, efficient loop counters, and array - * indexes. The types are similar to the size_t type in the C library and are - * required because there is no C type that consistently represents the native - * data width. acpi_size is needed because there is no guarantee that a - * kernel-level C library is present. - * - * acpi_size 16/32/64-bit unsigned value - * acpi_native_int 16/32/64-bit signed value - */ - -/******************************************************************************* - * - * Common types for all compilers, all targets - * - ******************************************************************************/ - -#ifndef ACPI_USE_SYSTEM_INTTYPES - -typedef unsigned char u8; -typedef unsigned short u16; -typedef short s16; -typedef COMPILER_DEPENDENT_UINT64 u64; -typedef COMPILER_DEPENDENT_INT64 s64; - -#endif /* ACPI_USE_SYSTEM_INTTYPES */ - -/* - * Value returned by acpi_os_get_thread_id. There is no standard "thread_id" - * across operating systems or even the various UNIX systems. Since ACPICA - * only needs the thread ID as a unique thread identifier, we use a u64 - * as the only common data type - it will accommodate any type of pointer or - * any type of integer. It is up to the host-dependent OSL to cast the - * native thread ID type to a u64 (in acpi_os_get_thread_id). - */ -#define acpi_thread_id u64 - -/******************************************************************************* - * - * Types specific to 64-bit targets - * - ******************************************************************************/ - -#if ACPI_MACHINE_WIDTH == 64 - -#ifndef ACPI_USE_SYSTEM_INTTYPES - -typedef unsigned int u32; -typedef int s32; - -#endif /* ACPI_USE_SYSTEM_INTTYPES */ - -typedef s64 acpi_native_int; - -typedef u64 acpi_size; -typedef u64 acpi_io_address; -typedef u64 acpi_physical_address; - -#define ACPI_MAX_PTR ACPI_UINT64_MAX -#define ACPI_SIZE_MAX ACPI_UINT64_MAX - -#define ACPI_USE_NATIVE_DIVIDE /* Has native 64-bit integer support */ - -/* - * In the case of the Itanium Processor Family (IPF), the hardware does not - * support misaligned memory transfers. Set the MISALIGNMENT_NOT_SUPPORTED flag - * to indicate that special precautions must be taken to avoid alignment faults. - * (IA64 or ia64 is currently used by existing compilers to indicate IPF.) - * - * Note: EM64T and other X86-64 processors support misaligned transfers, - * so there is no need to define this flag. - */ -#if defined (__IA64__) || defined (__ia64__) -#define ACPI_MISALIGNMENT_NOT_SUPPORTED -#endif - -/******************************************************************************* - * - * Types specific to 32-bit targets - * - ******************************************************************************/ - -#elif ACPI_MACHINE_WIDTH == 32 - -#ifndef ACPI_USE_SYSTEM_INTTYPES - -typedef unsigned int u32; -typedef int s32; - -#endif /* ACPI_USE_SYSTEM_INTTYPES */ - -typedef s32 acpi_native_int; - -typedef u32 acpi_size; - -#ifdef ACPI_32BIT_PHYSICAL_ADDRESS - -/* - * OSPMs can define this to shrink the size of the structures for 32-bit - * none PAE environment. ASL compiler may always define this to generate - * 32-bit OSPM compliant tables. - */ -typedef u32 acpi_io_address; -typedef u32 acpi_physical_address; - -#else /* ACPI_32BIT_PHYSICAL_ADDRESS */ - -/* - * It is reported that, after some calculations, the physical addresses can - * wrap over the 32-bit boundary on 32-bit PAE environment. - * https://bugzilla.kernel.org/show_bug.cgi?id=87971 - */ -typedef u64 acpi_io_address; -typedef u64 acpi_physical_address; - -#endif /* ACPI_32BIT_PHYSICAL_ADDRESS */ - -#define ACPI_MAX_PTR ACPI_UINT32_MAX -#define ACPI_SIZE_MAX ACPI_UINT32_MAX - -#else - -/* ACPI_MACHINE_WIDTH must be either 64 or 32 */ - -#error unknown ACPI_MACHINE_WIDTH -#endif - -/******************************************************************************* - * - * OS-dependent types - * - * If the defaults below are not appropriate for the host system, they can - * be defined in the OS-specific header, and this will take precedence. - * - ******************************************************************************/ - -/* Flags for acpi_os_acquire_lock/acpi_os_release_lock */ - -#ifndef acpi_cpu_flags -#define acpi_cpu_flags acpi_size -#endif - -/* Object returned from acpi_os_create_cache */ - -#ifndef acpi_cache_t -#ifdef ACPI_USE_LOCAL_CACHE -#define acpi_cache_t struct acpi_memory_list -#else -#define acpi_cache_t void * -#endif -#endif - -/* - * Synchronization objects - Mutexes, Semaphores, and spin_locks - */ -#if (ACPI_MUTEX_TYPE == ACPI_BINARY_SEMAPHORE) -/* - * These macros are used if the host OS does not support a mutex object. - * Map the OSL Mutex interfaces to binary semaphores. - */ -#define acpi_mutex acpi_semaphore -#define acpi_os_create_mutex(out_handle) acpi_os_create_semaphore (1, 1, out_handle) -#define acpi_os_delete_mutex(handle) (void) acpi_os_delete_semaphore (handle) -#define acpi_os_acquire_mutex(handle,time) acpi_os_wait_semaphore (handle, 1, time) -#define acpi_os_release_mutex(handle) (void) acpi_os_signal_semaphore (handle, 1) -#endif - -/* Configurable types for synchronization objects */ - -#ifndef acpi_spinlock -#define acpi_spinlock void * -#endif - -#ifndef acpi_semaphore -#define acpi_semaphore void * -#endif - -#ifndef acpi_mutex -#define acpi_mutex void * -#endif - -/******************************************************************************* - * - * Compiler-dependent types - * - * If the defaults below are not appropriate for the host compiler, they can - * be defined in the compiler-specific header, and this will take precedence. - * - ******************************************************************************/ - -/* Use C99 uintptr_t for pointer casting if available, "void *" otherwise */ - -#ifndef acpi_uintptr_t -#define acpi_uintptr_t void * -#endif - -/* - * ACPI_PRINTF_LIKE is used to tag functions as "printf-like" because - * some compilers can catch printf format string problems - */ -#ifndef ACPI_PRINTF_LIKE -#define ACPI_PRINTF_LIKE(c) -#endif - -/* - * Some compilers complain about unused variables. Sometimes we don't want to - * use all the variables (for example, _acpi_module_name). This allows us - * to tell the compiler in a per-variable manner that a variable - * is unused - */ -#ifndef ACPI_UNUSED_VAR -#define ACPI_UNUSED_VAR -#endif - -/* - * All ACPICA external functions that are available to the rest of the kernel - * are tagged with thes macros which can be defined as appropriate for the host. - * - * Notes: - * ACPI_EXPORT_SYMBOL_INIT is used for initialization and termination - * interfaces that may need special processing. - * ACPI_EXPORT_SYMBOL is used for all other public external functions. - */ -#ifndef ACPI_EXPORT_SYMBOL_INIT -#define ACPI_EXPORT_SYMBOL_INIT(symbol) -#endif - -#ifndef ACPI_EXPORT_SYMBOL -#define ACPI_EXPORT_SYMBOL(symbol) -#endif - -/* - * Compiler/Clibrary-dependent debug initialization. Used for ACPICA - * utilities only. - */ -#ifndef ACPI_DEBUG_INITIALIZE -#define ACPI_DEBUG_INITIALIZE() -#endif - -/******************************************************************************* - * - * Configuration - * - ******************************************************************************/ - -#ifdef ACPI_NO_MEM_ALLOCATIONS - -#define ACPI_ALLOCATE(a) NULL -#define ACPI_ALLOCATE_ZEROED(a) NULL -#define ACPI_FREE(a) -#define ACPI_MEM_TRACKING(a) - -#else /* ACPI_NO_MEM_ALLOCATIONS */ - -#ifdef ACPI_DBG_TRACK_ALLOCATIONS -/* - * Memory allocation tracking (used by acpi_exec to detect memory leaks) - */ -#define ACPI_MEM_PARAMETERS _COMPONENT, _acpi_module_name, __LINE__ -#define ACPI_ALLOCATE(a) acpi_ut_allocate_and_track ((acpi_size) (a), ACPI_MEM_PARAMETERS) -#define ACPI_ALLOCATE_ZEROED(a) acpi_ut_allocate_zeroed_and_track ((acpi_size) (a), ACPI_MEM_PARAMETERS) -#define ACPI_FREE(a) acpi_ut_free_and_track (a, ACPI_MEM_PARAMETERS) -#define ACPI_MEM_TRACKING(a) a - -#else -/* - * Normal memory allocation directly via the OS services layer - */ -#define ACPI_ALLOCATE(a) acpi_os_allocate ((acpi_size) (a)) -#define ACPI_ALLOCATE_ZEROED(a) acpi_os_allocate_zeroed ((acpi_size) (a)) -#define ACPI_FREE(a) acpi_os_free (a) -#define ACPI_MEM_TRACKING(a) - -#endif /* ACPI_DBG_TRACK_ALLOCATIONS */ - -#endif /* ACPI_NO_MEM_ALLOCATIONS */ - -/****************************************************************************** - * - * ACPI Specification constants (Do not change unless the specification changes) - * - *****************************************************************************/ - -/* Number of distinct FADT-based GPE register blocks (GPE0 and GPE1) */ - -#define ACPI_MAX_GPE_BLOCKS 2 - -/* Default ACPI register widths */ - -#define ACPI_GPE_REGISTER_WIDTH 8 -#define ACPI_PM1_REGISTER_WIDTH 16 -#define ACPI_PM2_REGISTER_WIDTH 8 -#define ACPI_PM_TIMER_WIDTH 32 -#define ACPI_RESET_REGISTER_WIDTH 8 - -/* Names within the namespace are 4 bytes long */ - -#define ACPI_NAME_SIZE 4 -#define ACPI_PATH_SEGMENT_LENGTH 5 /* 4 chars for name + 1 char for separator */ -#define ACPI_PATH_SEPARATOR '.' - -/* Sizes for ACPI table headers */ - -#define ACPI_OEM_ID_SIZE 6 -#define ACPI_OEM_TABLE_ID_SIZE 8 - -/* ACPI/PNP hardware IDs */ - -#define PCI_ROOT_HID_STRING "PNP0A03" -#define PCI_EXPRESS_ROOT_HID_STRING "PNP0A08" - -/* PM Timer ticks per second (HZ) */ - -#define ACPI_PM_TIMER_FREQUENCY 3579545 - -/******************************************************************************* - * - * Independent types - * - ******************************************************************************/ - -/* Logical defines and NULL */ - -#ifdef FALSE -#undef FALSE -#endif -#define FALSE (1 == 0) - -#ifdef TRUE -#undef TRUE -#endif -#define TRUE (1 == 1) - -#ifndef NULL -#define NULL (void *) 0 -#endif - -/* - * Miscellaneous types - */ -typedef u32 acpi_status; /* All ACPI Exceptions */ -typedef u32 acpi_name; /* 4-byte ACPI name */ -typedef char *acpi_string; /* Null terminated ASCII string */ -typedef void *acpi_handle; /* Actually a ptr to a NS Node */ - -/* Time constants for timer calculations */ - -#define ACPI_MSEC_PER_SEC 1000L - -#define ACPI_USEC_PER_MSEC 1000L -#define ACPI_USEC_PER_SEC 1000000L - -#define ACPI_100NSEC_PER_USEC 10L -#define ACPI_100NSEC_PER_MSEC 10000L -#define ACPI_100NSEC_PER_SEC 10000000L - -#define ACPI_NSEC_PER_USEC 1000L -#define ACPI_NSEC_PER_MSEC 1000000L -#define ACPI_NSEC_PER_SEC 1000000000L - -/* Owner IDs are used to track namespace nodes for selective deletion */ - -typedef u8 acpi_owner_id; -#define ACPI_OWNER_ID_MAX 0xFF - -#define ACPI_INTEGER_BIT_SIZE 64 -#define ACPI_MAX_DECIMAL_DIGITS 20 /* 2^64 = 18,446,744,073,709,551,616 */ -#define ACPI_MAX64_DECIMAL_DIGITS 20 -#define ACPI_MAX32_DECIMAL_DIGITS 10 -#define ACPI_MAX16_DECIMAL_DIGITS 5 -#define ACPI_MAX8_DECIMAL_DIGITS 3 - -/* - * Constants with special meanings - */ -#define ACPI_ROOT_OBJECT ACPI_ADD_PTR (acpi_handle, NULL, ACPI_MAX_PTR) -#define ACPI_WAIT_FOREVER 0xFFFF /* u16, as per ACPI spec */ -#define ACPI_DO_NOT_WAIT 0 - -/* - * Obsolete: Acpi integer width. In ACPI version 1 (1996), integers are 32 bits. - * In ACPI version 2 (2000) and later, integers are 64 bits. Note that this - * pertains to the ACPI integer type only, not to other integers used in the - * implementation of the ACPICA subsystem. - * - * 01/2010: This type is obsolete and has been removed from the entire ACPICA - * code base. It remains here for compatibility with device drivers that use - * the type. However, it will be removed in the future. - */ -typedef u64 acpi_integer; -#define ACPI_INTEGER_MAX ACPI_UINT64_MAX - -/******************************************************************************* - * - * Commonly used macros - * - ******************************************************************************/ - -/* Data manipulation */ - -#define ACPI_LOBYTE(integer) ((u8) (u16)(integer)) -#define ACPI_HIBYTE(integer) ((u8) (((u16)(integer)) >> 8)) -#define ACPI_LOWORD(integer) ((u16) (u32)(integer)) -#define ACPI_HIWORD(integer) ((u16)(((u32)(integer)) >> 16)) -#define ACPI_LODWORD(integer64) ((u32) (u64)(integer64)) -#define ACPI_HIDWORD(integer64) ((u32)(((u64)(integer64)) >> 32)) - -#define ACPI_SET_BIT(target,bit) ((target) |= (bit)) -#define ACPI_CLEAR_BIT(target,bit) ((target) &= ~(bit)) -#define ACPI_MIN(a,b) (((a)<(b))?(a):(b)) -#define ACPI_MAX(a,b) (((a)>(b))?(a):(b)) - -/* Size calculation */ - -#define ACPI_ARRAY_LENGTH(x) (sizeof(x) / sizeof((x)[0])) - -/* Pointer manipulation */ - -#define ACPI_CAST_PTR(t, p) ((t *) (acpi_uintptr_t) (p)) -#define ACPI_CAST_INDIRECT_PTR(t, p) ((t **) (acpi_uintptr_t) (p)) -#define ACPI_ADD_PTR(t, a, b) ACPI_CAST_PTR (t, (ACPI_CAST_PTR (u8, (a)) + (acpi_size)(b))) -#define ACPI_SUB_PTR(t, a, b) ACPI_CAST_PTR (t, (ACPI_CAST_PTR (u8, (a)) - (acpi_size)(b))) -#define ACPI_PTR_DIFF(a, b) (acpi_size) (ACPI_CAST_PTR (u8, (a)) - ACPI_CAST_PTR (u8, (b))) - -/* Pointer/Integer type conversions */ - -#define ACPI_TO_POINTER(i) ACPI_ADD_PTR (void, (void *) NULL,(acpi_size) i) -#define ACPI_TO_INTEGER(p) ACPI_PTR_DIFF (p, (void *) NULL) -#define ACPI_OFFSET(d, f) ACPI_PTR_DIFF (&(((d *) 0)->f), (void *) NULL) -#define ACPI_PHYSADDR_TO_PTR(i) ACPI_TO_POINTER(i) -#define ACPI_PTR_TO_PHYSADDR(i) ACPI_TO_INTEGER(i) - -/* Optimizations for 4-character (32-bit) acpi_name manipulation */ - -#ifndef ACPI_MISALIGNMENT_NOT_SUPPORTED -#define ACPI_COMPARE_NAME(a,b) (*ACPI_CAST_PTR (u32, (a)) == *ACPI_CAST_PTR (u32, (b))) -#define ACPI_MOVE_NAME(dest,src) (*ACPI_CAST_PTR (u32, (dest)) = *ACPI_CAST_PTR (u32, (src))) -#else -#define ACPI_COMPARE_NAME(a,b) (!strncmp (ACPI_CAST_PTR (char, (a)), ACPI_CAST_PTR (char, (b)), ACPI_NAME_SIZE)) -#define ACPI_MOVE_NAME(dest,src) (strncpy (ACPI_CAST_PTR (char, (dest)), ACPI_CAST_PTR (char, (src)), ACPI_NAME_SIZE)) -#endif - -/* Support for the special RSDP signature (8 characters) */ - -#define ACPI_VALIDATE_RSDP_SIG(a) (!strncmp (ACPI_CAST_PTR (char, (a)), ACPI_SIG_RSDP, 8)) -#define ACPI_MAKE_RSDP_SIG(dest) (memcpy (ACPI_CAST_PTR (char, (dest)), ACPI_SIG_RSDP, 8)) - -/******************************************************************************* - * - * Miscellaneous constants - * - ******************************************************************************/ - -/* - * Initialization sequence - */ -#define ACPI_FULL_INITIALIZATION 0x00 -#define ACPI_NO_ADDRESS_SPACE_INIT 0x01 -#define ACPI_NO_HARDWARE_INIT 0x02 -#define ACPI_NO_EVENT_INIT 0x04 -#define ACPI_NO_HANDLER_INIT 0x08 -#define ACPI_NO_ACPI_ENABLE 0x10 -#define ACPI_NO_DEVICE_INIT 0x20 -#define ACPI_NO_OBJECT_INIT 0x40 -#define ACPI_NO_FACS_INIT 0x80 - -/* - * Initialization state - */ -#define ACPI_SUBSYSTEM_INITIALIZE 0x01 -#define ACPI_INITIALIZED_OK 0x02 - -/* - * Power state values - */ -#define ACPI_STATE_UNKNOWN (u8) 0xFF - -#define ACPI_STATE_S0 (u8) 0 -#define ACPI_STATE_S1 (u8) 1 -#define ACPI_STATE_S2 (u8) 2 -#define ACPI_STATE_S3 (u8) 3 -#define ACPI_STATE_S4 (u8) 4 -#define ACPI_STATE_S5 (u8) 5 -#define ACPI_S_STATES_MAX ACPI_STATE_S5 -#define ACPI_S_STATE_COUNT 6 - -#define ACPI_STATE_D0 (u8) 0 -#define ACPI_STATE_D1 (u8) 1 -#define ACPI_STATE_D2 (u8) 2 -#define ACPI_STATE_D3_HOT (u8) 3 -#define ACPI_STATE_D3 (u8) 4 -#define ACPI_STATE_D3_COLD ACPI_STATE_D3 -#define ACPI_D_STATES_MAX ACPI_STATE_D3 -#define ACPI_D_STATE_COUNT 5 - -#define ACPI_STATE_C0 (u8) 0 -#define ACPI_STATE_C1 (u8) 1 -#define ACPI_STATE_C2 (u8) 2 -#define ACPI_STATE_C3 (u8) 3 -#define ACPI_C_STATES_MAX ACPI_STATE_C3 -#define ACPI_C_STATE_COUNT 4 - -/* - * Sleep type invalid value - */ -#define ACPI_SLEEP_TYPE_MAX 0x7 -#define ACPI_SLEEP_TYPE_INVALID 0xFF - -/* - * Standard notify values - */ -#define ACPI_NOTIFY_BUS_CHECK (u8) 0x00 -#define ACPI_NOTIFY_DEVICE_CHECK (u8) 0x01 -#define ACPI_NOTIFY_DEVICE_WAKE (u8) 0x02 -#define ACPI_NOTIFY_EJECT_REQUEST (u8) 0x03 -#define ACPI_NOTIFY_DEVICE_CHECK_LIGHT (u8) 0x04 -#define ACPI_NOTIFY_FREQUENCY_MISMATCH (u8) 0x05 -#define ACPI_NOTIFY_BUS_MODE_MISMATCH (u8) 0x06 -#define ACPI_NOTIFY_POWER_FAULT (u8) 0x07 -#define ACPI_NOTIFY_CAPABILITIES_CHECK (u8) 0x08 -#define ACPI_NOTIFY_DEVICE_PLD_CHECK (u8) 0x09 -#define ACPI_NOTIFY_RESERVED (u8) 0x0A -#define ACPI_NOTIFY_LOCALITY_UPDATE (u8) 0x0B -#define ACPI_NOTIFY_SHUTDOWN_REQUEST (u8) 0x0C -#define ACPI_NOTIFY_AFFINITY_UPDATE (u8) 0x0D - -#define ACPI_NOTIFY_MAX 0x0D - -/* - * Types associated with ACPI names and objects. The first group of - * values (up to ACPI_TYPE_EXTERNAL_MAX) correspond to the definition - * of the ACPI object_type() operator (See the ACPI Spec). Therefore, - * only add to the first group if the spec changes. - * - * NOTE: Types must be kept in sync with the global acpi_ns_properties - * and acpi_ns_type_names arrays. - */ -typedef u32 acpi_object_type; - -#define ACPI_TYPE_ANY 0x00 -#define ACPI_TYPE_INTEGER 0x01 /* Byte/Word/Dword/Zero/One/Ones */ -#define ACPI_TYPE_STRING 0x02 -#define ACPI_TYPE_BUFFER 0x03 -#define ACPI_TYPE_PACKAGE 0x04 /* byte_const, multiple data_term/Constant/super_name */ -#define ACPI_TYPE_FIELD_UNIT 0x05 -#define ACPI_TYPE_DEVICE 0x06 /* Name, multiple Node */ -#define ACPI_TYPE_EVENT 0x07 -#define ACPI_TYPE_METHOD 0x08 /* Name, byte_const, multiple Code */ -#define ACPI_TYPE_MUTEX 0x09 -#define ACPI_TYPE_REGION 0x0A -#define ACPI_TYPE_POWER 0x0B /* Name,byte_const,word_const,multi Node */ -#define ACPI_TYPE_PROCESSOR 0x0C /* Name,byte_const,Dword_const,byte_const,multi nm_o */ -#define ACPI_TYPE_THERMAL 0x0D /* Name, multiple Node */ -#define ACPI_TYPE_BUFFER_FIELD 0x0E -#define ACPI_TYPE_DDB_HANDLE 0x0F -#define ACPI_TYPE_DEBUG_OBJECT 0x10 - -#define ACPI_TYPE_EXTERNAL_MAX 0x10 -#define ACPI_NUM_TYPES (ACPI_TYPE_EXTERNAL_MAX + 1) - -/* - * These are object types that do not map directly to the ACPI - * object_type() operator. They are used for various internal purposes only. - * If new predefined ACPI_TYPEs are added (via the ACPI specification), these - * internal types must move upwards. (There is code that depends on these - * values being contiguous with the external types above.) - */ -#define ACPI_TYPE_LOCAL_REGION_FIELD 0x11 -#define ACPI_TYPE_LOCAL_BANK_FIELD 0x12 -#define ACPI_TYPE_LOCAL_INDEX_FIELD 0x13 -#define ACPI_TYPE_LOCAL_REFERENCE 0x14 /* Arg#, Local#, Name, Debug, ref_of, Index */ -#define ACPI_TYPE_LOCAL_ALIAS 0x15 -#define ACPI_TYPE_LOCAL_METHOD_ALIAS 0x16 -#define ACPI_TYPE_LOCAL_NOTIFY 0x17 -#define ACPI_TYPE_LOCAL_ADDRESS_HANDLER 0x18 -#define ACPI_TYPE_LOCAL_RESOURCE 0x19 -#define ACPI_TYPE_LOCAL_RESOURCE_FIELD 0x1A -#define ACPI_TYPE_LOCAL_SCOPE 0x1B /* 1 Name, multiple object_list Nodes */ - -#define ACPI_TYPE_NS_NODE_MAX 0x1B /* Last typecode used within a NS Node */ -#define ACPI_TOTAL_TYPES (ACPI_TYPE_NS_NODE_MAX + 1) - -/* - * These are special object types that never appear in - * a Namespace node, only in an object of union acpi_operand_object - */ -#define ACPI_TYPE_LOCAL_EXTRA 0x1C -#define ACPI_TYPE_LOCAL_DATA 0x1D - -#define ACPI_TYPE_LOCAL_MAX 0x1D - -/* All types above here are invalid */ - -#define ACPI_TYPE_INVALID 0x1E -#define ACPI_TYPE_NOT_FOUND 0xFF - -#define ACPI_NUM_NS_TYPES (ACPI_TYPE_INVALID + 1) - -/* - * All I/O - */ -#define ACPI_READ 0 -#define ACPI_WRITE 1 -#define ACPI_IO_MASK 1 - -/* - * Event Types: Fixed & General Purpose - */ -typedef u32 acpi_event_type; - -/* - * Fixed events - */ -#define ACPI_EVENT_PMTIMER 0 -#define ACPI_EVENT_GLOBAL 1 -#define ACPI_EVENT_POWER_BUTTON 2 -#define ACPI_EVENT_SLEEP_BUTTON 3 -#define ACPI_EVENT_RTC 4 -#define ACPI_EVENT_MAX 4 -#define ACPI_NUM_FIXED_EVENTS ACPI_EVENT_MAX + 1 - -/* - * Event status - Per event - * ------------- - * The encoding of acpi_event_status is illustrated below. - * Note that a set bit (1) indicates the property is TRUE - * (e.g. if bit 0 is set then the event is enabled). - * +-------------+-+-+-+-+-+ - * | Bits 31:5 |4|3|2|1|0| - * +-------------+-+-+-+-+-+ - * | | | | | | - * | | | | | +- Enabled? - * | | | | +--- Enabled for wake? - * | | | +----- Status bit set? - * | | +------- Enable bit set? - * | +--------- Has a handler? - * +--------------- - */ -typedef u32 acpi_event_status; - -#define ACPI_EVENT_FLAG_DISABLED (acpi_event_status) 0x00 -#define ACPI_EVENT_FLAG_ENABLED (acpi_event_status) 0x01 -#define ACPI_EVENT_FLAG_WAKE_ENABLED (acpi_event_status) 0x02 -#define ACPI_EVENT_FLAG_STATUS_SET (acpi_event_status) 0x04 -#define ACPI_EVENT_FLAG_ENABLE_SET (acpi_event_status) 0x08 -#define ACPI_EVENT_FLAG_HAS_HANDLER (acpi_event_status) 0x10 -#define ACPI_EVENT_FLAG_SET ACPI_EVENT_FLAG_STATUS_SET - -/* Actions for acpi_set_gpe, acpi_gpe_wakeup, acpi_hw_low_set_gpe */ - -#define ACPI_GPE_ENABLE 0 -#define ACPI_GPE_DISABLE 1 -#define ACPI_GPE_CONDITIONAL_ENABLE 2 - -/* - * GPE info flags - Per GPE - * +-------+-+-+---+ - * | 7:5 |4|3|2:0| - * +-------+-+-+---+ - * | | | | - * | | | +-- Type of dispatch:to method, handler, notify, or none - * | | +----- Interrupt type: edge or level triggered - * | +------- Is a Wake GPE - * +------------ - */ -#define ACPI_GPE_DISPATCH_NONE (u8) 0x00 -#define ACPI_GPE_DISPATCH_METHOD (u8) 0x01 -#define ACPI_GPE_DISPATCH_HANDLER (u8) 0x02 -#define ACPI_GPE_DISPATCH_NOTIFY (u8) 0x03 -#define ACPI_GPE_DISPATCH_RAW_HANDLER (u8) 0x04 -#define ACPI_GPE_DISPATCH_MASK (u8) 0x07 -#define ACPI_GPE_DISPATCH_TYPE(flags) ((u8) ((flags) & ACPI_GPE_DISPATCH_MASK)) - -#define ACPI_GPE_LEVEL_TRIGGERED (u8) 0x08 -#define ACPI_GPE_EDGE_TRIGGERED (u8) 0x00 -#define ACPI_GPE_XRUPT_TYPE_MASK (u8) 0x08 - -#define ACPI_GPE_CAN_WAKE (u8) 0x10 - -/* - * Flags for GPE and Lock interfaces - */ -#define ACPI_NOT_ISR 0x1 -#define ACPI_ISR 0x0 - -/* Notify types */ - -#define ACPI_SYSTEM_NOTIFY 0x1 -#define ACPI_DEVICE_NOTIFY 0x2 -#define ACPI_ALL_NOTIFY (ACPI_SYSTEM_NOTIFY | ACPI_DEVICE_NOTIFY) -#define ACPI_MAX_NOTIFY_HANDLER_TYPE 0x3 -#define ACPI_NUM_NOTIFY_TYPES 2 - -#define ACPI_MAX_SYS_NOTIFY 0x7F -#define ACPI_MAX_DEVICE_SPECIFIC_NOTIFY 0xBF - -#define ACPI_SYSTEM_HANDLER_LIST 0 /* Used as index, must be SYSTEM_NOTIFY -1 */ -#define ACPI_DEVICE_HANDLER_LIST 1 /* Used as index, must be DEVICE_NOTIFY -1 */ - -/* Address Space (Operation Region) Types */ - -typedef u8 acpi_adr_space_type; - -#define ACPI_ADR_SPACE_SYSTEM_MEMORY (acpi_adr_space_type) 0 -#define ACPI_ADR_SPACE_SYSTEM_IO (acpi_adr_space_type) 1 -#define ACPI_ADR_SPACE_PCI_CONFIG (acpi_adr_space_type) 2 -#define ACPI_ADR_SPACE_EC (acpi_adr_space_type) 3 -#define ACPI_ADR_SPACE_SMBUS (acpi_adr_space_type) 4 -#define ACPI_ADR_SPACE_CMOS (acpi_adr_space_type) 5 -#define ACPI_ADR_SPACE_PCI_BAR_TARGET (acpi_adr_space_type) 6 -#define ACPI_ADR_SPACE_IPMI (acpi_adr_space_type) 7 -#define ACPI_ADR_SPACE_GPIO (acpi_adr_space_type) 8 -#define ACPI_ADR_SPACE_GSBUS (acpi_adr_space_type) 9 -#define ACPI_ADR_SPACE_PLATFORM_COMM (acpi_adr_space_type) 10 - -#define ACPI_NUM_PREDEFINED_REGIONS 11 - -/* - * Special Address Spaces - * - * Note: A Data Table region is a special type of operation region - * that has its own AML opcode. However, internally, the AML - * interpreter simply creates an operation region with an an address - * space type of ACPI_ADR_SPACE_DATA_TABLE. - */ -#define ACPI_ADR_SPACE_DATA_TABLE (acpi_adr_space_type) 0x7E /* Internal to ACPICA only */ -#define ACPI_ADR_SPACE_FIXED_HARDWARE (acpi_adr_space_type) 0x7F - -/* Values for _REG connection code */ - -#define ACPI_REG_DISCONNECT 0 -#define ACPI_REG_CONNECT 1 - -/* - * bit_register IDs - * - * These values are intended to be used by the hardware interfaces - * and are mapped to individual bitfields defined within the ACPI - * registers. See the acpi_gbl_bit_register_info global table in utglobal.c - * for this mapping. - */ - -/* PM1 Status register */ - -#define ACPI_BITREG_TIMER_STATUS 0x00 -#define ACPI_BITREG_BUS_MASTER_STATUS 0x01 -#define ACPI_BITREG_GLOBAL_LOCK_STATUS 0x02 -#define ACPI_BITREG_POWER_BUTTON_STATUS 0x03 -#define ACPI_BITREG_SLEEP_BUTTON_STATUS 0x04 -#define ACPI_BITREG_RT_CLOCK_STATUS 0x05 -#define ACPI_BITREG_WAKE_STATUS 0x06 -#define ACPI_BITREG_PCIEXP_WAKE_STATUS 0x07 - -/* PM1 Enable register */ - -#define ACPI_BITREG_TIMER_ENABLE 0x08 -#define ACPI_BITREG_GLOBAL_LOCK_ENABLE 0x09 -#define ACPI_BITREG_POWER_BUTTON_ENABLE 0x0A -#define ACPI_BITREG_SLEEP_BUTTON_ENABLE 0x0B -#define ACPI_BITREG_RT_CLOCK_ENABLE 0x0C -#define ACPI_BITREG_PCIEXP_WAKE_DISABLE 0x0D - -/* PM1 Control register */ - -#define ACPI_BITREG_SCI_ENABLE 0x0E -#define ACPI_BITREG_BUS_MASTER_RLD 0x0F -#define ACPI_BITREG_GLOBAL_LOCK_RELEASE 0x10 -#define ACPI_BITREG_SLEEP_TYPE 0x11 -#define ACPI_BITREG_SLEEP_ENABLE 0x12 - -/* PM2 Control register */ - -#define ACPI_BITREG_ARB_DISABLE 0x13 - -#define ACPI_BITREG_MAX 0x13 -#define ACPI_NUM_BITREG ACPI_BITREG_MAX + 1 - -/* Status register values. A 1 clears a status bit. 0 = no effect */ - -#define ACPI_CLEAR_STATUS 1 - -/* Enable and Control register values */ - -#define ACPI_ENABLE_EVENT 1 -#define ACPI_DISABLE_EVENT 0 - -/* Sleep function dispatch */ - -typedef acpi_status(*acpi_sleep_function) (u8 sleep_state); - -struct acpi_sleep_functions { - acpi_sleep_function legacy_function; - acpi_sleep_function extended_function; -}; - -/* - * External ACPI object definition - */ - -/* - * Note: Type == ACPI_TYPE_ANY (0) is used to indicate a NULL package element - * or an unresolved named reference. - */ -union acpi_object { - acpi_object_type type; /* See definition of acpi_ns_type for values */ - struct { - acpi_object_type type; /* ACPI_TYPE_INTEGER */ - u64 value; /* The actual number */ - } integer; - - struct { - acpi_object_type type; /* ACPI_TYPE_STRING */ - u32 length; /* # of bytes in string, excluding trailing null */ - char *pointer; /* points to the string value */ - } string; - - struct { - acpi_object_type type; /* ACPI_TYPE_BUFFER */ - u32 length; /* # of bytes in buffer */ - u8 *pointer; /* points to the buffer */ - } buffer; - - struct { - acpi_object_type type; /* ACPI_TYPE_PACKAGE */ - u32 count; /* # of elements in package */ - union acpi_object *elements; /* Pointer to an array of ACPI_OBJECTs */ - } package; - - struct { - acpi_object_type type; /* ACPI_TYPE_LOCAL_REFERENCE */ - acpi_object_type actual_type; /* Type associated with the Handle */ - acpi_handle handle; /* object reference */ - } reference; - - struct { - acpi_object_type type; /* ACPI_TYPE_PROCESSOR */ - u32 proc_id; - acpi_io_address pblk_address; - u32 pblk_length; - } processor; - - struct { - acpi_object_type type; /* ACPI_TYPE_POWER */ - u32 system_level; - u32 resource_order; - } power_resource; -}; - -/* - * List of objects, used as a parameter list for control method evaluation - */ -struct acpi_object_list { - u32 count; - union acpi_object *pointer; -}; - -/* - * Miscellaneous common Data Structures used by the interfaces - */ -#define ACPI_NO_BUFFER 0 - -#ifdef ACPI_NO_MEM_ALLOCATIONS - -#define ACPI_ALLOCATE_BUFFER (acpi_size) (0) -#define ACPI_ALLOCATE_LOCAL_BUFFER (acpi_size) (0) - -#else /* ACPI_NO_MEM_ALLOCATIONS */ - -#define ACPI_ALLOCATE_BUFFER (acpi_size) (-1) /* Let ACPICA allocate buffer */ -#define ACPI_ALLOCATE_LOCAL_BUFFER (acpi_size) (-2) /* For internal use only (enables tracking) */ - -#endif /* ACPI_NO_MEM_ALLOCATIONS */ - -struct acpi_buffer { - acpi_size length; /* Length in bytes of the buffer */ - void *pointer; /* pointer to buffer */ -}; - -/* - * name_type for acpi_get_name - */ -#define ACPI_FULL_PATHNAME 0 -#define ACPI_SINGLE_NAME 1 -#define ACPI_FULL_PATHNAME_NO_TRAILING 2 -#define ACPI_NAME_TYPE_MAX 2 - -/* - * Predefined Namespace items - */ -struct acpi_predefined_names { - char *name; - u8 type; - char *val; -}; - -/* - * Structure and flags for acpi_get_system_info - */ -#define ACPI_SYS_MODE_UNKNOWN 0x0000 -#define ACPI_SYS_MODE_ACPI 0x0001 -#define ACPI_SYS_MODE_LEGACY 0x0002 -#define ACPI_SYS_MODES_MASK 0x0003 - -/* - * System info returned by acpi_get_system_info() - */ -struct acpi_system_info { - u32 acpi_ca_version; - u32 flags; - u32 timer_resolution; - u32 reserved1; - u32 reserved2; - u32 debug_level; - u32 debug_layer; -}; - -/* - * System statistics returned by acpi_get_statistics() - */ -struct acpi_statistics { - u32 sci_count; - u32 gpe_count; - u32 fixed_event_count[ACPI_NUM_FIXED_EVENTS]; - u32 method_count; -}; - -/* Table Event Types */ - -#define ACPI_TABLE_EVENT_LOAD 0x0 -#define ACPI_TABLE_EVENT_UNLOAD 0x1 -#define ACPI_NUM_TABLE_EVENTS 2 - -/* - * Types specific to the OS service interfaces - */ -typedef u32 - (ACPI_SYSTEM_XFACE * acpi_osd_handler) (void *context); - -typedef void - (ACPI_SYSTEM_XFACE * acpi_osd_exec_callback) (void *context); - -/* - * Various handlers and callback procedures - */ -typedef -u32 (*acpi_sci_handler) (void *context); - -typedef -void (*acpi_gbl_event_handler) (u32 event_type, - acpi_handle device, - u32 event_number, void *context); - -#define ACPI_EVENT_TYPE_GPE 0 -#define ACPI_EVENT_TYPE_FIXED 1 - -typedef -u32(*acpi_event_handler) (void *context); - -typedef -u32 (*acpi_gpe_handler) (acpi_handle gpe_device, u32 gpe_number, void *context); - -typedef -void (*acpi_notify_handler) (acpi_handle device, u32 value, void *context); - -typedef -void (*acpi_object_handler) (acpi_handle object, void *data); - -typedef acpi_status(*acpi_init_handler) (acpi_handle object, u32 function); - -#define ACPI_INIT_DEVICE_INI 1 - -typedef -acpi_status(*acpi_exception_handler) (acpi_status aml_status, - acpi_name name, - u16 opcode, - u32 aml_offset, void *context); - -/* Table Event handler (Load, load_table, etc.) and types */ - -typedef -acpi_status(*acpi_table_handler) (u32 event, void *table, void *context); - -#define ACPI_TABLE_LOAD 0x0 -#define ACPI_TABLE_UNLOAD 0x1 -#define ACPI_NUM_TABLE_EVENTS 2 - -/* Address Spaces (For Operation Regions) */ - -typedef -acpi_status(*acpi_adr_space_handler) (u32 function, - acpi_physical_address address, - u32 bit_width, - u64 *value, - void *handler_context, - void *region_context); - -#define ACPI_DEFAULT_HANDLER NULL - -/* Special Context data for generic_serial_bus/general_purpose_io (ACPI 5.0) */ - -struct acpi_connection_info { - u8 *connection; - u16 length; - u8 access_length; -}; - -typedef -acpi_status(*acpi_adr_space_setup) (acpi_handle region_handle, - u32 function, - void *handler_context, - void **region_context); - -#define ACPI_REGION_ACTIVATE 0 -#define ACPI_REGION_DEACTIVATE 1 - -typedef -acpi_status(*acpi_walk_callback) (acpi_handle object, - u32 nesting_level, - void *context, void **return_value); - -typedef -u32 (*acpi_interface_handler) (acpi_string interface_name, u32 supported); - -/* Interrupt handler return values */ - -#define ACPI_INTERRUPT_NOT_HANDLED 0x00 -#define ACPI_INTERRUPT_HANDLED 0x01 - -/* GPE handler return values */ - -#define ACPI_REENABLE_GPE 0x80 - -/* Length of 32-bit EISAID values when converted back to a string */ - -#define ACPI_EISAID_STRING_SIZE 8 /* Includes null terminator */ - -/* Length of UUID (string) values */ - -#define ACPI_UUID_LENGTH 16 - -/* Length of 3-byte PCI class code values when converted back to a string */ - -#define ACPI_PCICLS_STRING_SIZE 7 /* Includes null terminator */ - -/* Structures used for device/processor HID, UID, CID */ - -struct acpi_pnp_device_id { - u32 length; /* Length of string + null */ - char *string; -}; - -struct acpi_pnp_device_id_list { - u32 count; /* Number of IDs in Ids array */ - u32 list_size; /* Size of list, including ID strings */ - struct acpi_pnp_device_id ids[1]; /* ID array */ -}; - -/* - * Structure returned from acpi_get_object_info. - * Optimized for both 32- and 64-bit builds - */ -struct acpi_device_info { - u32 info_size; /* Size of info, including ID strings */ - u32 name; /* ACPI object Name */ - acpi_object_type type; /* ACPI object Type */ - u8 param_count; /* If a method, required parameter count */ - u16 valid; /* Indicates which optional fields are valid */ - u8 flags; /* Miscellaneous info */ - u8 highest_dstates[4]; /* _sx_d values: 0xFF indicates not valid */ - u8 lowest_dstates[5]; /* _sx_w values: 0xFF indicates not valid */ - u32 current_status; /* _STA value */ - u64 address; /* _ADR value */ - struct acpi_pnp_device_id hardware_id; /* _HID value */ - struct acpi_pnp_device_id unique_id; /* _UID value */ - struct acpi_pnp_device_id class_code; /* _CLS value */ - struct acpi_pnp_device_id_list compatible_id_list; /* _CID list */ -}; - -/* Values for Flags field above (acpi_get_object_info) */ - -#define ACPI_PCI_ROOT_BRIDGE 0x01 - -/* Flags for Valid field above (acpi_get_object_info) */ - -#define ACPI_VALID_STA 0x0001 -#define ACPI_VALID_ADR 0x0002 -#define ACPI_VALID_HID 0x0004 -#define ACPI_VALID_UID 0x0008 -#define ACPI_VALID_CID 0x0020 -#define ACPI_VALID_CLS 0x0040 -#define ACPI_VALID_SXDS 0x0100 -#define ACPI_VALID_SXWS 0x0200 - -/* Flags for _STA method */ - -#define ACPI_STA_DEVICE_PRESENT 0x01 -#define ACPI_STA_DEVICE_ENABLED 0x02 -#define ACPI_STA_DEVICE_UI 0x04 -#define ACPI_STA_DEVICE_FUNCTIONING 0x08 -#define ACPI_STA_DEVICE_OK 0x08 /* Synonym */ -#define ACPI_STA_BATTERY_PRESENT 0x10 - -/* Context structs for address space handlers */ - -struct acpi_pci_id { - u16 segment; - u16 bus; - u16 device; - u16 function; -}; - -struct acpi_mem_space_context { - u32 length; - acpi_physical_address address; - acpi_physical_address mapped_physical_address; - u8 *mapped_logical_address; - acpi_size mapped_length; -}; - -/* - * struct acpi_memory_list is used only if the ACPICA local cache is enabled - */ -struct acpi_memory_list { - char *list_name; - void *list_head; - u16 object_size; - u16 max_depth; - u16 current_depth; - -#ifdef ACPI_DBG_TRACK_ALLOCATIONS - - /* Statistics for debug memory tracking only */ - - u32 total_allocated; - u32 total_freed; - u32 max_occupied; - u32 total_size; - u32 current_total_size; - u32 requests; - u32 hits; -#endif -}; - -/* Definitions of trace event types */ - -typedef enum { - ACPI_TRACE_AML_METHOD, - ACPI_TRACE_AML_OPCODE, - ACPI_TRACE_AML_REGION -} acpi_trace_event_type; - -/* Definitions of _OSI support */ - -#define ACPI_VENDOR_STRINGS 0x01 -#define ACPI_FEATURE_STRINGS 0x02 -#define ACPI_ENABLE_INTERFACES 0x00 -#define ACPI_DISABLE_INTERFACES 0x04 - -#define ACPI_DISABLE_ALL_VENDOR_STRINGS (ACPI_DISABLE_INTERFACES | ACPI_VENDOR_STRINGS) -#define ACPI_DISABLE_ALL_FEATURE_STRINGS (ACPI_DISABLE_INTERFACES | ACPI_FEATURE_STRINGS) -#define ACPI_DISABLE_ALL_STRINGS (ACPI_DISABLE_INTERFACES | ACPI_VENDOR_STRINGS | ACPI_FEATURE_STRINGS) -#define ACPI_ENABLE_ALL_VENDOR_STRINGS (ACPI_ENABLE_INTERFACES | ACPI_VENDOR_STRINGS) -#define ACPI_ENABLE_ALL_FEATURE_STRINGS (ACPI_ENABLE_INTERFACES | ACPI_FEATURE_STRINGS) -#define ACPI_ENABLE_ALL_STRINGS (ACPI_ENABLE_INTERFACES | ACPI_VENDOR_STRINGS | ACPI_FEATURE_STRINGS) - -#define ACPI_OSI_WIN_2000 0x01 -#define ACPI_OSI_WIN_XP 0x02 -#define ACPI_OSI_WIN_XP_SP1 0x03 -#define ACPI_OSI_WINSRV_2003 0x04 -#define ACPI_OSI_WIN_XP_SP2 0x05 -#define ACPI_OSI_WINSRV_2003_SP1 0x06 -#define ACPI_OSI_WIN_VISTA 0x07 -#define ACPI_OSI_WINSRV_2008 0x08 -#define ACPI_OSI_WIN_VISTA_SP1 0x09 -#define ACPI_OSI_WIN_VISTA_SP2 0x0A -#define ACPI_OSI_WIN_7 0x0B -#define ACPI_OSI_WIN_8 0x0C -#define ACPI_OSI_WIN_10 0x0D - -/* Definitions of file IO */ - -#define ACPI_FILE_READING 0x01 -#define ACPI_FILE_WRITING 0x02 -#define ACPI_FILE_BINARY 0x04 - -#define ACPI_FILE_BEGIN 0x01 -#define ACPI_FILE_END 0x02 - -/* Definitions of getopt */ - -#define ACPI_OPT_END -1 - -#endif /* __ACTYPES_H__ */ diff --git a/drivers/include/acpi/pdc_intel.h b/drivers/include/acpi/pdc_intel.h deleted file mode 100644 index 552637b0d0..0000000000 --- a/drivers/include/acpi/pdc_intel.h +++ /dev/null @@ -1,35 +0,0 @@ - -/* _PDC bit definition for Intel processors */ - -#ifndef __PDC_INTEL_H__ -#define __PDC_INTEL_H__ - -#define ACPI_PDC_P_FFH (0x0001) -#define ACPI_PDC_C_C1_HALT (0x0002) -#define ACPI_PDC_T_FFH (0x0004) -#define ACPI_PDC_SMP_C1PT (0x0008) -#define ACPI_PDC_SMP_C2C3 (0x0010) -#define ACPI_PDC_SMP_P_SWCOORD (0x0020) -#define ACPI_PDC_SMP_C_SWCOORD (0x0040) -#define ACPI_PDC_SMP_T_SWCOORD (0x0080) -#define ACPI_PDC_C_C1_FFH (0x0100) -#define ACPI_PDC_C_C2C3_FFH (0x0200) -#define ACPI_PDC_SMP_P_HWCOORD (0x0800) - -#define ACPI_PDC_EST_CAPABILITY_SMP (ACPI_PDC_SMP_C1PT | \ - ACPI_PDC_C_C1_HALT | \ - ACPI_PDC_P_FFH) - -#define ACPI_PDC_EST_CAPABILITY_SWSMP (ACPI_PDC_SMP_C1PT | \ - ACPI_PDC_C_C1_HALT | \ - ACPI_PDC_SMP_P_SWCOORD | \ - ACPI_PDC_SMP_P_HWCOORD | \ - ACPI_PDC_P_FFH) - -#define ACPI_PDC_C_CAPABILITY_SMP (ACPI_PDC_SMP_C2C3 | \ - ACPI_PDC_SMP_C1PT | \ - ACPI_PDC_C_C1_HALT | \ - ACPI_PDC_C_C1_FFH | \ - ACPI_PDC_C_C2C3_FFH) - -#endif /* __PDC_INTEL_H__ */ diff --git a/drivers/include/acpi/platform/acenv.h b/drivers/include/acpi/platform/acenv.h deleted file mode 100644 index 2b1ee5567a..0000000000 --- a/drivers/include/acpi/platform/acenv.h +++ /dev/null @@ -1,402 +0,0 @@ -/****************************************************************************** - * - * Name: acenv.h - Host and compiler configuration - * - *****************************************************************************/ - -/* - * Copyright (C) 2000 - 2016, 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 __ACENV_H__ -#define __ACENV_H__ - -/* - * Environment configuration. The purpose of this file is to interface ACPICA - * to the local environment. This includes compiler-specific, OS-specific, - * and machine-specific configuration. - */ - -/* Types for ACPI_MUTEX_TYPE */ - -#define ACPI_BINARY_SEMAPHORE 0 -#define ACPI_OSL_MUTEX 1 - -/* Types for DEBUGGER_THREADING */ - -#define DEBUGGER_SINGLE_THREADED 0 -#define DEBUGGER_MULTI_THREADED 1 - -/****************************************************************************** - * - * Configuration for ACPI tools and utilities - * - *****************************************************************************/ - -/* iASL configuration */ - -#ifdef ACPI_ASL_COMPILER -#define ACPI_APPLICATION -#define ACPI_DEBUG_OUTPUT -#define ACPI_CONSTANT_EVAL_ONLY -#define ACPI_LARGE_NAMESPACE_NODE -#define ACPI_DATA_TABLE_DISASSEMBLY -#define ACPI_SINGLE_THREADED -#define ACPI_32BIT_PHYSICAL_ADDRESS - -#define ACPI_DISASSEMBLER 1 -#endif - -/* acpi_exec configuration. Multithreaded with full AML debugger */ - -#ifdef ACPI_EXEC_APP -#define ACPI_APPLICATION -#define ACPI_FULL_DEBUG -#define ACPI_MUTEX_DEBUG -#define ACPI_DBG_TRACK_ALLOCATIONS -#endif - -/* - * acpi_bin/acpi_dump/acpi_help/acpi_names/acpi_src/acpi_xtract/Example - * configuration. All single threaded. - */ -#if (defined ACPI_BIN_APP) || \ - (defined ACPI_DUMP_APP) || \ - (defined ACPI_HELP_APP) || \ - (defined ACPI_NAMES_APP) || \ - (defined ACPI_SRC_APP) || \ - (defined ACPI_XTRACT_APP) || \ - (defined ACPI_EXAMPLE_APP) -#define ACPI_APPLICATION -#define ACPI_SINGLE_THREADED -#endif - -/* acpi_help configuration. Error messages disabled. */ - -#ifdef ACPI_HELP_APP -#define ACPI_NO_ERROR_MESSAGES -#endif - -/* acpi_names configuration. Debug output enabled. */ - -#ifdef ACPI_NAMES_APP -#define ACPI_DEBUG_OUTPUT -#endif - -/* acpi_exec/acpi_names/Example configuration. Native RSDP used. */ - -#if (defined ACPI_EXEC_APP) || \ - (defined ACPI_EXAMPLE_APP) || \ - (defined ACPI_NAMES_APP) -#define ACPI_USE_NATIVE_RSDP_POINTER -#endif - -/* acpi_dump configuration. Native mapping used if provided by the host */ - -#ifdef ACPI_DUMP_APP -#define ACPI_USE_NATIVE_MEMORY_MAPPING -#define USE_NATIVE_ALLOCATE_ZEROED -#endif - -/* acpi_names/Example configuration. Hardware disabled */ - -#if (defined ACPI_EXAMPLE_APP) || \ - (defined ACPI_NAMES_APP) -#define ACPI_REDUCED_HARDWARE 1 -#endif - -/* Linkable ACPICA library */ - -#ifdef ACPI_LIBRARY -#define ACPI_USE_LOCAL_CACHE -#define ACPI_FULL_DEBUG -#endif - -/* Common for all ACPICA applications */ - -#ifdef ACPI_APPLICATION -#define ACPI_USE_SYSTEM_CLIBRARY -#define ACPI_USE_LOCAL_CACHE -#endif - -/* Common debug/disassembler support */ - -#ifdef ACPI_FULL_DEBUG -#define ACPI_DEBUG_OUTPUT -#define ACPI_DEBUGGER 1 -#define ACPI_DISASSEMBLER 1 -#endif - - -/*! [Begin] no source code translation */ - -/****************************************************************************** - * - * Host configuration files. The compiler configuration files are included - * by the host files. - * - *****************************************************************************/ - -#if defined(_LINUX) || defined(__linux__) -#include - -#elif defined(_APPLE) || defined(__APPLE__) -#include "acmacosx.h" - -#elif defined(__DragonFly__) -#include "acdragonfly.h" - -#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) -#include "acfreebsd.h" - -#elif defined(__NetBSD__) -#include "acnetbsd.h" - -#elif defined(__sun) -#include "acsolaris.h" - -#elif defined(MODESTO) -#include "acmodesto.h" - -#elif defined(NETWARE) -#include "acnetware.h" - -#elif defined(_CYGWIN) -#include "accygwin.h" - -#elif defined(WIN32) -#include "acwin.h" - -#elif defined(WIN64) -#include "acwin64.h" - -#elif defined(_WRS_LIB_BUILD) -#include "acvxworks.h" - -#elif defined(__OS2__) -#include "acos2.h" - -#elif defined(_AED_EFI) -#include "acefi.h" - -#elif defined(_GNU_EFI) -#include "acefi.h" - -#elif defined(__HAIKU__) -#include "achaiku.h" - -#else - -/* Unknown environment */ - -#error Unknown target environment -#endif - -/*! [End] no source code translation !*/ - -/****************************************************************************** - * - * Setup defaults for the required symbols that were not defined in one of - * the host/compiler files above. - * - *****************************************************************************/ - -/* 64-bit data types */ - -#ifndef COMPILER_DEPENDENT_INT64 -#define COMPILER_DEPENDENT_INT64 long long -#endif - -#ifndef COMPILER_DEPENDENT_UINT64 -#define COMPILER_DEPENDENT_UINT64 unsigned long long -#endif - -/* Type of mutex supported by host. Default is binary semaphores. */ -#ifndef ACPI_MUTEX_TYPE -#define ACPI_MUTEX_TYPE ACPI_OSL_MUTEX -#endif - -/* Global Lock acquire/release */ - -#ifndef ACPI_ACQUIRE_GLOBAL_LOCK -#define ACPI_ACQUIRE_GLOBAL_LOCK(Glptr, acquired) acquired = 1 -#endif - -#ifndef ACPI_RELEASE_GLOBAL_LOCK -#define ACPI_RELEASE_GLOBAL_LOCK(Glptr, pending) pending = 0 -#endif - -/* Flush CPU cache - used when going to sleep. Wbinvd or similar. */ - -#ifndef ACPI_FLUSH_CPU_CACHE -#define ACPI_FLUSH_CPU_CACHE() -#endif - -/* "inline" keywords - configurable since inline is not standardized */ - -#ifndef ACPI_INLINE -#define ACPI_INLINE -#endif - -/* - * Configurable calling conventions: - * - * ACPI_SYSTEM_XFACE - Interfaces to host OS (handlers, threads) - * ACPI_EXTERNAL_XFACE - External ACPI interfaces - * ACPI_INTERNAL_XFACE - Internal ACPI interfaces - * ACPI_INTERNAL_VAR_XFACE - Internal variable-parameter list interfaces - */ -#ifndef ACPI_SYSTEM_XFACE -#define ACPI_SYSTEM_XFACE -#endif - -#ifndef ACPI_EXTERNAL_XFACE -#define ACPI_EXTERNAL_XFACE -#endif - -#ifndef ACPI_INTERNAL_XFACE -#define ACPI_INTERNAL_XFACE -#endif - -#ifndef ACPI_INTERNAL_VAR_XFACE -#define ACPI_INTERNAL_VAR_XFACE -#endif - -/* - * Debugger threading model - * Use single threaded if the entire subsystem is contained in an application - * Use multiple threaded when the subsystem is running in the kernel. - * - * By default the model is single threaded if ACPI_APPLICATION is set, - * multi-threaded if ACPI_APPLICATION is not set. - */ -#ifndef DEBUGGER_THREADING -#if !defined (ACPI_APPLICATION) || defined (ACPI_EXEC_APP) -#define DEBUGGER_THREADING DEBUGGER_MULTI_THREADED - -#else -#define DEBUGGER_THREADING DEBUGGER_SINGLE_THREADED -#endif -#endif /* !DEBUGGER_THREADING */ - -/****************************************************************************** - * - * C library configuration - * - *****************************************************************************/ - -/* - * ACPI_USE_SYSTEM_CLIBRARY - Define this if linking to an actual C library. - * Otherwise, local versions of string/memory functions will be used. - * ACPI_USE_STANDARD_HEADERS - Define this if linking to a C library and - * the standard header files may be used. - * - * The ACPICA subsystem only uses low level C library functions that do not - * call operating system services and may therefore be inlined in the code. - * - * It may be necessary to tailor these include files to the target - * generation environment. - */ -#ifdef ACPI_USE_SYSTEM_CLIBRARY - -/* Use the standard C library headers. We want to keep these to a minimum. */ - -#ifdef ACPI_USE_STANDARD_HEADERS - -/* Use the standard headers from the standard locations */ - -#include -#include -#include -#include - -#endif /* ACPI_USE_STANDARD_HEADERS */ - -/* We will be linking to the standard Clib functions */ - -#else - -/****************************************************************************** - * - * Not using native C library, use local implementations - * - *****************************************************************************/ - -/* - * Use local definitions of C library macros and functions. These function - * implementations may not be as efficient as an inline or assembly code - * implementation provided by a native C library, but they are functionally - * equivalent. - */ -#ifndef va_arg - -#ifndef _VALIST -#define _VALIST -typedef char *va_list; -#endif /* _VALIST */ - -/* Storage alignment properties */ - -#define _AUPBND (sizeof (acpi_native_int) - 1) -#define _ADNBND (sizeof (acpi_native_int) - 1) - -/* Variable argument list macro definitions */ - -#define _bnd(X, bnd) (((sizeof (X)) + (bnd)) & (~(bnd))) -#define va_arg(ap, T) (*(T *)(((ap) += (_bnd (T, _AUPBND))) - (_bnd (T,_ADNBND)))) -#define va_end(ap) (ap = (va_list) NULL) -#define va_start(ap, A) (void) ((ap) = (((char *) &(A)) + (_bnd (A,_AUPBND)))) - -#endif /* va_arg */ - -/* Use the local (ACPICA) definitions of the clib functions */ - -#endif /* ACPI_USE_SYSTEM_CLIBRARY */ - -#ifndef ACPI_FILE -#ifdef ACPI_APPLICATION -#include -#define ACPI_FILE FILE * -#define ACPI_FILE_OUT stdout -#define ACPI_FILE_ERR stderr -#else -#define ACPI_FILE void * -#define ACPI_FILE_OUT NULL -#define ACPI_FILE_ERR NULL -#endif /* ACPI_APPLICATION */ -#endif /* ACPI_FILE */ - -#endif /* __ACENV_H__ */ diff --git a/drivers/include/acpi/platform/acenvex.h b/drivers/include/acpi/platform/acenvex.h deleted file mode 100644 index 4f15c1d10b..0000000000 --- a/drivers/include/acpi/platform/acenvex.h +++ /dev/null @@ -1,75 +0,0 @@ -/****************************************************************************** - * - * Name: acenvex.h - Extra host and compiler configuration - * - *****************************************************************************/ - -/* - * Copyright (C) 2000 - 2016, 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 __ACENVEX_H__ -#define __ACENVEX_H__ - -/*! [Begin] no source code translation */ - -/****************************************************************************** - * - * Extra host configuration files. All ACPICA headers are included before - * including these files. - * - *****************************************************************************/ - -#if defined(_LINUX) || defined(__linux__) -#include - -#elif defined(WIN32) -#include "acwinex.h" - -#elif defined(_AED_EFI) -#include "acefiex.h" - -#elif defined(_GNU_EFI) -#include "acefiex.h" - -#elif defined(__DragonFly__) -#include "acdragonflyex.h" - -#endif - -/*! [End] no source code translation !*/ - -#endif /* __ACENVEX_H__ */ diff --git a/drivers/include/acpi/platform/acgcc.h b/drivers/include/acpi/platform/acgcc.h deleted file mode 100644 index c5a216c976..0000000000 --- a/drivers/include/acpi/platform/acgcc.h +++ /dev/null @@ -1,82 +0,0 @@ -/****************************************************************************** - * - * Name: acgcc.h - GCC specific defines, etc. - * - *****************************************************************************/ - -/* - * Copyright (C) 2000 - 2016, 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 __ACGCC_H__ -#define __ACGCC_H__ - -#define ACPI_INLINE __inline__ - -/* Function name is used for debug output. Non-ANSI, compiler-dependent */ - -#define ACPI_GET_FUNCTION_NAME __func__ - -/* - * This macro is used to tag functions as "printf-like" because - * some compilers (like GCC) can catch printf format string problems. - */ -#define ACPI_PRINTF_LIKE(c) __attribute__ ((__format__ (__printf__, c, c+1))) - -/* - * Some compilers complain about unused variables. Sometimes we don't want to - * use all the variables (for example, _acpi_module_name). This allows us - * to tell the compiler warning in a per-variable manner that a variable - * is unused. - */ -#define ACPI_UNUSED_VAR __attribute__ ((unused)) - -/* - * Some versions of gcc implement strchr() with a buggy macro. So, - * undef it here. Prevents error messages of this form (usually from the - * file getopt.c): - * - * error: logical '&&' with non-zero constant will always evaluate as true - */ -#ifdef strchr -#undef strchr -#endif - -/* GCC supports __VA_ARGS__ in macros */ - -#define COMPILER_VA_MACRO 1 - -#endif /* __ACGCC_H__ */ diff --git a/drivers/include/acpi/platform/aclinux.h b/drivers/include/acpi/platform/aclinux.h deleted file mode 100644 index adf93d997c..0000000000 --- a/drivers/include/acpi/platform/aclinux.h +++ /dev/null @@ -1,208 +0,0 @@ -/****************************************************************************** - * - * Name: aclinux.h - OS specific defines, etc. for Linux - * - *****************************************************************************/ - -/* - * Copyright (C) 2000 - 2016, 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 __ACLINUX_H__ -#define __ACLINUX_H__ - -#ifdef __KERNEL__ - -/* ACPICA external files should not include ACPICA headers directly. */ - -#if !defined(BUILDING_ACPICA) && !defined(_LINUX_ACPI_H) -#error "Please don't include directly, include instead." -#endif - -#endif - -/* Common (in-kernel/user-space) ACPICA configuration */ - -#define ACPI_USE_SYSTEM_CLIBRARY -#define ACPI_USE_DO_WHILE_0 - -#ifdef __KERNEL__ - -#define ACPI_USE_SYSTEM_INTTYPES - -/* Kernel specific ACPICA configuration */ - -#ifdef CONFIG_ACPI_REDUCED_HARDWARE_ONLY -#define ACPI_REDUCED_HARDWARE 1 -#endif - -#ifdef CONFIG_ACPI_DEBUGGER -#define ACPI_DEBUGGER -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#ifdef EXPORT_ACPI_INTERFACES -#include -#endif -#ifdef CONFIG_ACPI -#include -#endif - -#ifndef CONFIG_ACPI - -/* External globals for __KERNEL__, stubs is needed */ - -#define ACPI_GLOBAL(t,a) -#define ACPI_INIT_GLOBAL(t,a,b) - -/* Generating stubs for configurable ACPICA macros */ - -#define ACPI_NO_MEM_ALLOCATIONS - -/* Generating stubs for configurable ACPICA functions */ - -#define ACPI_NO_ERROR_MESSAGES -#undef ACPI_DEBUG_OUTPUT - -/* External interface for __KERNEL__, stub is needed */ - -#define ACPI_EXTERNAL_RETURN_STATUS(prototype) \ - static ACPI_INLINE prototype {return(AE_NOT_CONFIGURED);} -#define ACPI_EXTERNAL_RETURN_OK(prototype) \ - static ACPI_INLINE prototype {return(AE_OK);} -#define ACPI_EXTERNAL_RETURN_VOID(prototype) \ - static ACPI_INLINE prototype {return;} -#define ACPI_EXTERNAL_RETURN_UINT32(prototype) \ - static ACPI_INLINE prototype {return(0);} -#define ACPI_EXTERNAL_RETURN_PTR(prototype) \ - static ACPI_INLINE prototype {return(NULL);} - -#endif /* CONFIG_ACPI */ - -/* Host-dependent types and defines for in-kernel ACPICA */ - -#define ACPI_MACHINE_WIDTH BITS_PER_LONG -#define ACPI_EXPORT_SYMBOL(symbol) EXPORT_SYMBOL(symbol); -#define strtoul simple_strtoul - -//#define acpi_cache_t struct kmem_cache -#define acpi_spinlock spinlock_t * -#define acpi_cpu_flags unsigned long - -/* Use native linux version of acpi_os_allocate_zeroed */ - -#define USE_NATIVE_ALLOCATE_ZEROED - -/* - * Overrides for in-kernel ACPICA - */ -#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_initialize -#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_terminate -#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_allocate -#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_allocate_zeroed -#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_free -#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_acquire_object -#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_thread_id -#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_create_lock - -/* - * OSL interfaces used by debugger/disassembler - */ -#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_readable -#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_writable -#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_initialize_command_signals -#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_terminate_command_signals - -/* - * OSL interfaces used by utilities - */ -#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_redirect_output -#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_table_by_name -#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_table_by_index -#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_table_by_address -#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_open_directory -#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_next_filename -#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_close_directory - -#else /* !__KERNEL__ */ - -#include -#include -#include -#include -#include - -/* Define/disable kernel-specific declarators */ - -#ifndef __init -#define __init -#endif - -/* Host-dependent types and defines for user-space ACPICA */ - -#define ACPI_FLUSH_CPU_CACHE() -#define ACPI_CAST_PTHREAD_T(pthread) ((acpi_thread_id) (pthread)) - -#if defined(__ia64__) || defined(__x86_64__) ||\ - defined(__aarch64__) || defined(__PPC64__) -#define ACPI_MACHINE_WIDTH 64 -#define COMPILER_DEPENDENT_INT64 long -#define COMPILER_DEPENDENT_UINT64 unsigned long -#else -#define ACPI_MACHINE_WIDTH 32 -#define COMPILER_DEPENDENT_INT64 long long -#define COMPILER_DEPENDENT_UINT64 unsigned long long -#define ACPI_USE_NATIVE_DIVIDE -#endif - -#ifndef __cdecl -#define __cdecl -#endif - -#endif /* __KERNEL__ */ - -/* Linux uses GCC */ - -#include - -#endif /* __ACLINUX_H__ */ diff --git a/drivers/include/acpi/platform/aclinuxex.h b/drivers/include/acpi/platform/aclinuxex.h deleted file mode 100644 index 30c182cb85..0000000000 --- a/drivers/include/acpi/platform/aclinuxex.h +++ /dev/null @@ -1,147 +0,0 @@ -/****************************************************************************** - * - * Name: aclinuxex.h - Extra OS specific defines, etc. for Linux - * - *****************************************************************************/ - -/* - * Copyright (C) 2000 - 2016, 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 __ACLINUXEX_H__ -#define __ACLINUXEX_H__ - -#ifdef __KERNEL__ - -#ifndef ACPI_USE_NATIVE_DIVIDE - -#ifndef ACPI_DIV_64_BY_32 -#define ACPI_DIV_64_BY_32(n_hi, n_lo, d32, q32, r32) \ - do { \ - u64 (__n) = ((u64) n_hi) << 32 | (n_lo); \ - (r32) = do_div ((__n), (d32)); \ - (q32) = (u32) (__n); \ - } while (0) -#endif - -#ifndef ACPI_SHIFT_RIGHT_64 -#define ACPI_SHIFT_RIGHT_64(n_hi, n_lo) \ - do { \ - (n_lo) >>= 1; \ - (n_lo) |= (((n_hi) & 1) << 31); \ - (n_hi) >>= 1; \ - } while (0) -#endif - -#endif - -/* - * Overrides for in-kernel ACPICA - */ -acpi_status __init acpi_os_initialize(void); - -acpi_status acpi_os_terminate(void); - -/* - * The irqs_disabled() check is for resume from RAM. - * Interrupts are off during resume, just like they are for boot. - * However, boot has (system_state != SYSTEM_RUNNING) - * to quiet __might_sleep() in kmalloc() and resume does not. - */ -static inline void *acpi_os_allocate(acpi_size size) -{ - return kmalloc(size, irqs_disabled()? GFP_ATOMIC : GFP_KERNEL); -} - -static inline void *acpi_os_allocate_zeroed(acpi_size size) -{ - return kzalloc(size, irqs_disabled()? GFP_ATOMIC : GFP_KERNEL); -} - -static inline void acpi_os_free(void *memory) -{ - kfree(memory); -} - -void *acpi_os_acquire_object(acpi_cache_t * cache); - -u32 __attribute__ ((dllimport)) GetPid(void)__asm__("GetPid"); - -static inline acpi_thread_id acpi_os_get_thread_id(void) -{ - return (acpi_thread_id) (unsigned long)GetPid(); -} - -/* - * When lockdep is enabled, the spin_lock_init() macro stringifies it's - * argument and uses that as a name for the lock in debugging. - * By executing spin_lock_init() in a macro the key changes from "lock" for - * all locks to the name of the argument of acpi_os_create_lock(), which - * prevents lockdep from reporting false positives for ACPICA locks. - */ -#define acpi_os_create_lock(__handle) \ - ({ \ - spinlock_t *lock = ACPI_ALLOCATE(sizeof(*lock)); \ - if (lock) { \ - *(__handle) = lock; \ - spin_lock_init(*(__handle)); \ - } \ - lock ? AE_OK : AE_NO_MEMORY; \ - }) - -static inline u8 acpi_os_readable(void *pointer, acpi_size length) -{ - return TRUE; -} - -static inline acpi_status acpi_os_initialize_command_signals(void) -{ - return AE_OK; -} - -static inline void acpi_os_terminate_command_signals(void) -{ - return; -} - -/* - * OSL interfaces added by Linux - */ -void early_acpi_os_unmap_memory(void __iomem * virt, acpi_size size); - -#endif /* __KERNEL__ */ - -#endif /* __ACLINUXEX_H__ */ diff --git a/drivers/include/asm/pci.h b/drivers/include/asm/pci.h index 5063f46f6e..b45e7ef833 100644 --- a/drivers/include/asm/pci.h +++ b/drivers/include/asm/pci.h @@ -60,7 +60,7 @@ static inline void *_pci_root_bus_fwnode(struct pci_bus *bus) already-configured bus numbers - to be used for buggy BIOSes or architectures with incomplete PCI setup by the loader */ -extern unsigned int pcibios_assign_all_busses(void); +extern int pcibios_assign_all_busses(void); extern int pci_legacy_init(void); # ifdef CONFIG_ACPI # define x86_default_pci_init pci_acpi_init diff --git a/drivers/include/linux/pci.h b/drivers/include/linux/pci.h index 4a34daf806..3c2f80ce20 100644 --- a/drivers/include/linux/pci.h +++ b/drivers/include/linux/pci.h @@ -34,6 +34,11 @@ #include #include + +#ifdef HAVE_ACPICA + #include +#endif + /* * The PCI interface treats multi-function devices as independent * devices. The slot/function address of each device is encoded @@ -50,6 +55,16 @@ /* return bus from PCI devid = ((u16)bus_number) << 8) | devfn */ #define PCI_BUS_NUM(x) (((x) >> 8) & 0xff) +#define PCI_CFG_SPACE_SIZE 256 +#define PCI_CFG_SPACE_EXP_SIZE 4096 + +enum pci_bar_type { + pci_bar_unknown, /* Standard PCI BAR probe */ + pci_bar_io, /* An io port BAR */ + pci_bar_mem32, /* A 32-bit memory BAR */ + pci_bar_mem64, /* A 64-bit memory BAR */ +}; + /* pci_slot represents a physical slot */ struct pci_slot { struct pci_bus *bus; /* The bus this slot is on */ @@ -279,6 +294,7 @@ struct pci_dev { u8 rom_base_reg; /* which config register controls the ROM */ u8 pin; /* which interrupt pin this device uses */ u16 pcie_flags_reg; /* cached PCIe Capabilities Register */ + int pcie_type; u8 dma_alias_devfn;/* devfn of DMA alias, if any */ u64 dma_mask; /* Mask of the bits of bus address this @@ -380,6 +396,9 @@ struct pci_dev { phys_addr_t rom; /* Physical address of ROM if it's not from the BAR */ size_t romlen; /* Length of ROM if it's not from the BAR */ char *driver_override; /* Driver name to force a match */ +#ifdef HAVE_ACPICA + struct acpi_device *acpi_dev; +#endif }; static inline struct pci_dev *pci_physfn(struct pci_dev *dev) @@ -452,6 +471,8 @@ struct pci_bus_resource { struct pci_bus { struct list_head node; /* node in list of buses */ struct pci_bus *parent; /* parent bus this bridge is on */ + struct pci_bus *subordinate; + struct pci_bus *secondary; struct list_head children; /* list of child buses */ struct list_head devices; /* list of devices on this bus */ struct pci_dev *self; /* bridge device as seen by parent */ @@ -485,6 +506,8 @@ struct pci_bus { unsigned int is_added:1; }; +#define pci_bus_b(n) list_entry(n, struct pci_bus, node) +#define pci_dev_b(n) list_entry(n, struct pci_dev, bus_list) #define to_pci_bus(n) container_of(n, struct pci_bus, dev) /* @@ -844,7 +867,7 @@ void pci_read_bridge_bases(struct pci_bus *child); struct resource *pci_find_parent_resource(const struct pci_dev *dev, struct resource *res); struct pci_dev *pci_find_pcie_root_port(struct pci_dev *dev); -u8 pci_swizzle_interrupt_pin(const struct pci_dev *dev, u8 pin); +u8 pci_swizzle_interrupt_pin(struct pci_dev *dev, u8 pin); int pci_get_interrupt_pin(struct pci_dev *dev, struct pci_dev **bridge); u8 pci_common_swizzle(struct pci_dev *dev, u8 *pinp); struct pci_dev *pci_dev_get(struct pci_dev *dev);