288 lines
9.9 KiB
C
288 lines
9.9 KiB
C
/*** aml.h - AML Definitions
|
|
*
|
|
* Copyright (c) 1996,1997 Microsoft Corporation
|
|
* Author: Michael Tsang (MikeTs)
|
|
* Created 11/06/96
|
|
*
|
|
* MODIFICATION HISTORY
|
|
*/
|
|
|
|
#ifndef _AML_H
|
|
#define _AML_H
|
|
|
|
/*** Macros
|
|
*/
|
|
|
|
#define EXOP(op) (((op) << 8) | OP_EXT_PREFIX)
|
|
|
|
/*** Opcode values
|
|
*/
|
|
|
|
#define OP_NONE 0xffffffff //not a valid opcode
|
|
|
|
#define OP_ZERO 0x00
|
|
#define OP_ONE 0x01
|
|
#define OP_ALIAS 0x06
|
|
#define OP_NAME 0x08
|
|
#define OP_BYTE 0x0a
|
|
#define OP_WORD 0x0b
|
|
#define OP_DWORD 0x0c
|
|
#define OP_STRING 0x0d
|
|
#define OP_SCOPE 0x10
|
|
#define OP_BUFFER 0x11
|
|
#define OP_PACKAGE 0x12
|
|
#define OP_METHOD 0x14
|
|
#define OP_DUAL_NAME_PREFIX 0x2e // '.'
|
|
#define OP_MULTI_NAME_PREFIX 0x2f // '/'
|
|
#define OP_EXT_PREFIX 0x5b // '['
|
|
#define OP_ROOT_PREFIX 0x5c // '\'
|
|
#define OP_PARENT_PREFIX 0x5e // '^'
|
|
#define OP_LOCAL0 0x60 // '`'
|
|
#define OP_LOCAL1 0x61 // 'a'
|
|
#define OP_LOCAL2 0x62 // 'b'
|
|
#define OP_LOCAL3 0x63 // 'c'
|
|
#define OP_LOCAL4 0x64 // 'd'
|
|
#define OP_LOCAL5 0x65 // 'e'
|
|
#define OP_LOCAL6 0x66 // 'f'
|
|
#define OP_LOCAL7 0x67 // 'g'
|
|
#define OP_ARG0 0x68 // 'h'
|
|
#define OP_ARG1 0x69 // 'i'
|
|
#define OP_ARG2 0x6a // 'j'
|
|
#define OP_ARG3 0x6b // 'k'
|
|
#define OP_ARG4 0x6c // 'l'
|
|
#define OP_ARG5 0x6d // 'm'
|
|
#define OP_ARG6 0x6e // 'n'
|
|
#define OP_STORE 0x70 // 'p'
|
|
#define OP_REFOF 0x71
|
|
#define OP_ADD 0x72
|
|
#define OP_CONCAT 0x73
|
|
#define OP_SUBTRACT 0x74
|
|
#define OP_INCREMENT 0x75
|
|
#define OP_DECREMENT 0x76
|
|
#define OP_MULTIPLY 0x77
|
|
#define OP_DIVIDE 0x78
|
|
#define OP_SHIFTL 0x79
|
|
#define OP_SHIFTR 0x7a
|
|
#define OP_AND 0x7b
|
|
#define OP_NAND 0x7c
|
|
#define OP_OR 0x7d
|
|
#define OP_NOR 0x7e
|
|
#define OP_XOR 0x7f
|
|
#define OP_NOT 0x80
|
|
#define OP_FINDSETLBIT 0x81
|
|
#define OP_FINDSETRBIT 0x82
|
|
#define OP_DEREFOF 0x83
|
|
#define OP_NOTIFY 0x86
|
|
#define OP_SIZEOF 0x87
|
|
#define OP_INDEX 0x88
|
|
#define OP_MATCH 0x89
|
|
#define OP_DWORDFIELD 0x8a
|
|
#define OP_WORDFIELD 0x8b
|
|
#define OP_BYTEFIELD 0x8c
|
|
#define OP_BITFIELD 0x8d
|
|
#define OP_OBJTYPE 0x8e
|
|
#define OP_LAND 0x90
|
|
#define OP_LOR 0x91
|
|
#define OP_LNOT 0x92
|
|
#define OP_LNOTEQ 0x9392
|
|
#define OP_LLEQ 0x9492
|
|
#define OP_LGEQ 0x9592
|
|
#define OP_LEQ 0x93
|
|
#define OP_LG 0x94
|
|
#define OP_LL 0x95
|
|
#define OP_IF 0xa0
|
|
#define OP_ELSE 0xa1
|
|
#define OP_WHILE 0xa2
|
|
#define OP_NOP 0xa3
|
|
#define OP_RETURN 0xa4
|
|
#define OP_BREAK 0xa5
|
|
#define OP_OSI 0xca
|
|
#define OP_BREAKPOINT 0xcc
|
|
#define OP_ONES 0xff
|
|
|
|
#define EXOP_MUTEX 0x01
|
|
#define EXOP_EVENT 0x02
|
|
#define EXOP_CONDREFOF 0x12
|
|
#define EXOP_CREATEFIELD 0x13
|
|
#define EXOP_LOAD 0x20
|
|
#define EXOP_STALL 0x21
|
|
#define EXOP_SLEEP 0x22
|
|
#define EXOP_ACQUIRE 0x23
|
|
#define EXOP_SIGNAL 0x24
|
|
#define EXOP_WAIT 0x25
|
|
#define EXOP_RESET 0x26
|
|
#define EXOP_RELEASE 0x27
|
|
#define EXOP_FROMBCD 0x28
|
|
#define EXOP_TOBCD 0x29
|
|
#define EXOP_UNLOAD 0x2a
|
|
#define EXOP_REVISION 0x30
|
|
#define EXOP_DEBUG 0x31
|
|
#define EXOP_FATAL 0x32
|
|
#define EXOP_OPREGION 0x80
|
|
#define EXOP_FIELD 0x81
|
|
#define EXOP_DEVICE 0x82
|
|
#define EXOP_PROCESSOR 0x83
|
|
#define EXOP_POWERRES 0x84
|
|
#define EXOP_THERMALZONE 0x85
|
|
#define EXOP_IDXFIELD 0x86
|
|
#define EXOP_BANKFIELD 0x87
|
|
|
|
#define OP_MUTEX EXOP(EXOP_MUTEX)
|
|
#define OP_EVENT EXOP(EXOP_EVENT)
|
|
#define OP_CONDREFOF EXOP(EXOP_CONDREFOF)
|
|
#define OP_CREATEFIELD EXOP(EXOP_CREATEFIELD)
|
|
#define OP_LOAD EXOP(EXOP_LOAD)
|
|
#define OP_STALL EXOP(EXOP_STALL)
|
|
#define OP_SLEEP EXOP(EXOP_SLEEP)
|
|
#define OP_ACQUIRE EXOP(EXOP_ACQUIRE)
|
|
#define OP_SIGNAL EXOP(EXOP_SIGNAL)
|
|
#define OP_WAIT EXOP(EXOP_WAIT)
|
|
#define OP_RESET EXOP(EXOP_RESET)
|
|
#define OP_RELEASE EXOP(EXOP_RELEASE)
|
|
#define OP_FROMBCD EXOP(EXOP_FROMBCD)
|
|
#define OP_TOBCD EXOP(EXOP_TOBCD)
|
|
#define OP_UNLOAD EXOP(EXOP_UNLOAD)
|
|
#define OP_REVISION EXOP(EXOP_REVISION)
|
|
#define OP_DEBUG EXOP(EXOP_DEBUG)
|
|
#define OP_FATAL EXOP(EXOP_FATAL)
|
|
#define OP_OPREGION EXOP(EXOP_OPREGION)
|
|
#define OP_FIELD EXOP(EXOP_FIELD)
|
|
#define OP_DEVICE EXOP(EXOP_DEVICE)
|
|
#define OP_PROCESSOR EXOP(EXOP_PROCESSOR)
|
|
#define OP_POWERRES EXOP(EXOP_POWERRES)
|
|
#define OP_THERMALZONE EXOP(EXOP_THERMALZONE)
|
|
#define OP_IDXFIELD EXOP(EXOP_IDXFIELD)
|
|
#define OP_BANKFIELD EXOP(EXOP_BANKFIELD)
|
|
|
|
/*** Field flags
|
|
*/
|
|
|
|
#define ACCTYPE_MASK 0x0f
|
|
#define ACCTYPE_ANY 0x00 //AnyAcc
|
|
#define ACCTYPE_BYTE 0x01 //ByteAcc
|
|
#define ACCTYPE_WORD 0x02 //WordAcc
|
|
#define ACCTYPE_DWORD 0x03 //DWordAcc
|
|
#define ACCTYPE_QWORD 0x04 //QWordAcc
|
|
#define ACCTYPE_BUFFER 0x05 //BufferAcc
|
|
#define LOCKRULE_MASK 0x10
|
|
#define LOCKRULE_NOLOCK 0x00 //NoLock
|
|
#define LOCKRULE_LOCK 0x10 //Lock
|
|
#define UPDATERULE_MASK 0x60
|
|
#define UPDATERULE_PRESERVE 0x00 //Preserve
|
|
#define UPDATERULE_WRITEASONES 0x20 //WriteAsOnes
|
|
#define UPDATERULE_WRITEASZEROS 0x40 //WriteAsZeros
|
|
#define ACCATTRIB_MASK 0xff00
|
|
|
|
//
|
|
// Returns 1, 2 or 4 for BYTE, WORD or DWORD respectively and returns 1 for
|
|
// any other sizes.
|
|
//
|
|
#define ACCSIZE(f) (((((f) & ACCTYPE_MASK) >= ACCTYPE_BYTE) && \
|
|
(((f) & ACCTYPE_MASK) <= ACCTYPE_DWORD))? \
|
|
(1 << (((f) & ACCTYPE_MASK) - 1)): 1)
|
|
|
|
/*** Operation region space
|
|
*/
|
|
|
|
#define REGSPACE_MEM 0 //SystemMemory
|
|
#define REGSPACE_IO 1 //SystemIO
|
|
#define REGSPACE_PCICFG 2 //PCI_Config
|
|
#define REGSPACE_EC 3 //EmbeddedControl
|
|
#define REGSPACE_SMB 4 //SMBus
|
|
#define REGSPACE_CMOSCFG 5 //Cmos_Config
|
|
#define REGSPACE_PCIBARTARGET 6 //PCIBARTarget
|
|
|
|
|
|
/*** Method flags
|
|
*/
|
|
|
|
#define METHOD_NUMARG_MASK 0x07
|
|
#define METHOD_SYNCMASK 0x08
|
|
#define METHOD_NOTSERIALIZED 0x00
|
|
#define METHOD_SERIALIZED 0x08
|
|
|
|
/*** Match operation values
|
|
*/
|
|
|
|
#define MTR 0
|
|
#define MEQ 1
|
|
#define MLE 2
|
|
#define MLT 3
|
|
#define MGE 4
|
|
#define MGT 5
|
|
|
|
/*** IRQ Flags for short descriptor
|
|
*/
|
|
|
|
#define _HE 0x01 //ActiveHigh, EdgeTrigger
|
|
#define _LL 0x08 //ActiveLow, LevelTrigger
|
|
#define _SHR 0x10 //Shared
|
|
#define _EXC 0x00 //Exclusive
|
|
|
|
/*** IRQ Flags for long descriptor
|
|
*/
|
|
|
|
#define $EDG 0x02 //EdgeTrigger
|
|
#define $LVL 0x00 //LevelTrigger
|
|
#define $LOW 0x04 //ActiveLow
|
|
#define $HGH 0x00 //ActiveHigh
|
|
#define $SHR 0x08 //Shared
|
|
#define $EXC 0x00 //Exclusive
|
|
|
|
/*** DMA Flags
|
|
*/
|
|
|
|
#define X8 0x00 //Transfer8
|
|
#define X816 0x01 //Transfer8_16
|
|
#define X16 0x02 //Transfer16
|
|
#define NOBM 0x00 //NotBusMaster
|
|
#define BM 0x04 //BusMaster
|
|
#define COMP 0x00 //Compatibility
|
|
#define TYPA 0x20 //TypeA
|
|
#define TYPB 0x40 //TypeB
|
|
#define TYPF 0x60 //TypeF
|
|
|
|
/*** IO Flags
|
|
*/
|
|
|
|
#define DC16 0x01 //Decode16
|
|
#define DC10 0x00 //Decode10
|
|
|
|
/*** Memory Flags
|
|
*/
|
|
|
|
#define _RW 0x01 //Read/Write
|
|
#define _ROM 0x00 //Read only
|
|
|
|
/*** Address Space Descriptor General Flags
|
|
*/
|
|
|
|
#define RCS 0x01 //Resource Consumer
|
|
#define RPD 0x00 //Resource Producer
|
|
#define BSD 0x02 //Bridge Subtractive Decode
|
|
#define BPD 0x00 //Bridge Positive Decode
|
|
#define MIF 0x04 //Min address is fixed
|
|
#define NMIF 0x00 //Min address is not fixed
|
|
#define MAF 0x08 //Max address is fixed
|
|
#define NMAF 0x00 //Max address is not fixed
|
|
|
|
/*** Memory Address Space Flags
|
|
*/
|
|
|
|
#define CACH 0x02 //Cacheable
|
|
#define WRCB 0x04 //WriteCombining
|
|
#define PREF 0x06 //Prefetchable
|
|
#define NCAC 0x00 //Non-Cacheable
|
|
|
|
/*** IO Address Space Flags
|
|
*/
|
|
|
|
#define ISA 0x02 //ISAOnly ranges
|
|
#define NISA 0x01 //NonISAOnly ranges
|
|
#define ERNG 0x03 //Entire range
|
|
|
|
#define MAX_ARGS 7
|
|
#define MAX_NSPATH_LEN 1275 //approx. 255*4 + 255 (255 NameSegs)
|
|
|
|
#endif //ifndef _AML_H
|