167754Smsmith/****************************************************************************** 267754Smsmith * 367754Smsmith * Name: actypes.h - Common data types for the entire ACPI subsystem 467754Smsmith * 567754Smsmith *****************************************************************************/ 667754Smsmith 7217365Sjkim/* 8306536Sjkim * Copyright (C) 2000 - 2016, Intel Corp. 970243Smsmith * All rights reserved. 1067754Smsmith * 11217365Sjkim * Redistribution and use in source and binary forms, with or without 12217365Sjkim * modification, are permitted provided that the following conditions 13217365Sjkim * are met: 14217365Sjkim * 1. Redistributions of source code must retain the above copyright 15217365Sjkim * notice, this list of conditions, and the following disclaimer, 16217365Sjkim * without modification. 17217365Sjkim * 2. Redistributions in binary form must reproduce at minimum a disclaimer 18217365Sjkim * substantially similar to the "NO WARRANTY" disclaimer below 19217365Sjkim * ("Disclaimer") and any redistribution must be conditioned upon 20217365Sjkim * including a substantially similar Disclaimer requirement for further 21217365Sjkim * binary redistribution. 22217365Sjkim * 3. Neither the names of the above-listed copyright holders nor the names 23217365Sjkim * of any contributors may be used to endorse or promote products derived 24217365Sjkim * from this software without specific prior written permission. 2567754Smsmith * 26217365Sjkim * Alternatively, this software may be distributed under the terms of the 27217365Sjkim * GNU General Public License ("GPL") version 2 as published by the Free 28217365Sjkim * Software Foundation. 2967754Smsmith * 30217365Sjkim * NO WARRANTY 31217365Sjkim * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32217365Sjkim * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33217365Sjkim * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 34217365Sjkim * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35217365Sjkim * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 36217365Sjkim * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 37217365Sjkim * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 38217365Sjkim * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 39217365Sjkim * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 40217365Sjkim * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 41217365Sjkim * POSSIBILITY OF SUCH DAMAGES. 42217365Sjkim */ 4367754Smsmith 4467754Smsmith#ifndef __ACTYPES_H__ 4567754Smsmith#define __ACTYPES_H__ 4667754Smsmith 47167802Sjkim/* acpisrc:StructDefs -- for acpisrc conversion */ 4867754Smsmith 49167802Sjkim/* 50167802Sjkim * ACPI_MACHINE_WIDTH must be specified in an OS- or compiler-dependent header 51167802Sjkim * and must be either 32 or 64. 16-bit ACPICA is no longer supported, as of 52167802Sjkim * 12/2006. 53167802Sjkim */ 54167802Sjkim#ifndef ACPI_MACHINE_WIDTH 55167802Sjkim#error ACPI_MACHINE_WIDTH not defined 56167802Sjkim#endif 5799679Siwasaki 5867754Smsmith/* 5999679Siwasaki * Data type ranges 60117521Snjl * Note: These macros are designed to be compiler independent as well as 61117521Snjl * working around problems that some 32-bit compilers have with 64-bit 62117521Snjl * constants. 6399679Siwasaki */ 64117521Snjl#define ACPI_UINT8_MAX (UINT8) (~((UINT8) 0)) /* 0xFF */ 65117521Snjl#define ACPI_UINT16_MAX (UINT16)(~((UINT16) 0)) /* 0xFFFF */ 66117521Snjl#define ACPI_UINT32_MAX (UINT32)(~((UINT32) 0)) /* 0xFFFFFFFF */ 67117521Snjl#define ACPI_UINT64_MAX (UINT64)(~((UINT64) 0)) /* 0xFFFFFFFFFFFFFFFF */ 6899679Siwasaki#define ACPI_ASCII_MAX 0x7F 6999679Siwasaki 7099679Siwasaki 71114237Snjl/* 72167802Sjkim * Architecture-specific ACPICA Subsystem Data Types 73167802Sjkim * 74167802Sjkim * The goal of these types is to provide source code portability across 75167802Sjkim * 16-bit, 32-bit, and 64-bit targets. 76167802Sjkim * 77167802Sjkim * 1) The following types are of fixed size for all targets (16/32/64): 78167802Sjkim * 79167802Sjkim * BOOLEAN Logical boolean 80167802Sjkim * 81167802Sjkim * UINT8 8-bit (1 byte) unsigned value 82167802Sjkim * UINT16 16-bit (2 byte) unsigned value 83167802Sjkim * UINT32 32-bit (4 byte) unsigned value 84167802Sjkim * UINT64 64-bit (8 byte) unsigned value 85167802Sjkim * 86167802Sjkim * INT16 16-bit (2 byte) signed value 87167802Sjkim * INT32 32-bit (4 byte) signed value 88167802Sjkim * INT64 64-bit (8 byte) signed value 89167802Sjkim * 90167802Sjkim * COMPILER_DEPENDENT_UINT64/INT64 - These types are defined in the 91167802Sjkim * compiler-dependent header(s) and were introduced because there is no common 92167802Sjkim * 64-bit integer type across the various compilation models, as shown in 93167802Sjkim * the table below. 94167802Sjkim * 95167802Sjkim * Datatype LP64 ILP64 LLP64 ILP32 LP32 16bit 96167802Sjkim * char 8 8 8 8 8 8 97167802Sjkim * short 16 16 16 16 16 16 98167802Sjkim * _int32 32 99167802Sjkim * int 32 64 32 32 16 16 100167802Sjkim * long 64 64 32 32 32 32 101167802Sjkim * long long 64 64 102167802Sjkim * pointer 64 64 64 32 32 32 103167802Sjkim * 104167802Sjkim * Note: ILP64 and LP32 are currently not supported. 105167802Sjkim * 106167802Sjkim * 107167802Sjkim * 2) These types represent the native word size of the target mode of the 108167802Sjkim * processor, and may be 16-bit, 32-bit, or 64-bit as required. They are 109167802Sjkim * usually used for memory allocation, efficient loop counters, and array 110167802Sjkim * indexes. The types are similar to the size_t type in the C library and are 111167802Sjkim * required because there is no C type that consistently represents the native 112193267Sjkim * data width. ACPI_SIZE is needed because there is no guarantee that a 113193267Sjkim * kernel-level C library is present. 114167802Sjkim * 115167802Sjkim * ACPI_SIZE 16/32/64-bit unsigned value 116167802Sjkim * ACPI_NATIVE_INT 16/32/64-bit signed value 117114237Snjl */ 11899679Siwasaki 119167802Sjkim/******************************************************************************* 120167802Sjkim * 121167802Sjkim * Common types for all compilers, all targets 122167802Sjkim * 123167802Sjkim ******************************************************************************/ 124114237Snjl 125281075Sdim#ifndef ACPI_USE_SYSTEM_INTTYPES 126281075Sdim 127167802Sjkimtypedef unsigned char BOOLEAN; 128167802Sjkimtypedef unsigned char UINT8; 129167802Sjkimtypedef unsigned short UINT16; 130281075Sdimtypedef short INT16; 131167802Sjkimtypedef COMPILER_DEPENDENT_UINT64 UINT64; 132167802Sjkimtypedef COMPILER_DEPENDENT_INT64 INT64; 133114237Snjl 134281075Sdim#endif /* ACPI_USE_SYSTEM_INTTYPES */ 135167802Sjkim 136212761Sjkim/* 137212761Sjkim * Value returned by AcpiOsGetThreadId. There is no standard "thread_id" 138212761Sjkim * across operating systems or even the various UNIX systems. Since ACPICA 139212761Sjkim * only needs the thread ID as a unique thread identifier, we use a UINT64 140212761Sjkim * as the only common data type - it will accommodate any type of pointer or 141212761Sjkim * any type of integer. It is up to the host-dependent OSL to cast the 142212761Sjkim * native thread ID type to a UINT64 (in AcpiOsGetThreadId). 143212761Sjkim */ 144212761Sjkim#define ACPI_THREAD_ID UINT64 145167802Sjkim 146212761Sjkim 147167802Sjkim/******************************************************************************* 14867754Smsmith * 149167802Sjkim * Types specific to 64-bit targets 150167802Sjkim * 151167802Sjkim ******************************************************************************/ 15267754Smsmith 15399679Siwasaki#if ACPI_MACHINE_WIDTH == 64 154114237Snjl 155281075Sdim#ifndef ACPI_USE_SYSTEM_INTTYPES 156114237Snjl 157167802Sjkimtypedef unsigned int UINT32; 15867754Smsmithtypedef int INT32; 15967754Smsmith 160281075Sdim#endif /* ACPI_USE_SYSTEM_INTTYPES */ 16167754Smsmith 162167802Sjkim 163114237Snjltypedef INT64 ACPI_NATIVE_INT; 164193267Sjkimtypedef UINT64 ACPI_SIZE; 16567754Smsmithtypedef UINT64 ACPI_IO_ADDRESS; 16669450Smsmithtypedef UINT64 ACPI_PHYSICAL_ADDRESS; 16767754Smsmith 16899679Siwasaki#define ACPI_MAX_PTR ACPI_UINT64_MAX 16999679Siwasaki#define ACPI_SIZE_MAX ACPI_UINT64_MAX 170167802Sjkim#define ACPI_USE_NATIVE_DIVIDE /* Has native 64-bit integer support */ 171167802Sjkim 172151937Sjkim/* 173151937Sjkim * In the case of the Itanium Processor Family (IPF), the hardware does not 174151937Sjkim * support misaligned memory transfers. Set the MISALIGNMENT_NOT_SUPPORTED flag 175151937Sjkim * to indicate that special precautions must be taken to avoid alignment faults. 176151937Sjkim * (IA64 or ia64 is currently used by existing compilers to indicate IPF.) 177151937Sjkim * 178167802Sjkim * Note: EM64T and other X86-64 processors support misaligned transfers, 179151937Sjkim * so there is no need to define this flag. 180151937Sjkim */ 181151937Sjkim#if defined (__IA64__) || defined (__ia64__) 182151937Sjkim#define ACPI_MISALIGNMENT_NOT_SUPPORTED 183151937Sjkim#endif 18467754Smsmith 185107325Siwasaki 186167802Sjkim/******************************************************************************* 187167802Sjkim * 188167802Sjkim * Types specific to 32-bit targets 189167802Sjkim * 190167802Sjkim ******************************************************************************/ 191114237Snjl 19299679Siwasaki#elif ACPI_MACHINE_WIDTH == 32 193107325Siwasaki 194281075Sdim#ifndef ACPI_USE_SYSTEM_INTTYPES 195114237Snjl 196167802Sjkimtypedef unsigned int UINT32; 19767754Smsmithtypedef int INT32; 19867754Smsmith 199281075Sdim#endif /* ACPI_USE_SYSTEM_INTTYPES */ 20067754Smsmith 201167802Sjkim 202114237Snjltypedef INT32 ACPI_NATIVE_INT; 203193267Sjkimtypedef UINT32 ACPI_SIZE; 204281687Sjkim 205281687Sjkim#ifdef ACPI_32BIT_PHYSICAL_ADDRESS 206281687Sjkim 207281687Sjkim/* 208281687Sjkim * OSPMs can define this to shrink the size of the structures for 32-bit 209281687Sjkim * none PAE environment. ASL compiler may always define this to generate 210281687Sjkim * 32-bit OSPM compliant tables. 211281687Sjkim */ 21267754Smsmithtypedef UINT32 ACPI_IO_ADDRESS; 213167802Sjkimtypedef UINT32 ACPI_PHYSICAL_ADDRESS; 21467754Smsmith 215281687Sjkim#else /* ACPI_32BIT_PHYSICAL_ADDRESS */ 216281687Sjkim 217281687Sjkim/* 218281687Sjkim * It is reported that, after some calculations, the physical addresses can 219281687Sjkim * wrap over the 32-bit boundary on 32-bit PAE environment. 220281687Sjkim * https://bugzilla.kernel.org/show_bug.cgi?id=87971 221281687Sjkim */ 222281687Sjkimtypedef UINT64 ACPI_IO_ADDRESS; 223281687Sjkimtypedef UINT64 ACPI_PHYSICAL_ADDRESS; 224281687Sjkim 225281687Sjkim#endif /* ACPI_32BIT_PHYSICAL_ADDRESS */ 226281687Sjkim 22799679Siwasaki#define ACPI_MAX_PTR ACPI_UINT32_MAX 22899679Siwasaki#define ACPI_SIZE_MAX ACPI_UINT32_MAX 22999679Siwasaki 23099679Siwasaki#else 231167802Sjkim 232167802Sjkim/* ACPI_MACHINE_WIDTH must be either 64 or 32 */ 233167802Sjkim 23499679Siwasaki#error unknown ACPI_MACHINE_WIDTH 23567754Smsmith#endif 23667754Smsmith 23767754Smsmith 238167802Sjkim/******************************************************************************* 239167802Sjkim * 240193267Sjkim * OS-dependent types 241167802Sjkim * 242167802Sjkim * If the defaults below are not appropriate for the host system, they can 243193267Sjkim * be defined in the OS-specific header, and this will take precedence. 244167802Sjkim * 245167802Sjkim ******************************************************************************/ 24699146Siwasaki 247167802Sjkim/* Flags for AcpiOsAcquireLock/AcpiOsReleaseLock */ 248100966Siwasaki 249167802Sjkim#ifndef ACPI_CPU_FLAGS 250193267Sjkim#define ACPI_CPU_FLAGS ACPI_SIZE 251167802Sjkim#endif 252167802Sjkim 253167802Sjkim/* Object returned from AcpiOsCreateCache */ 254167802Sjkim 255151937Sjkim#ifndef ACPI_CACHE_T 256193267Sjkim#ifdef ACPI_USE_LOCAL_CACHE 257151937Sjkim#define ACPI_CACHE_T ACPI_MEMORY_LIST 258193267Sjkim#else 259193267Sjkim#define ACPI_CACHE_T void * 260151937Sjkim#endif 261193267Sjkim#endif 262100966Siwasaki 263193267Sjkim/* 264193267Sjkim * Synchronization objects - Mutexes, Semaphores, and SpinLocks 265193267Sjkim */ 266193267Sjkim#if (ACPI_MUTEX_TYPE == ACPI_BINARY_SEMAPHORE) 267193267Sjkim/* 268193267Sjkim * These macros are used if the host OS does not support a mutex object. 269193267Sjkim * Map the OSL Mutex interfaces to binary semaphores. 270193267Sjkim */ 271193267Sjkim#define ACPI_MUTEX ACPI_SEMAPHORE 272193267Sjkim#define AcpiOsCreateMutex(OutHandle) AcpiOsCreateSemaphore (1, 1, OutHandle) 273193267Sjkim#define AcpiOsDeleteMutex(Handle) (void) AcpiOsDeleteSemaphore (Handle) 274193267Sjkim#define AcpiOsAcquireMutex(Handle,Time) AcpiOsWaitSemaphore (Handle, 1, Time) 275193267Sjkim#define AcpiOsReleaseMutex(Handle) (void) AcpiOsSignalSemaphore (Handle, 1) 276193267Sjkim#endif 277193267Sjkim 278193267Sjkim/* Configurable types for synchronization objects */ 279193267Sjkim 280193267Sjkim#ifndef ACPI_SPINLOCK 281193267Sjkim#define ACPI_SPINLOCK void * 282193267Sjkim#endif 283193267Sjkim 284193267Sjkim#ifndef ACPI_SEMAPHORE 285193267Sjkim#define ACPI_SEMAPHORE void * 286193267Sjkim#endif 287193267Sjkim 288193267Sjkim#ifndef ACPI_MUTEX 289193267Sjkim#define ACPI_MUTEX void * 290193267Sjkim#endif 291193267Sjkim 292193267Sjkim 293193267Sjkim/******************************************************************************* 294193267Sjkim * 295193267Sjkim * Compiler-dependent types 296193267Sjkim * 297193267Sjkim * If the defaults below are not appropriate for the host compiler, they can 298193267Sjkim * be defined in the compiler-specific header, and this will take precedence. 299193267Sjkim * 300193267Sjkim ******************************************************************************/ 301193267Sjkim 302167802Sjkim/* Use C99 uintptr_t for pointer casting if available, "void *" otherwise */ 303167802Sjkim 304167802Sjkim#ifndef ACPI_UINTPTR_T 305167802Sjkim#define ACPI_UINTPTR_T void * 306167802Sjkim#endif 307167802Sjkim 30899146Siwasaki/* 309167802Sjkim * ACPI_PRINTF_LIKE is used to tag functions as "printf-like" because 310167802Sjkim * some compilers can catch printf format string problems 31167754Smsmith */ 312167802Sjkim#ifndef ACPI_PRINTF_LIKE 313167802Sjkim#define ACPI_PRINTF_LIKE(c) 314167802Sjkim#endif 315167802Sjkim 316167802Sjkim/* 317167802Sjkim * Some compilers complain about unused variables. Sometimes we don't want to 318167802Sjkim * use all the variables (for example, _AcpiModuleName). This allows us 319245582Sjkim * to tell the compiler in a per-variable manner that a variable 320167802Sjkim * is unused 321167802Sjkim */ 322167802Sjkim#ifndef ACPI_UNUSED_VAR 323167802Sjkim#define ACPI_UNUSED_VAR 324167802Sjkim#endif 325167802Sjkim 326167802Sjkim/* 327281075Sdim * All ACPICA external functions that are available to the rest of the kernel 328281075Sdim * are tagged with thes macros which can be defined as appropriate for the host. 329281075Sdim * 330281075Sdim * Notes: 331281075Sdim * ACPI_EXPORT_SYMBOL_INIT is used for initialization and termination 332281075Sdim * interfaces that may need special processing. 333281075Sdim * ACPI_EXPORT_SYMBOL is used for all other public external functions. 334167802Sjkim */ 335281075Sdim#ifndef ACPI_EXPORT_SYMBOL_INIT 336281075Sdim#define ACPI_EXPORT_SYMBOL_INIT(Symbol) 337281075Sdim#endif 338281075Sdim 339167802Sjkim#ifndef ACPI_EXPORT_SYMBOL 340167802Sjkim#define ACPI_EXPORT_SYMBOL(Symbol) 341167802Sjkim#endif 342167802Sjkim 343250838Sjkim/* 344250838Sjkim * Compiler/Clibrary-dependent debug initialization. Used for ACPICA 345250838Sjkim * utilities only. 346250838Sjkim */ 347250838Sjkim#ifndef ACPI_DEBUG_INITIALIZE 348250838Sjkim#define ACPI_DEBUG_INITIALIZE() 349250838Sjkim#endif 350167802Sjkim 351250838Sjkim 352281075Sdim/******************************************************************************* 353281075Sdim * 354281075Sdim * Configuration 355281075Sdim * 356281075Sdim ******************************************************************************/ 357281075Sdim 358281075Sdim#ifdef ACPI_NO_MEM_ALLOCATIONS 359281075Sdim 360281075Sdim#define ACPI_ALLOCATE(a) NULL 361281075Sdim#define ACPI_ALLOCATE_ZEROED(a) NULL 362281075Sdim#define ACPI_FREE(a) 363281075Sdim#define ACPI_MEM_TRACKING(a) 364281075Sdim 365281075Sdim#else /* ACPI_NO_MEM_ALLOCATIONS */ 366281075Sdim 367281075Sdim#ifdef ACPI_DBG_TRACK_ALLOCATIONS 368281075Sdim/* 369281075Sdim * Memory allocation tracking (used by AcpiExec to detect memory leaks) 370281075Sdim */ 371281075Sdim#define ACPI_MEM_PARAMETERS _COMPONENT, _AcpiModuleName, __LINE__ 372281075Sdim#define ACPI_ALLOCATE(a) AcpiUtAllocateAndTrack ((ACPI_SIZE) (a), ACPI_MEM_PARAMETERS) 373281075Sdim#define ACPI_ALLOCATE_ZEROED(a) AcpiUtAllocateZeroedAndTrack ((ACPI_SIZE) (a), ACPI_MEM_PARAMETERS) 374281075Sdim#define ACPI_FREE(a) AcpiUtFreeAndTrack (a, ACPI_MEM_PARAMETERS) 375281075Sdim#define ACPI_MEM_TRACKING(a) a 376281075Sdim 377281075Sdim#else 378281075Sdim/* 379281075Sdim * Normal memory allocation directly via the OS services layer 380281075Sdim */ 381281075Sdim#define ACPI_ALLOCATE(a) AcpiOsAllocate ((ACPI_SIZE) (a)) 382281075Sdim#define ACPI_ALLOCATE_ZEROED(a) AcpiOsAllocateZeroed ((ACPI_SIZE) (a)) 383281075Sdim#define ACPI_FREE(a) AcpiOsFree (a) 384281075Sdim#define ACPI_MEM_TRACKING(a) 385281075Sdim 386281075Sdim#endif /* ACPI_DBG_TRACK_ALLOCATIONS */ 387281075Sdim 388281075Sdim#endif /* ACPI_NO_MEM_ALLOCATIONS */ 389281075Sdim 390281075Sdim 391193267Sjkim/****************************************************************************** 392193267Sjkim * 393193267Sjkim * ACPI Specification constants (Do not change unless the specification changes) 394193267Sjkim * 395193267Sjkim *****************************************************************************/ 396193267Sjkim 397193267Sjkim/* Number of distinct FADT-based GPE register blocks (GPE0 and GPE1) */ 398193267Sjkim 399193267Sjkim#define ACPI_MAX_GPE_BLOCKS 2 400193267Sjkim 401193267Sjkim/* Default ACPI register widths */ 402193267Sjkim 403193267Sjkim#define ACPI_GPE_REGISTER_WIDTH 8 404193267Sjkim#define ACPI_PM1_REGISTER_WIDTH 16 405193267Sjkim#define ACPI_PM2_REGISTER_WIDTH 8 406193267Sjkim#define ACPI_PM_TIMER_WIDTH 32 407281075Sdim#define ACPI_RESET_REGISTER_WIDTH 8 408193267Sjkim 409193267Sjkim/* Names within the namespace are 4 bytes long */ 410193267Sjkim 411193267Sjkim#define ACPI_NAME_SIZE 4 412193267Sjkim#define ACPI_PATH_SEGMENT_LENGTH 5 /* 4 chars for name + 1 char for separator */ 413193267Sjkim#define ACPI_PATH_SEPARATOR '.' 414193267Sjkim 415193267Sjkim/* Sizes for ACPI table headers */ 416193267Sjkim 417193267Sjkim#define ACPI_OEM_ID_SIZE 6 418193267Sjkim#define ACPI_OEM_TABLE_ID_SIZE 8 419193267Sjkim 420193267Sjkim/* ACPI/PNP hardware IDs */ 421193267Sjkim 422193267Sjkim#define PCI_ROOT_HID_STRING "PNP0A03" 423193267Sjkim#define PCI_EXPRESS_ROOT_HID_STRING "PNP0A08" 424193267Sjkim 425193267Sjkim/* PM Timer ticks per second (HZ) */ 426193267Sjkim 427245582Sjkim#define ACPI_PM_TIMER_FREQUENCY 3579545 428193267Sjkim 429193267Sjkim 430167802Sjkim/******************************************************************************* 431167802Sjkim * 432167802Sjkim * Independent types 433167802Sjkim * 434167802Sjkim ******************************************************************************/ 435167802Sjkim 436167802Sjkim/* Logical defines and NULL */ 437167802Sjkim 43867754Smsmith#ifdef FALSE 43967754Smsmith#undef FALSE 44067754Smsmith#endif 44167754Smsmith#define FALSE (1 == 0) 44267754Smsmith 44367754Smsmith#ifdef TRUE 44467754Smsmith#undef TRUE 44567754Smsmith#endif 44667754Smsmith#define TRUE (1 == 1) 44767754Smsmith 44867754Smsmith#ifndef NULL 44967754Smsmith#define NULL (void *) 0 45067754Smsmith#endif 45167754Smsmith 45267754Smsmith 45367754Smsmith/* 454193267Sjkim * Miscellaneous types 45567754Smsmith */ 45667754Smsmithtypedef UINT32 ACPI_STATUS; /* All ACPI Exceptions */ 45780062Smsmithtypedef UINT32 ACPI_NAME; /* 4-byte ACPI name */ 458114237Snjltypedef char * ACPI_STRING; /* Null terminated ASCII string */ 459167802Sjkimtypedef void * ACPI_HANDLE; /* Actually a ptr to a NS Node */ 46067754Smsmith 461193267Sjkim 462245582Sjkim/* Time constants for timer calculations */ 463245582Sjkim 464245582Sjkim#define ACPI_MSEC_PER_SEC 1000L 465245582Sjkim 466245582Sjkim#define ACPI_USEC_PER_MSEC 1000L 467245582Sjkim#define ACPI_USEC_PER_SEC 1000000L 468245582Sjkim 469245582Sjkim#define ACPI_100NSEC_PER_USEC 10L 470245582Sjkim#define ACPI_100NSEC_PER_MSEC 10000L 471245582Sjkim#define ACPI_100NSEC_PER_SEC 10000000L 472245582Sjkim 473245582Sjkim#define ACPI_NSEC_PER_USEC 1000L 474245582Sjkim#define ACPI_NSEC_PER_MSEC 1000000L 475245582Sjkim#define ACPI_NSEC_PER_SEC 1000000000L 476245582Sjkim 477245582Sjkim 478193267Sjkim/* Owner IDs are used to track namespace nodes for selective deletion */ 479193267Sjkim 480193267Sjkimtypedef UINT8 ACPI_OWNER_ID; 481193267Sjkim#define ACPI_OWNER_ID_MAX 0xFF 482193267Sjkim 483193267Sjkim 48467754Smsmith#define ACPI_INTEGER_BIT_SIZE 64 485138287Smarks#define ACPI_MAX_DECIMAL_DIGITS 20 /* 2^64 = 18,446,744,073,709,551,616 */ 486138287Smarks#define ACPI_MAX64_DECIMAL_DIGITS 20 487138287Smarks#define ACPI_MAX32_DECIMAL_DIGITS 10 488138287Smarks#define ACPI_MAX16_DECIMAL_DIGITS 5 489138287Smarks#define ACPI_MAX8_DECIMAL_DIGITS 3 49067754Smsmith 49167754Smsmith/* 49267754Smsmith * Constants with special meanings 49367754Smsmith */ 494167802Sjkim#define ACPI_ROOT_OBJECT ACPI_ADD_PTR (ACPI_HANDLE, NULL, ACPI_MAX_PTR) 495193267Sjkim#define ACPI_WAIT_FOREVER 0xFFFF /* UINT16, as per ACPI spec */ 496193267Sjkim#define ACPI_DO_NOT_WAIT 0 49767754Smsmith 498202771Sjkim/* 499202771Sjkim * Obsolete: Acpi integer width. In ACPI version 1 (1996), integers are 32 bits. 500202771Sjkim * In ACPI version 2 (2000) and later, integers are 64 bits. Note that this 501202771Sjkim * pertains to the ACPI integer type only, not to other integers used in the 502202771Sjkim * implementation of the ACPICA subsystem. 503202771Sjkim * 504202771Sjkim * 01/2010: This type is obsolete and has been removed from the entire ACPICA 505202771Sjkim * code base. It remains here for compatibility with device drivers that use 506202771Sjkim * the type. However, it will be removed in the future. 507202771Sjkim */ 508202771Sjkimtypedef UINT64 ACPI_INTEGER; 509202771Sjkim#define ACPI_INTEGER_MAX ACPI_UINT64_MAX 51077424Smsmith 511202771Sjkim 512193267Sjkim/******************************************************************************* 513193267Sjkim * 514193267Sjkim * Commonly used macros 515193267Sjkim * 516193267Sjkim ******************************************************************************/ 517193267Sjkim 518193267Sjkim/* Data manipulation */ 519193267Sjkim 520193267Sjkim#define ACPI_LOBYTE(Integer) ((UINT8) (UINT16)(Integer)) 521193267Sjkim#define ACPI_HIBYTE(Integer) ((UINT8) (((UINT16)(Integer)) >> 8)) 522193267Sjkim#define ACPI_LOWORD(Integer) ((UINT16) (UINT32)(Integer)) 523193267Sjkim#define ACPI_HIWORD(Integer) ((UINT16)(((UINT32)(Integer)) >> 16)) 524193267Sjkim#define ACPI_LODWORD(Integer64) ((UINT32) (UINT64)(Integer64)) 525193267Sjkim#define ACPI_HIDWORD(Integer64) ((UINT32)(((UINT64)(Integer64)) >> 32)) 526193267Sjkim 527193267Sjkim#define ACPI_SET_BIT(target,bit) ((target) |= (bit)) 528193267Sjkim#define ACPI_CLEAR_BIT(target,bit) ((target) &= ~(bit)) 529193267Sjkim#define ACPI_MIN(a,b) (((a)<(b))?(a):(b)) 530193267Sjkim#define ACPI_MAX(a,b) (((a)>(b))?(a):(b)) 531193267Sjkim 532193267Sjkim/* Size calculation */ 533193267Sjkim 534193267Sjkim#define ACPI_ARRAY_LENGTH(x) (sizeof(x) / sizeof((x)[0])) 535193267Sjkim 536193267Sjkim/* Pointer manipulation */ 537193267Sjkim 538193267Sjkim#define ACPI_CAST_PTR(t, p) ((t *) (ACPI_UINTPTR_T) (p)) 539193267Sjkim#define ACPI_CAST_INDIRECT_PTR(t, p) ((t **) (ACPI_UINTPTR_T) (p)) 540193267Sjkim#define ACPI_ADD_PTR(t, a, b) ACPI_CAST_PTR (t, (ACPI_CAST_PTR (UINT8, (a)) + (ACPI_SIZE)(b))) 541284460Sjkim#define ACPI_SUB_PTR(t, a, b) ACPI_CAST_PTR (t, (ACPI_CAST_PTR (UINT8, (a)) - (ACPI_SIZE)(b))) 542193267Sjkim#define ACPI_PTR_DIFF(a, b) (ACPI_SIZE) (ACPI_CAST_PTR (UINT8, (a)) - ACPI_CAST_PTR (UINT8, (b))) 543193267Sjkim 544193267Sjkim/* Pointer/Integer type conversions */ 545193267Sjkim 546193267Sjkim#define ACPI_TO_POINTER(i) ACPI_ADD_PTR (void, (void *) NULL,(ACPI_SIZE) i) 547193267Sjkim#define ACPI_TO_INTEGER(p) ACPI_PTR_DIFF (p, (void *) NULL) 548281075Sdim#define ACPI_OFFSET(d, f) ACPI_PTR_DIFF (&(((d *) 0)->f), (void *) NULL) 549193267Sjkim#define ACPI_PHYSADDR_TO_PTR(i) ACPI_TO_POINTER(i) 550193267Sjkim#define ACPI_PTR_TO_PHYSADDR(i) ACPI_TO_INTEGER(i) 551193267Sjkim 552241973Sjkim/* Optimizations for 4-character (32-bit) ACPI_NAME manipulation */ 553241973Sjkim 554193267Sjkim#ifndef ACPI_MISALIGNMENT_NOT_SUPPORTED 555193267Sjkim#define ACPI_COMPARE_NAME(a,b) (*ACPI_CAST_PTR (UINT32, (a)) == *ACPI_CAST_PTR (UINT32, (b))) 556241973Sjkim#define ACPI_MOVE_NAME(dest,src) (*ACPI_CAST_PTR (UINT32, (dest)) = *ACPI_CAST_PTR (UINT32, (src))) 557193267Sjkim#else 558306536Sjkim#define ACPI_COMPARE_NAME(a,b) (!strncmp (ACPI_CAST_PTR (char, (a)), ACPI_CAST_PTR (char, (b)), ACPI_NAME_SIZE)) 559306536Sjkim#define ACPI_MOVE_NAME(dest,src) (strncpy (ACPI_CAST_PTR (char, (dest)), ACPI_CAST_PTR (char, (src)), ACPI_NAME_SIZE)) 560193267Sjkim#endif 561193267Sjkim 562254745Sjkim/* Support for the special RSDP signature (8 characters) */ 563193267Sjkim 564306536Sjkim#define ACPI_VALIDATE_RSDP_SIG(a) (!strncmp (ACPI_CAST_PTR (char, (a)), ACPI_SIG_RSDP, 8)) 565306536Sjkim#define ACPI_MAKE_RSDP_SIG(dest) (memcpy (ACPI_CAST_PTR (char, (dest)), ACPI_SIG_RSDP, 8)) 566254745Sjkim 567254745Sjkim 568193267Sjkim/******************************************************************************* 569193267Sjkim * 570193267Sjkim * Miscellaneous constants 571193267Sjkim * 572193267Sjkim ******************************************************************************/ 573193267Sjkim 57477424Smsmith/* 57577424Smsmith * Initialization sequence 57677424Smsmith */ 57767754Smsmith#define ACPI_FULL_INITIALIZATION 0x00 57867754Smsmith#define ACPI_NO_ADDRESS_SPACE_INIT 0x01 57967754Smsmith#define ACPI_NO_HARDWARE_INIT 0x02 58067754Smsmith#define ACPI_NO_EVENT_INIT 0x04 58191116Smsmith#define ACPI_NO_HANDLER_INIT 0x08 58291116Smsmith#define ACPI_NO_ACPI_ENABLE 0x10 58391116Smsmith#define ACPI_NO_DEVICE_INIT 0x20 58491116Smsmith#define ACPI_NO_OBJECT_INIT 0x40 585306536Sjkim#define ACPI_NO_FACS_INIT 0x80 58667754Smsmith 58780062Smsmith/* 58880062Smsmith * Initialization state 58980062Smsmith */ 590167802Sjkim#define ACPI_SUBSYSTEM_INITIALIZE 0x01 591167802Sjkim#define ACPI_INITIALIZED_OK 0x02 59267754Smsmith 59367754Smsmith/* 59478986Smsmith * Power state values 59567754Smsmith */ 59678986Smsmith#define ACPI_STATE_UNKNOWN (UINT8) 0xFF 59778986Smsmith 59867754Smsmith#define ACPI_STATE_S0 (UINT8) 0 59967754Smsmith#define ACPI_STATE_S1 (UINT8) 1 60067754Smsmith#define ACPI_STATE_S2 (UINT8) 2 60167754Smsmith#define ACPI_STATE_S3 (UINT8) 3 60267754Smsmith#define ACPI_STATE_S4 (UINT8) 4 60371867Smsmith#define ACPI_STATE_S5 (UINT8) 5 60467754Smsmith#define ACPI_S_STATES_MAX ACPI_STATE_S5 60577424Smsmith#define ACPI_S_STATE_COUNT 6 60667754Smsmith 60777424Smsmith#define ACPI_STATE_D0 (UINT8) 0 60877424Smsmith#define ACPI_STATE_D1 (UINT8) 1 60977424Smsmith#define ACPI_STATE_D2 (UINT8) 2 61077424Smsmith#define ACPI_STATE_D3 (UINT8) 3 61177424Smsmith#define ACPI_D_STATES_MAX ACPI_STATE_D3 61277424Smsmith#define ACPI_D_STATE_COUNT 4 61367754Smsmith 61491116Smsmith#define ACPI_STATE_C0 (UINT8) 0 61591116Smsmith#define ACPI_STATE_C1 (UINT8) 1 61691116Smsmith#define ACPI_STATE_C2 (UINT8) 2 61791116Smsmith#define ACPI_STATE_C3 (UINT8) 3 61891116Smsmith#define ACPI_C_STATES_MAX ACPI_STATE_C3 61991116Smsmith#define ACPI_C_STATE_COUNT 4 62091116Smsmith 62178986Smsmith/* 62287031Smsmith * Sleep type invalid value 62387031Smsmith */ 62487031Smsmith#define ACPI_SLEEP_TYPE_MAX 0x7 62587031Smsmith#define ACPI_SLEEP_TYPE_INVALID 0xFF 62687031Smsmith 62787031Smsmith/* 62878986Smsmith * Standard notify values 62978986Smsmith */ 630193267Sjkim#define ACPI_NOTIFY_BUS_CHECK (UINT8) 0x00 631193267Sjkim#define ACPI_NOTIFY_DEVICE_CHECK (UINT8) 0x01 632193267Sjkim#define ACPI_NOTIFY_DEVICE_WAKE (UINT8) 0x02 633193267Sjkim#define ACPI_NOTIFY_EJECT_REQUEST (UINT8) 0x03 634193267Sjkim#define ACPI_NOTIFY_DEVICE_CHECK_LIGHT (UINT8) 0x04 635193267Sjkim#define ACPI_NOTIFY_FREQUENCY_MISMATCH (UINT8) 0x05 636193267Sjkim#define ACPI_NOTIFY_BUS_MODE_MISMATCH (UINT8) 0x06 637193267Sjkim#define ACPI_NOTIFY_POWER_FAULT (UINT8) 0x07 638193267Sjkim#define ACPI_NOTIFY_CAPABILITIES_CHECK (UINT8) 0x08 639193267Sjkim#define ACPI_NOTIFY_DEVICE_PLD_CHECK (UINT8) 0x09 640193267Sjkim#define ACPI_NOTIFY_RESERVED (UINT8) 0x0A 641193267Sjkim#define ACPI_NOTIFY_LOCALITY_UPDATE (UINT8) 0x0B 642231844Sjkim#define ACPI_NOTIFY_SHUTDOWN_REQUEST (UINT8) 0x0C 643281075Sdim#define ACPI_NOTIFY_AFFINITY_UPDATE (UINT8) 0x0D 64477424Smsmith 645306536Sjkim#define ACPI_GENERIC_NOTIFY_MAX 0x0D 646306536Sjkim#define ACPI_SPECIFIC_NOTIFY_MAX 0x84 647193267Sjkim 64867754Smsmith/* 649193267Sjkim * Types associated with ACPI names and objects. The first group of 650107325Siwasaki * values (up to ACPI_TYPE_EXTERNAL_MAX) correspond to the definition 651193267Sjkim * of the ACPI ObjectType() operator (See the ACPI Spec). Therefore, 65291116Smsmith * only add to the first group if the spec changes. 65367754Smsmith * 654128212Snjl * NOTE: Types must be kept in sync with the global AcpiNsProperties 655107325Siwasaki * and AcpiNsTypeNames arrays. 65667754Smsmith */ 65767754Smsmithtypedef UINT32 ACPI_OBJECT_TYPE; 65867754Smsmith 65987031Smsmith#define ACPI_TYPE_ANY 0x00 66087031Smsmith#define ACPI_TYPE_INTEGER 0x01 /* Byte/Word/Dword/Zero/One/Ones */ 66187031Smsmith#define ACPI_TYPE_STRING 0x02 66287031Smsmith#define ACPI_TYPE_BUFFER 0x03 66387031Smsmith#define ACPI_TYPE_PACKAGE 0x04 /* ByteConst, multiple DataTerm/Constant/SuperName */ 66487031Smsmith#define ACPI_TYPE_FIELD_UNIT 0x05 66587031Smsmith#define ACPI_TYPE_DEVICE 0x06 /* Name, multiple Node */ 66687031Smsmith#define ACPI_TYPE_EVENT 0x07 66787031Smsmith#define ACPI_TYPE_METHOD 0x08 /* Name, ByteConst, multiple Code */ 66887031Smsmith#define ACPI_TYPE_MUTEX 0x09 66987031Smsmith#define ACPI_TYPE_REGION 0x0A 67087031Smsmith#define ACPI_TYPE_POWER 0x0B /* Name,ByteConst,WordConst,multi Node */ 67187031Smsmith#define ACPI_TYPE_PROCESSOR 0x0C /* Name,ByteConst,DWordConst,ByteConst,multi NmO */ 67287031Smsmith#define ACPI_TYPE_THERMAL 0x0D /* Name, multiple Node */ 67387031Smsmith#define ACPI_TYPE_BUFFER_FIELD 0x0E 67487031Smsmith#define ACPI_TYPE_DDB_HANDLE 0x0F 67587031Smsmith#define ACPI_TYPE_DEBUG_OBJECT 0x10 67667754Smsmith 677107325Siwasaki#define ACPI_TYPE_EXTERNAL_MAX 0x10 678306536Sjkim#define ACPI_NUM_TYPES (ACPI_TYPE_EXTERNAL_MAX + 1) 67967754Smsmith 68067754Smsmith/* 681114237Snjl * These are object types that do not map directly to the ACPI 682114237Snjl * ObjectType() operator. They are used for various internal purposes only. 683114237Snjl * If new predefined ACPI_TYPEs are added (via the ACPI specification), these 684107325Siwasaki * internal types must move upwards. (There is code that depends on these 685107325Siwasaki * values being contiguous with the external types above.) 68667754Smsmith */ 687107325Siwasaki#define ACPI_TYPE_LOCAL_REGION_FIELD 0x11 688107325Siwasaki#define ACPI_TYPE_LOCAL_BANK_FIELD 0x12 689107325Siwasaki#define ACPI_TYPE_LOCAL_INDEX_FIELD 0x13 690107325Siwasaki#define ACPI_TYPE_LOCAL_REFERENCE 0x14 /* Arg#, Local#, Name, Debug, RefOf, Index */ 691107325Siwasaki#define ACPI_TYPE_LOCAL_ALIAS 0x15 692128212Snjl#define ACPI_TYPE_LOCAL_METHOD_ALIAS 0x16 693128212Snjl#define ACPI_TYPE_LOCAL_NOTIFY 0x17 694128212Snjl#define ACPI_TYPE_LOCAL_ADDRESS_HANDLER 0x18 695128212Snjl#define ACPI_TYPE_LOCAL_RESOURCE 0x19 696128212Snjl#define ACPI_TYPE_LOCAL_RESOURCE_FIELD 0x1A 697128212Snjl#define ACPI_TYPE_LOCAL_SCOPE 0x1B /* 1 Name, multiple ObjectList Nodes */ 69867754Smsmith 699128212Snjl#define ACPI_TYPE_NS_NODE_MAX 0x1B /* Last typecode used within a NS Node */ 700306536Sjkim#define ACPI_TOTAL_TYPES (ACPI_TYPE_NS_NODE_MAX + 1) 70167754Smsmith 702107325Siwasaki/* 703107325Siwasaki * These are special object types that never appear in 704245582Sjkim * a Namespace node, only in an object of ACPI_OPERAND_OBJECT 705107325Siwasaki */ 706128212Snjl#define ACPI_TYPE_LOCAL_EXTRA 0x1C 707128212Snjl#define ACPI_TYPE_LOCAL_DATA 0x1D 70867754Smsmith 709128212Snjl#define ACPI_TYPE_LOCAL_MAX 0x1D 71069450Smsmith 711107325Siwasaki/* All types above here are invalid */ 71267754Smsmith 713128212Snjl#define ACPI_TYPE_INVALID 0x1E 71467754Smsmith#define ACPI_TYPE_NOT_FOUND 0xFF 71567754Smsmith 716193267Sjkim#define ACPI_NUM_NS_TYPES (ACPI_TYPE_INVALID + 1) 717193267Sjkim 718193267Sjkim 71967754Smsmith/* 72087031Smsmith * All I/O 72187031Smsmith */ 72287031Smsmith#define ACPI_READ 0 72387031Smsmith#define ACPI_WRITE 1 724107325Siwasaki#define ACPI_IO_MASK 1 72577424Smsmith 72677424Smsmith/* 727128212Snjl * Event Types: Fixed & General Purpose 72867754Smsmith */ 72967754Smsmithtypedef UINT32 ACPI_EVENT_TYPE; 73067754Smsmith 73167754Smsmith/* 73267754Smsmith * Fixed events 73367754Smsmith */ 73491116Smsmith#define ACPI_EVENT_PMTIMER 0 73591116Smsmith#define ACPI_EVENT_GLOBAL 1 73691116Smsmith#define ACPI_EVENT_POWER_BUTTON 2 73791116Smsmith#define ACPI_EVENT_SLEEP_BUTTON 3 73891116Smsmith#define ACPI_EVENT_RTC 4 73991116Smsmith#define ACPI_EVENT_MAX 4 74091116Smsmith#define ACPI_NUM_FIXED_EVENTS ACPI_EVENT_MAX + 1 74167754Smsmith 74267754Smsmith/* 743128212Snjl * Event Status - Per event 74467754Smsmith * ------------- 74567754Smsmith * The encoding of ACPI_EVENT_STATUS is illustrated below. 74667754Smsmith * Note that a set bit (1) indicates the property is TRUE 74767754Smsmith * (e.g. if bit 0 is set then the event is enabled). 748281687Sjkim * +-------------+-+-+-+-+-+ 749281687Sjkim * | Bits 31:5 |4|3|2|1|0| 750281687Sjkim * +-------------+-+-+-+-+-+ 751281687Sjkim * | | | | | | 752281687Sjkim * | | | | | +- Enabled? 753281687Sjkim * | | | | +--- Enabled for wake? 754281687Sjkim * | | | +----- Status bit set? 755281687Sjkim * | | +------- Enable bit set? 756281687Sjkim * | +--------- Has a handler? 757281687Sjkim * +--------------- <Reserved> 75867754Smsmith */ 75967754Smsmithtypedef UINT32 ACPI_EVENT_STATUS; 76067754Smsmith 76169450Smsmith#define ACPI_EVENT_FLAG_DISABLED (ACPI_EVENT_STATUS) 0x00 76267754Smsmith#define ACPI_EVENT_FLAG_ENABLED (ACPI_EVENT_STATUS) 0x01 76384491Smsmith#define ACPI_EVENT_FLAG_WAKE_ENABLED (ACPI_EVENT_STATUS) 0x02 764281687Sjkim#define ACPI_EVENT_FLAG_STATUS_SET (ACPI_EVENT_STATUS) 0x04 765281687Sjkim#define ACPI_EVENT_FLAG_ENABLE_SET (ACPI_EVENT_STATUS) 0x08 766281687Sjkim#define ACPI_EVENT_FLAG_HAS_HANDLER (ACPI_EVENT_STATUS) 0x10 767281687Sjkim#define ACPI_EVENT_FLAG_SET ACPI_EVENT_FLAG_STATUS_SET 76867754Smsmith 769209746Sjkim/* Actions for AcpiSetGpe, AcpiGpeWakeup, AcpiHwLowSetGpe */ 770206117Sjkim 771129684Snjl#define ACPI_GPE_ENABLE 0 772129684Snjl#define ACPI_GPE_DISABLE 1 773209746Sjkim#define ACPI_GPE_CONDITIONAL_ENABLE 2 774129684Snjl 775128212Snjl/* 776128212Snjl * GPE info flags - Per GPE 777216471Sjkim * +-------+-+-+---+ 778281075Sdim * | 7:5 |4|3|2:0| 779216471Sjkim * +-------+-+-+---+ 780216471Sjkim * | | | | 781216471Sjkim * | | | +-- Type of dispatch:to method, handler, notify, or none 782216471Sjkim * | | +----- Interrupt type: edge or level triggered 783216471Sjkim * | +------- Is a Wake GPE 784216471Sjkim * +------------ <Reserved> 785128212Snjl */ 786216471Sjkim#define ACPI_GPE_DISPATCH_NONE (UINT8) 0x00 787216471Sjkim#define ACPI_GPE_DISPATCH_METHOD (UINT8) 0x01 788216471Sjkim#define ACPI_GPE_DISPATCH_HANDLER (UINT8) 0x02 789216471Sjkim#define ACPI_GPE_DISPATCH_NOTIFY (UINT8) 0x03 790281075Sdim#define ACPI_GPE_DISPATCH_RAW_HANDLER (UINT8) 0x04 791281075Sdim#define ACPI_GPE_DISPATCH_MASK (UINT8) 0x07 792281075Sdim#define ACPI_GPE_DISPATCH_TYPE(flags) ((UINT8) ((flags) & ACPI_GPE_DISPATCH_MASK)) 793216471Sjkim 794281075Sdim#define ACPI_GPE_LEVEL_TRIGGERED (UINT8) 0x08 795129684Snjl#define ACPI_GPE_EDGE_TRIGGERED (UINT8) 0x00 796281075Sdim#define ACPI_GPE_XRUPT_TYPE_MASK (UINT8) 0x08 797128212Snjl 798281075Sdim#define ACPI_GPE_CAN_WAKE (UINT8) 0x10 799128212Snjl 800128212Snjl/* 801128212Snjl * Flags for GPE and Lock interfaces 802128212Snjl */ 803128212Snjl#define ACPI_NOT_ISR 0x1 804128212Snjl#define ACPI_ISR 0x0 805128212Snjl 806128212Snjl 80767754Smsmith/* Notify types */ 80867754Smsmith 809129684Snjl#define ACPI_SYSTEM_NOTIFY 0x1 810129684Snjl#define ACPI_DEVICE_NOTIFY 0x2 811193267Sjkim#define ACPI_ALL_NOTIFY (ACPI_SYSTEM_NOTIFY | ACPI_DEVICE_NOTIFY) 812129684Snjl#define ACPI_MAX_NOTIFY_HANDLER_TYPE 0x3 813234623Sjkim#define ACPI_NUM_NOTIFY_TYPES 2 81467754Smsmith 815231844Sjkim#define ACPI_MAX_SYS_NOTIFY 0x7F 816231844Sjkim#define ACPI_MAX_DEVICE_SPECIFIC_NOTIFY 0xBF 81767754Smsmith 818234623Sjkim#define ACPI_SYSTEM_HANDLER_LIST 0 /* Used as index, must be SYSTEM_NOTIFY -1 */ 819234623Sjkim#define ACPI_DEVICE_HANDLER_LIST 1 /* Used as index, must be DEVICE_NOTIFY -1 */ 82067754Smsmith 821234623Sjkim 82267754Smsmith/* Address Space (Operation Region) Types */ 82367754Smsmith 82477424Smsmithtypedef UINT8 ACPI_ADR_SPACE_TYPE; 82567754Smsmith 82677424Smsmith#define ACPI_ADR_SPACE_SYSTEM_MEMORY (ACPI_ADR_SPACE_TYPE) 0 82777424Smsmith#define ACPI_ADR_SPACE_SYSTEM_IO (ACPI_ADR_SPACE_TYPE) 1 82877424Smsmith#define ACPI_ADR_SPACE_PCI_CONFIG (ACPI_ADR_SPACE_TYPE) 2 82977424Smsmith#define ACPI_ADR_SPACE_EC (ACPI_ADR_SPACE_TYPE) 3 83077424Smsmith#define ACPI_ADR_SPACE_SMBUS (ACPI_ADR_SPACE_TYPE) 4 83177424Smsmith#define ACPI_ADR_SPACE_CMOS (ACPI_ADR_SPACE_TYPE) 5 83277424Smsmith#define ACPI_ADR_SPACE_PCI_BAR_TARGET (ACPI_ADR_SPACE_TYPE) 6 833197104Sjkim#define ACPI_ADR_SPACE_IPMI (ACPI_ADR_SPACE_TYPE) 7 834228110Sjkim#define ACPI_ADR_SPACE_GPIO (ACPI_ADR_SPACE_TYPE) 8 835228110Sjkim#define ACPI_ADR_SPACE_GSBUS (ACPI_ADR_SPACE_TYPE) 9 836235945Sjkim#define ACPI_ADR_SPACE_PLATFORM_COMM (ACPI_ADR_SPACE_TYPE) 10 83767754Smsmith 838235945Sjkim#define ACPI_NUM_PREDEFINED_REGIONS 11 83967754Smsmith 84067754Smsmith/* 841220663Sjkim * Special Address Spaces 842220663Sjkim * 843220663Sjkim * Note: A Data Table region is a special type of operation region 844220663Sjkim * that has its own AML opcode. However, internally, the AML 845220663Sjkim * interpreter simply creates an operation region with an an address 846220663Sjkim * space type of ACPI_ADR_SPACE_DATA_TABLE. 847220663Sjkim */ 848220663Sjkim#define ACPI_ADR_SPACE_DATA_TABLE (ACPI_ADR_SPACE_TYPE) 0x7E /* Internal to ACPICA only */ 849220663Sjkim#define ACPI_ADR_SPACE_FIXED_HARDWARE (ACPI_ADR_SPACE_TYPE) 0x7F 850220663Sjkim 851220663Sjkim/* Values for _REG connection code */ 852220663Sjkim 853220663Sjkim#define ACPI_REG_DISCONNECT 0 854220663Sjkim#define ACPI_REG_CONNECT 1 855220663Sjkim 856220663Sjkim/* 85799679Siwasaki * BitRegister IDs 858193267Sjkim * 859193267Sjkim * These values are intended to be used by the hardware interfaces 860193267Sjkim * and are mapped to individual bitfields defined within the ACPI 861193267Sjkim * registers. See the AcpiGbl_BitRegisterInfo global table in utglobal.c 862193267Sjkim * for this mapping. 86399679Siwasaki */ 864193267Sjkim 865193267Sjkim/* PM1 Status register */ 866193267Sjkim 86799679Siwasaki#define ACPI_BITREG_TIMER_STATUS 0x00 86899679Siwasaki#define ACPI_BITREG_BUS_MASTER_STATUS 0x01 86999679Siwasaki#define ACPI_BITREG_GLOBAL_LOCK_STATUS 0x02 87099679Siwasaki#define ACPI_BITREG_POWER_BUTTON_STATUS 0x03 87199679Siwasaki#define ACPI_BITREG_SLEEP_BUTTON_STATUS 0x04 87299679Siwasaki#define ACPI_BITREG_RT_CLOCK_STATUS 0x05 87399679Siwasaki#define ACPI_BITREG_WAKE_STATUS 0x06 874151937Sjkim#define ACPI_BITREG_PCIEXP_WAKE_STATUS 0x07 87599679Siwasaki 876193267Sjkim/* PM1 Enable register */ 877193267Sjkim 878151937Sjkim#define ACPI_BITREG_TIMER_ENABLE 0x08 879151937Sjkim#define ACPI_BITREG_GLOBAL_LOCK_ENABLE 0x09 880151937Sjkim#define ACPI_BITREG_POWER_BUTTON_ENABLE 0x0A 881151937Sjkim#define ACPI_BITREG_SLEEP_BUTTON_ENABLE 0x0B 882151937Sjkim#define ACPI_BITREG_RT_CLOCK_ENABLE 0x0C 883193267Sjkim#define ACPI_BITREG_PCIEXP_WAKE_DISABLE 0x0D 88499679Siwasaki 885193267Sjkim/* PM1 Control register */ 88699679Siwasaki 887193267Sjkim#define ACPI_BITREG_SCI_ENABLE 0x0E 888193267Sjkim#define ACPI_BITREG_BUS_MASTER_RLD 0x0F 889193267Sjkim#define ACPI_BITREG_GLOBAL_LOCK_RELEASE 0x10 890193267Sjkim#define ACPI_BITREG_SLEEP_TYPE 0x11 891193267Sjkim#define ACPI_BITREG_SLEEP_ENABLE 0x12 89299679Siwasaki 893193267Sjkim/* PM2 Control register */ 894193267Sjkim 895193267Sjkim#define ACPI_BITREG_ARB_DISABLE 0x13 896193267Sjkim 897193267Sjkim#define ACPI_BITREG_MAX 0x13 89899679Siwasaki#define ACPI_NUM_BITREG ACPI_BITREG_MAX + 1 89999679Siwasaki 900107325Siwasaki 901193267Sjkim/* Status register values. A 1 clears a status bit. 0 = no effect */ 902193267Sjkim 903193267Sjkim#define ACPI_CLEAR_STATUS 1 904193267Sjkim 905193267Sjkim/* Enable and Control register values */ 906193267Sjkim 907193267Sjkim#define ACPI_ENABLE_EVENT 1 908193267Sjkim#define ACPI_DISABLE_EVENT 0 909193267Sjkim 910193267Sjkim 911231844Sjkim/* Sleep function dispatch */ 912231844Sjkim 913231844Sjkimtypedef ACPI_STATUS (*ACPI_SLEEP_FUNCTION) ( 914239340Sjkim UINT8 SleepState); 915231844Sjkim 916231844Sjkimtypedef struct acpi_sleep_functions 917231844Sjkim{ 918231844Sjkim ACPI_SLEEP_FUNCTION LegacyFunction; 919231844Sjkim ACPI_SLEEP_FUNCTION ExtendedFunction; 920231844Sjkim 921231844Sjkim} ACPI_SLEEP_FUNCTIONS; 922231844Sjkim 923231844Sjkim 92499679Siwasaki/* 92567754Smsmith * External ACPI object definition 92667754Smsmith */ 927193267Sjkim 928193267Sjkim/* 929193267Sjkim * Note: Type == ACPI_TYPE_ANY (0) is used to indicate a NULL package element 930193267Sjkim * or an unresolved named reference. 931193267Sjkim */ 932114237Snjltypedef union acpi_object 93367754Smsmith{ 934167802Sjkim ACPI_OBJECT_TYPE Type; /* See definition of AcpiNsType for values */ 93567754Smsmith struct 93667754Smsmith { 937193267Sjkim ACPI_OBJECT_TYPE Type; /* ACPI_TYPE_INTEGER */ 938202771Sjkim UINT64 Value; /* The actual number */ 93971867Smsmith } Integer; 94067754Smsmith 94167754Smsmith struct 94267754Smsmith { 943193267Sjkim ACPI_OBJECT_TYPE Type; /* ACPI_TYPE_STRING */ 944167802Sjkim UINT32 Length; /* # of bytes in string, excluding trailing null */ 945167802Sjkim char *Pointer; /* points to the string value */ 94667754Smsmith } String; 94767754Smsmith 94867754Smsmith struct 94967754Smsmith { 950193267Sjkim ACPI_OBJECT_TYPE Type; /* ACPI_TYPE_BUFFER */ 951167802Sjkim UINT32 Length; /* # of bytes in buffer */ 952167802Sjkim UINT8 *Pointer; /* points to the buffer */ 95367754Smsmith } Buffer; 95467754Smsmith 95567754Smsmith struct 95667754Smsmith { 957193267Sjkim ACPI_OBJECT_TYPE Type; /* ACPI_TYPE_PACKAGE */ 958167802Sjkim UINT32 Count; /* # of elements in package */ 959167802Sjkim union acpi_object *Elements; /* Pointer to an array of ACPI_OBJECTs */ 96067754Smsmith } Package; 96167754Smsmith 96267754Smsmith struct 96367754Smsmith { 964193267Sjkim ACPI_OBJECT_TYPE Type; /* ACPI_TYPE_LOCAL_REFERENCE */ 965193267Sjkim ACPI_OBJECT_TYPE ActualType; /* Type associated with the Handle */ 966193267Sjkim ACPI_HANDLE Handle; /* object reference */ 967193267Sjkim } Reference; 968193267Sjkim 969193267Sjkim struct 970193267Sjkim { 971193267Sjkim ACPI_OBJECT_TYPE Type; /* ACPI_TYPE_PROCESSOR */ 972167802Sjkim UINT32 ProcId; 973167802Sjkim ACPI_IO_ADDRESS PblkAddress; 974167802Sjkim UINT32 PblkLength; 97567754Smsmith } Processor; 97667754Smsmith 97767754Smsmith struct 97867754Smsmith { 979193267Sjkim ACPI_OBJECT_TYPE Type; /* ACPI_TYPE_POWER */ 980167802Sjkim UINT32 SystemLevel; 981167802Sjkim UINT32 ResourceOrder; 98267754Smsmith } PowerResource; 98367754Smsmith 98491116Smsmith} ACPI_OBJECT; 98567754Smsmith 98667754Smsmith 98767754Smsmith/* 98867754Smsmith * List of objects, used as a parameter list for control method evaluation 98967754Smsmith */ 990114237Snjltypedef struct acpi_object_list 99167754Smsmith{ 992167802Sjkim UINT32 Count; 993167802Sjkim ACPI_OBJECT *Pointer; 99467754Smsmith 99591116Smsmith} ACPI_OBJECT_LIST; 99667754Smsmith 99767754Smsmith 99867754Smsmith/* 99967754Smsmith * Miscellaneous common Data Structures used by the interfaces 100067754Smsmith */ 100191116Smsmith#define ACPI_NO_BUFFER 0 100291116Smsmith 1003281075Sdim#ifdef ACPI_NO_MEM_ALLOCATIONS 1004281075Sdim 1005281075Sdim#define ACPI_ALLOCATE_BUFFER (ACPI_SIZE) (0) 1006281075Sdim#define ACPI_ALLOCATE_LOCAL_BUFFER (ACPI_SIZE) (0) 1007281075Sdim 1008281075Sdim#else /* ACPI_NO_MEM_ALLOCATIONS */ 1009281075Sdim 1010281075Sdim#define ACPI_ALLOCATE_BUFFER (ACPI_SIZE) (-1) /* Let ACPICA allocate buffer */ 1011281075Sdim#define ACPI_ALLOCATE_LOCAL_BUFFER (ACPI_SIZE) (-2) /* For internal use only (enables tracking) */ 1012281075Sdim 1013281075Sdim#endif /* ACPI_NO_MEM_ALLOCATIONS */ 1014281075Sdim 1015114237Snjltypedef struct acpi_buffer 101667754Smsmith{ 1017167802Sjkim ACPI_SIZE Length; /* Length in bytes of the buffer */ 1018167802Sjkim void *Pointer; /* pointer to buffer */ 101967754Smsmith 102067754Smsmith} ACPI_BUFFER; 102167754Smsmith 102267754Smsmith 102367754Smsmith/* 102467754Smsmith * NameType for AcpiGetName 102567754Smsmith */ 102667754Smsmith#define ACPI_FULL_PATHNAME 0 102767754Smsmith#define ACPI_SINGLE_NAME 1 1028306536Sjkim#define ACPI_FULL_PATHNAME_NO_TRAILING 2 1029306536Sjkim#define ACPI_NAME_TYPE_MAX 2 103067754Smsmith 103167754Smsmith 103267754Smsmith/* 1033193267Sjkim * Predefined Namespace items 1034193267Sjkim */ 1035193267Sjkimtypedef struct acpi_predefined_names 1036193267Sjkim{ 1037306536Sjkim const char *Name; 1038193267Sjkim UINT8 Type; 1039193267Sjkim char *Val; 1040193267Sjkim 1041193267Sjkim} ACPI_PREDEFINED_NAMES; 1042193267Sjkim 1043193267Sjkim 1044193267Sjkim/* 104567754Smsmith * Structure and flags for AcpiGetSystemInfo 104667754Smsmith */ 104791116Smsmith#define ACPI_SYS_MODE_UNKNOWN 0x0000 104891116Smsmith#define ACPI_SYS_MODE_ACPI 0x0001 104991116Smsmith#define ACPI_SYS_MODE_LEGACY 0x0002 105091116Smsmith#define ACPI_SYS_MODES_MASK 0x0003 105167754Smsmith 105267754Smsmith 105367754Smsmith/* 105467754Smsmith * System info returned by AcpiGetSystemInfo() 105567754Smsmith */ 1056114237Snjltypedef struct acpi_system_info 105767754Smsmith{ 1058167802Sjkim UINT32 AcpiCaVersion; 1059167802Sjkim UINT32 Flags; 1060167802Sjkim UINT32 TimerResolution; 1061167802Sjkim UINT32 Reserved1; 1062167802Sjkim UINT32 Reserved2; 1063167802Sjkim UINT32 DebugLevel; 1064167802Sjkim UINT32 DebugLayer; 106567754Smsmith 106667754Smsmith} ACPI_SYSTEM_INFO; 106767754Smsmith 106867754Smsmith 106967754Smsmith/* 1070193267Sjkim * System statistics returned by AcpiGetStatistics() 1071193267Sjkim */ 1072193267Sjkimtypedef struct acpi_statistics 1073193267Sjkim{ 1074193267Sjkim UINT32 SciCount; 1075193267Sjkim UINT32 GpeCount; 1076193267Sjkim UINT32 FixedEventCount[ACPI_NUM_FIXED_EVENTS]; 1077193267Sjkim UINT32 MethodCount; 1078193267Sjkim 1079193267Sjkim} ACPI_STATISTICS; 1080193267Sjkim 1081193267Sjkim 1082193267Sjkim/* Table Event Types */ 1083193267Sjkim 1084193267Sjkim#define ACPI_TABLE_EVENT_LOAD 0x0 1085193267Sjkim#define ACPI_TABLE_EVENT_UNLOAD 0x1 1086193267Sjkim#define ACPI_NUM_TABLE_EVENTS 2 1087193267Sjkim 1088193267Sjkim 1089193267Sjkim/* 1090117521Snjl * Types specific to the OS service interfaces 1091117521Snjl */ 1092117521Snjltypedef UINT32 1093138287Smarks(ACPI_SYSTEM_XFACE *ACPI_OSD_HANDLER) ( 1094167802Sjkim void *Context); 1095117521Snjl 1096117521Snjltypedef void 1097138287Smarks(ACPI_SYSTEM_XFACE *ACPI_OSD_EXEC_CALLBACK) ( 1098167802Sjkim void *Context); 1099117521Snjl 1100117521Snjl/* 110167754Smsmith * Various handlers and callback procedures 110267754Smsmith */ 110367754Smsmithtypedef 1104254745SjkimUINT32 (*ACPI_SCI_HANDLER) ( 1105254745Sjkim void *Context); 1106254745Sjkim 1107254745Sjkimtypedef 1108216471Sjkimvoid (*ACPI_GBL_EVENT_HANDLER) ( 1109216471Sjkim UINT32 EventType, 1110216471Sjkim ACPI_HANDLE Device, 1111216471Sjkim UINT32 EventNumber, 1112216471Sjkim void *Context); 1113216471Sjkim 1114216471Sjkim#define ACPI_EVENT_TYPE_GPE 0 1115216471Sjkim#define ACPI_EVENT_TYPE_FIXED 1 1116216471Sjkim 1117216471Sjkimtypedef 111877424SmsmithUINT32 (*ACPI_EVENT_HANDLER) ( 1119167802Sjkim void *Context); 112067754Smsmith 112167754Smsmithtypedef 1122216471SjkimUINT32 (*ACPI_GPE_HANDLER) ( 1123216471Sjkim ACPI_HANDLE GpeDevice, 1124216471Sjkim UINT32 GpeNumber, 1125216471Sjkim void *Context); 1126216471Sjkim 1127216471Sjkimtypedef 112877424Smsmithvoid (*ACPI_NOTIFY_HANDLER) ( 1129167802Sjkim ACPI_HANDLE Device, 1130167802Sjkim UINT32 Value, 1131167802Sjkim void *Context); 113267754Smsmith 113387031Smsmithtypedef 113487031Smsmithvoid (*ACPI_OBJECT_HANDLER) ( 1135167802Sjkim ACPI_HANDLE Object, 1136167802Sjkim void *Data); 113767754Smsmith 113899679Siwasakitypedef 113999679SiwasakiACPI_STATUS (*ACPI_INIT_HANDLER) ( 1140167802Sjkim ACPI_HANDLE Object, 1141167802Sjkim UINT32 Function); 114287031Smsmith 114399679Siwasaki#define ACPI_INIT_DEVICE_INI 1 114499679Siwasaki 1145138287Smarkstypedef 1146138287SmarksACPI_STATUS (*ACPI_EXCEPTION_HANDLER) ( 1147167802Sjkim ACPI_STATUS AmlStatus, 1148167802Sjkim ACPI_NAME Name, 1149167802Sjkim UINT16 Opcode, 1150167802Sjkim UINT32 AmlOffset, 1151167802Sjkim void *Context); 115299679Siwasaki 1153193267Sjkim/* Table Event handler (Load, LoadTable, etc.) and types */ 1154138287Smarks 1155193267Sjkimtypedef 1156193267SjkimACPI_STATUS (*ACPI_TABLE_HANDLER) ( 1157193267Sjkim UINT32 Event, 1158193267Sjkim void *Table, 1159193267Sjkim void *Context); 1160193267Sjkim 1161193267Sjkim#define ACPI_TABLE_LOAD 0x0 1162193267Sjkim#define ACPI_TABLE_UNLOAD 0x1 1163193267Sjkim#define ACPI_NUM_TABLE_EVENTS 2 1164193267Sjkim 1165193267Sjkim 1166127175Snjl/* Address Spaces (For Operation Regions) */ 116777424Smsmith 116867754Smsmithtypedef 116977424SmsmithACPI_STATUS (*ACPI_ADR_SPACE_HANDLER) ( 1170167802Sjkim UINT32 Function, 1171167802Sjkim ACPI_PHYSICAL_ADDRESS Address, 1172167802Sjkim UINT32 BitWidth, 1173202771Sjkim UINT64 *Value, 1174167802Sjkim void *HandlerContext, 1175167802Sjkim void *RegionContext); 117667754Smsmith 1177167802Sjkim#define ACPI_DEFAULT_HANDLER NULL 117867754Smsmith 1179228110Sjkim/* Special Context data for GenericSerialBus/GeneralPurposeIo (ACPI 5.0) */ 1180228110Sjkim 1181228110Sjkimtypedef struct acpi_connection_info 1182228110Sjkim{ 1183228110Sjkim UINT8 *Connection; 1184228110Sjkim UINT16 Length; 1185228110Sjkim UINT8 AccessLength; 1186228110Sjkim 1187228110Sjkim} ACPI_CONNECTION_INFO; 1188228110Sjkim 1189228110Sjkim 119067754Smsmithtypedef 119177424SmsmithACPI_STATUS (*ACPI_ADR_SPACE_SETUP) ( 1192167802Sjkim ACPI_HANDLE RegionHandle, 1193167802Sjkim UINT32 Function, 1194167802Sjkim void *HandlerContext, 1195167802Sjkim void **RegionContext); 119667754Smsmith 119767754Smsmith#define ACPI_REGION_ACTIVATE 0 119867754Smsmith#define ACPI_REGION_DEACTIVATE 1 119967754Smsmith 120067754Smsmithtypedef 120177424SmsmithACPI_STATUS (*ACPI_WALK_CALLBACK) ( 1202207344Sjkim ACPI_HANDLE Object, 1203167802Sjkim UINT32 NestingLevel, 1204167802Sjkim void *Context, 1205167802Sjkim void **ReturnValue); 120667754Smsmith 1207210976Sjkimtypedef 1208210976SjkimUINT32 (*ACPI_INTERFACE_HANDLER) ( 1209210976Sjkim ACPI_STRING InterfaceName, 1210210976Sjkim UINT32 Supported); 121167754Smsmith 1212210976Sjkim 121367754Smsmith/* Interrupt handler return values */ 121467754Smsmith 121591116Smsmith#define ACPI_INTERRUPT_NOT_HANDLED 0x00 121691116Smsmith#define ACPI_INTERRUPT_HANDLED 0x01 121767754Smsmith 1218216471Sjkim/* GPE handler return values */ 1219216471Sjkim 1220216471Sjkim#define ACPI_REENABLE_GPE 0x80 1221216471Sjkim 1222216471Sjkim 1223197104Sjkim/* Length of 32-bit EISAID values when converted back to a string */ 122467754Smsmith 1225197104Sjkim#define ACPI_EISAID_STRING_SIZE 8 /* Includes null terminator */ 1226193267Sjkim 1227197104Sjkim/* Length of UUID (string) values */ 1228197104Sjkim 1229193267Sjkim#define ACPI_UUID_LENGTH 16 1230193267Sjkim 1231306536Sjkim/* Length of 3-byte PCI class code values when converted back to a string */ 123267754Smsmith 1233306536Sjkim#define ACPI_PCICLS_STRING_SIZE 7 /* Includes null terminator */ 1234197104Sjkim 1235306536Sjkim 1236306536Sjkim/* Structures used for device/processor HID, UID, CID */ 1237306536Sjkim 1238241973Sjkimtypedef struct acpi_pnp_device_id 1239117521Snjl{ 1240197104Sjkim UINT32 Length; /* Length of string + null */ 1241197104Sjkim char *String; 124267754Smsmith 1243241973Sjkim} ACPI_PNP_DEVICE_ID; 124467754Smsmith 1245241973Sjkimtypedef struct acpi_pnp_device_id_list 1246117521Snjl{ 1247197104Sjkim UINT32 Count; /* Number of IDs in Ids array */ 1248197104Sjkim UINT32 ListSize; /* Size of list, including ID strings */ 1249241973Sjkim ACPI_PNP_DEVICE_ID Ids[1]; /* ID array */ 1250117521Snjl 1251241973Sjkim} ACPI_PNP_DEVICE_ID_LIST; 1252117521Snjl 1253197104Sjkim/* 1254197104Sjkim * Structure returned from AcpiGetObjectInfo. 1255197104Sjkim * Optimized for both 32- and 64-bit builds 1256197104Sjkim */ 1257197104Sjkimtypedef struct acpi_device_info 1258117521Snjl{ 1259197104Sjkim UINT32 InfoSize; /* Size of info, including ID strings */ 1260197104Sjkim UINT32 Name; /* ACPI object Name */ 1261197104Sjkim ACPI_OBJECT_TYPE Type; /* ACPI object Type */ 1262197104Sjkim UINT8 ParamCount; /* If a method, required parameter count */ 1263306536Sjkim UINT16 Valid; /* Indicates which optional fields are valid */ 1264197104Sjkim UINT8 Flags; /* Miscellaneous info */ 1265197104Sjkim UINT8 HighestDstates[4]; /* _SxD values: 0xFF indicates not valid */ 1266197104Sjkim UINT8 LowestDstates[5]; /* _SxW values: 0xFF indicates not valid */ 1267197104Sjkim UINT32 CurrentStatus; /* _STA value */ 1268202771Sjkim UINT64 Address; /* _ADR value */ 1269241973Sjkim ACPI_PNP_DEVICE_ID HardwareId; /* _HID value */ 1270241973Sjkim ACPI_PNP_DEVICE_ID UniqueId; /* _UID value */ 1271306536Sjkim ACPI_PNP_DEVICE_ID ClassCode; /* _CLS value */ 1272241973Sjkim ACPI_PNP_DEVICE_ID_LIST CompatibleIdList; /* _CID list <must be last> */ 1273117521Snjl 1274197104Sjkim} ACPI_DEVICE_INFO; 1275117521Snjl 1276197104Sjkim/* Values for Flags field above (AcpiGetObjectInfo) */ 1277117521Snjl 1278197104Sjkim#define ACPI_PCI_ROOT_BRIDGE 0x01 1279117521Snjl 1280197104Sjkim/* Flags for Valid field above (AcpiGetObjectInfo) */ 1281117521Snjl 1282306536Sjkim#define ACPI_VALID_STA 0x0001 1283306536Sjkim#define ACPI_VALID_ADR 0x0002 1284306536Sjkim#define ACPI_VALID_HID 0x0004 1285306536Sjkim#define ACPI_VALID_UID 0x0008 1286306536Sjkim#define ACPI_VALID_CID 0x0020 1287306536Sjkim#define ACPI_VALID_CLS 0x0040 1288306536Sjkim#define ACPI_VALID_SXDS 0x0100 1289306536Sjkim#define ACPI_VALID_SXWS 0x0200 1290197104Sjkim 1291306536Sjkim/* Flags for _STA method */ 1292117521Snjl 1293167802Sjkim#define ACPI_STA_DEVICE_PRESENT 0x01 1294167802Sjkim#define ACPI_STA_DEVICE_ENABLED 0x02 1295167802Sjkim#define ACPI_STA_DEVICE_UI 0x04 1296167802Sjkim#define ACPI_STA_DEVICE_FUNCTIONING 0x08 1297167802Sjkim#define ACPI_STA_DEVICE_OK 0x08 /* Synonym */ 1298167802Sjkim#define ACPI_STA_BATTERY_PRESENT 0x10 1299167802Sjkim 1300167802Sjkim 130167754Smsmith/* Context structs for address space handlers */ 130267754Smsmith 1303114237Snjltypedef struct acpi_pci_id 130467754Smsmith{ 1305167802Sjkim UINT16 Segment; 1306167802Sjkim UINT16 Bus; 1307167802Sjkim UINT16 Device; 1308167802Sjkim UINT16 Function; 1309114237Snjl 131080062Smsmith} ACPI_PCI_ID; 131167754Smsmith 1312114237Snjltypedef struct acpi_mem_space_context 131367754Smsmith{ 1314167802Sjkim UINT32 Length; 1315167802Sjkim ACPI_PHYSICAL_ADDRESS Address; 1316167802Sjkim ACPI_PHYSICAL_ADDRESS MappedPhysicalAddress; 1317167802Sjkim UINT8 *MappedLogicalAddress; 1318167802Sjkim ACPI_SIZE MappedLength; 1319114237Snjl 132077424Smsmith} ACPI_MEM_SPACE_CONTEXT; 132167754Smsmith 132267754Smsmith 132367754Smsmith/* 1324193267Sjkim * ACPI_MEMORY_LIST is used only if the ACPICA local cache is enabled 132567754Smsmith */ 1326193267Sjkimtypedef struct acpi_memory_list 1327193267Sjkim{ 1328306536Sjkim const char *ListName; 1329193267Sjkim void *ListHead; 1330193267Sjkim UINT16 ObjectSize; 1331193267Sjkim UINT16 MaxDepth; 1332193267Sjkim UINT16 CurrentDepth; 133367754Smsmith 1334193267Sjkim#ifdef ACPI_DBG_TRACK_ALLOCATIONS 133567754Smsmith 1336193267Sjkim /* Statistics for debug memory tracking only */ 133767754Smsmith 1338193267Sjkim UINT32 TotalAllocated; 1339193267Sjkim UINT32 TotalFreed; 1340193267Sjkim UINT32 MaxOccupied; 1341193267Sjkim UINT32 TotalSize; 1342193267Sjkim UINT32 CurrentTotalSize; 1343193267Sjkim UINT32 Requests; 1344193267Sjkim UINT32 Hits; 1345151937Sjkim#endif 1346151937Sjkim 1347193267Sjkim} ACPI_MEMORY_LIST; 1348167802Sjkim 1349167802Sjkim 1350306536Sjkim/* Definitions of trace event types */ 1351306536Sjkim 1352306536Sjkimtypedef enum 1353306536Sjkim{ 1354306536Sjkim ACPI_TRACE_AML_METHOD, 1355306536Sjkim ACPI_TRACE_AML_OPCODE, 1356306536Sjkim ACPI_TRACE_AML_REGION 1357306536Sjkim 1358306536Sjkim} ACPI_TRACE_EVENT_TYPE; 1359306536Sjkim 1360306536Sjkim 1361253690Sjkim/* Definitions of _OSI support */ 1362253690Sjkim 1363253690Sjkim#define ACPI_VENDOR_STRINGS 0x01 1364253690Sjkim#define ACPI_FEATURE_STRINGS 0x02 1365253690Sjkim#define ACPI_ENABLE_INTERFACES 0x00 1366253690Sjkim#define ACPI_DISABLE_INTERFACES 0x04 1367253690Sjkim 1368253690Sjkim#define ACPI_DISABLE_ALL_VENDOR_STRINGS (ACPI_DISABLE_INTERFACES | ACPI_VENDOR_STRINGS) 1369253690Sjkim#define ACPI_DISABLE_ALL_FEATURE_STRINGS (ACPI_DISABLE_INTERFACES | ACPI_FEATURE_STRINGS) 1370253690Sjkim#define ACPI_DISABLE_ALL_STRINGS (ACPI_DISABLE_INTERFACES | ACPI_VENDOR_STRINGS | ACPI_FEATURE_STRINGS) 1371253690Sjkim#define ACPI_ENABLE_ALL_VENDOR_STRINGS (ACPI_ENABLE_INTERFACES | ACPI_VENDOR_STRINGS) 1372253690Sjkim#define ACPI_ENABLE_ALL_FEATURE_STRINGS (ACPI_ENABLE_INTERFACES | ACPI_FEATURE_STRINGS) 1373253690Sjkim#define ACPI_ENABLE_ALL_STRINGS (ACPI_ENABLE_INTERFACES | ACPI_VENDOR_STRINGS | ACPI_FEATURE_STRINGS) 1374253690Sjkim 1375253690Sjkim#define ACPI_OSI_WIN_2000 0x01 1376253690Sjkim#define ACPI_OSI_WIN_XP 0x02 1377253690Sjkim#define ACPI_OSI_WIN_XP_SP1 0x03 1378253690Sjkim#define ACPI_OSI_WINSRV_2003 0x04 1379253690Sjkim#define ACPI_OSI_WIN_XP_SP2 0x05 1380253690Sjkim#define ACPI_OSI_WINSRV_2003_SP1 0x06 1381253690Sjkim#define ACPI_OSI_WIN_VISTA 0x07 1382253690Sjkim#define ACPI_OSI_WINSRV_2008 0x08 1383253690Sjkim#define ACPI_OSI_WIN_VISTA_SP1 0x09 1384253690Sjkim#define ACPI_OSI_WIN_VISTA_SP2 0x0A 1385253690Sjkim#define ACPI_OSI_WIN_7 0x0B 1386253690Sjkim#define ACPI_OSI_WIN_8 0x0C 1387281687Sjkim#define ACPI_OSI_WIN_10 0x0D 1388253690Sjkim 1389253690Sjkim 1390281075Sdim/* Definitions of file IO */ 1391281075Sdim 1392281075Sdim#define ACPI_FILE_READING 0x01 1393281075Sdim#define ACPI_FILE_WRITING 0x02 1394281075Sdim#define ACPI_FILE_BINARY 0x04 1395281075Sdim 1396281075Sdim#define ACPI_FILE_BEGIN 0x01 1397281075Sdim#define ACPI_FILE_END 0x02 1398281075Sdim 1399281075Sdim 1400281075Sdim/* Definitions of getopt */ 1401281075Sdim 1402281075Sdim#define ACPI_OPT_END -1 1403281075Sdim 1404281075Sdim 140567754Smsmith#endif /* __ACTYPES_H__ */ 1406