[BACK]Return to amltypes.h CVS log [TXT][DIR] Up to [local] / sys / dev / acpi

Annotation of sys/dev/acpi/amltypes.h, Revision 1.1.1.1

1.1       nbrk        1: /* $OpenBSD: amltypes.h,v 1.25 2007/02/06 18:56:31 jordan Exp $ */
                      2: /*
                      3:  * Copyright (c) 2005 Jordan Hargrave <jordan@openbsd.org>
                      4:  *
                      5:  * Permission to use, copy, modify, and distribute this software for any
                      6:  * purpose with or without fee is hereby granted, provided that the above
                      7:  * copyright notice and this permission notice appear in all copies.
                      8:  *
                      9:  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
                     10:  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
                     11:  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
                     12:  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
                     13:  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
                     14:  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
                     15:  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
                     16:  */
                     17:
                     18: #ifndef __DEV_ACPI_AMLTYPES_H__
                     19: #define __DEV_ACPI_AMLTYPES_H__
                     20:
                     21: /* AML Opcodes */
                     22: #define AMLOP_ZERO             0x00
                     23: #define AMLOP_ONE              0x01
                     24: #define AMLOP_ALIAS            0x06
                     25: #define AMLOP_NAME             0x08
                     26: #define AMLOP_BYTEPREFIX       0x0A
                     27: #define AMLOP_WORDPREFIX       0x0B
                     28: #define AMLOP_DWORDPREFIX      0x0C
                     29: #define AMLOP_STRINGPREFIX     0x0D
                     30: #define AMLOP_QWORDPREFIX      0x0E
                     31: #define AMLOP_SCOPE            0x10
                     32: #define AMLOP_BUFFER           0x11
                     33: #define AMLOP_PACKAGE          0x12
                     34: #define AMLOP_VARPACKAGE       0x13
                     35: #define AMLOP_METHOD           0x14
                     36: #define AMLOP_DUALNAMEPREFIX   0x2E
                     37: #define AMLOP_MULTINAMEPREFIX  0x2F
                     38: #define AMLOP_EXTPREFIX                0x5B
                     39: #define AMLOP_MUTEX            0x5B01
                     40: #define AMLOP_EVENT            0x5B02
                     41: #define AMLOP_CONDREFOF                0x5B12
                     42: #define AMLOP_CREATEFIELD      0x5B13
                     43: #define AMLOP_LOADTABLE                0x5B1F
                     44: #define AMLOP_LOAD             0x5B20
                     45: #define AMLOP_STALL            0x5B21
                     46: #define AMLOP_SLEEP            0x5B22
                     47: #define AMLOP_ACQUIRE          0x5B23
                     48: #define AMLOP_SIGNAL           0x5B24
                     49: #define AMLOP_WAIT             0x5B25
                     50: #define AMLOP_RESET            0x5B26
                     51: #define AMLOP_RELEASE          0x5B27
                     52: #define AMLOP_FROMBCD          0x5B28
                     53: #define AMLOP_TOBCD            0x5B29
                     54: #define AMLOP_UNLOAD           0x5B2A
                     55: #define AMLOP_REVISION         0x5B30
                     56: #define AMLOP_DEBUG            0x5B31
                     57: #define AMLOP_FATAL            0x5B32
                     58: #define AMLOP_TIMER            0x5B33
                     59: #define AMLOP_OPREGION         0x5B80
                     60: #define AMLOP_FIELD            0x5B81
                     61: #define AMLOP_DEVICE           0x5B82
                     62: #define AMLOP_PROCESSOR                0x5B83
                     63: #define AMLOP_POWERRSRC                0x5B84
                     64: #define AMLOP_THERMALZONE      0x5B85
                     65: #define AMLOP_INDEXFIELD       0x5B86
                     66: #define AMLOP_BANKFIELD                0x5B87
                     67: #define AMLOP_DATAREGION       0x5B88
                     68: #define AMLOP_ROOTCHAR         0x5C
                     69: #define AMLOP_PARENTPREFIX     0x5E
                     70: #define AMLOP_NAMECHAR         0x5F
                     71: #define AMLOP_LOCAL0           0x60
                     72: #define AMLOP_LOCAL1           0x61
                     73: #define AMLOP_LOCAL2           0x62
                     74: #define AMLOP_LOCAL3           0x63
                     75: #define AMLOP_LOCAL4           0x64
                     76: #define AMLOP_LOCAL5           0x65
                     77: #define AMLOP_LOCAL6           0x66
                     78: #define AMLOP_LOCAL7           0x67
                     79: #define AMLOP_ARG0             0x68
                     80: #define AMLOP_ARG1             0x69
                     81: #define AMLOP_ARG2             0x6A
                     82: #define AMLOP_ARG3             0x6B
                     83: #define AMLOP_ARG4             0x6C
                     84: #define AMLOP_ARG5             0x6D
                     85: #define AMLOP_ARG6             0x6E
                     86: #define AMLOP_STORE            0x70
                     87: #define AMLOP_REFOF            0x71
                     88: #define AMLOP_ADD              0x72
                     89: #define AMLOP_CONCAT           0x73
                     90: #define AMLOP_SUBTRACT         0x74
                     91: #define AMLOP_INCREMENT                0x75
                     92: #define AMLOP_DECREMENT                0x76
                     93: #define AMLOP_MULTIPLY         0x77
                     94: #define AMLOP_DIVIDE           0x78
                     95: #define AMLOP_SHL              0x79
                     96: #define AMLOP_SHR              0x7A
                     97: #define AMLOP_AND              0x7B
                     98: #define AMLOP_NAND             0x7C
                     99: #define AMLOP_OR               0x7D
                    100: #define AMLOP_NOR              0x7E
                    101: #define AMLOP_XOR              0x7F
                    102: #define AMLOP_NOT              0x80
                    103: #define AMLOP_FINDSETLEFTBIT   0x81
                    104: #define AMLOP_FINDSETRIGHTBIT  0x82
                    105: #define AMLOP_DEREFOF          0x83
                    106: #define AMLOP_CONCATRES                0x84
                    107: #define AMLOP_MOD              0x85
                    108: #define AMLOP_NOTIFY           0x86
                    109: #define AMLOP_SIZEOF           0x87
                    110: #define AMLOP_INDEX            0x88
                    111: #define AMLOP_DEREFOF          0x83
                    112: #define AMLOP_MATCH            0x89
                    113: #define AMLOP_CREATEDWORDFIELD 0x8A
                    114: #define AMLOP_CREATEWORDFIELD  0x8B
                    115: #define AMLOP_CREATEBYTEFIELD  0x8C
                    116: #define AMLOP_CREATEBITFIELD   0x8D
                    117: #define AMLOP_OBJECTTYPE       0x8E
                    118: #define AMLOP_CREATEQWORDFIELD 0x8F
                    119: #define AMLOP_LAND             0x90
                    120: #define AMLOP_LOR              0x91
                    121: #define AMLOP_LNOT             0x92
                    122: #define AMLOP_LNOTEQUAL                0x9293
                    123: #define AMLOP_LLESSEQUAL       0x9294
                    124: #define AMLOP_LGREATEREQUAL    0x9295
                    125: #define AMLOP_LEQUAL           0x93
                    126: #define AMLOP_LGREATER         0x94
                    127: #define AMLOP_LLESS            0x95
                    128: #define AMLOP_TOBUFFER         0x96
                    129: #define AMLOP_TODECSTRING      0x97
                    130: #define AMLOP_TOHEXSTRING      0x98
                    131: #define AMLOP_TOINTEGER                0x99
                    132: #define AMLOP_TOSTRING         0x9C
                    133: #define AMLOP_COPYOBJECT       0x9D
                    134: #define AMLOP_MID              0x9E
                    135: #define AMLOP_CONTINUE         0x9F
                    136: #define AMLOP_IF               0xA0
                    137: #define AMLOP_ELSE             0xA1
                    138: #define AMLOP_WHILE            0xA2
                    139: #define AMLOP_NOP              0xA3
                    140: #define AMLOP_RETURN           0xA4
                    141: #define AMLOP_BREAK            0xA5
                    142: #define AMLOP_BREAKPOINT       0xCC
                    143: #define AMLOP_ONES             0xFF
                    144:
                    145: #define AMLOP_FIELDUNIT                0xFE00
                    146: #define AML_ANYINT             0xFF00
                    147:
                    148: /*
                    149:  * Comparison types for Match()
                    150:  *
                    151:  *  true,==,<=,<,>=,>
                    152:  */
                    153: #define AML_MATCH_TR           0
                    154: #define AML_MATCH_EQ           1
                    155: #define AML_MATCH_LE           2
                    156: #define AML_MATCH_LT           3
                    157: #define AML_MATCH_GE           4
                    158: #define AML_MATCH_GT           5
                    159:
                    160: #define AML_STATIC             0x8000
                    161:
                    162: /* Defined types for ObjectType() */
                    163: enum aml_objecttype {
                    164:        AML_OBJTYPE_UNINITIALIZED = 0,
                    165:        AML_OBJTYPE_INTEGER,
                    166:        AML_OBJTYPE_STRING,
                    167:        AML_OBJTYPE_BUFFER,
                    168:        AML_OBJTYPE_PACKAGE,
                    169:        AML_OBJTYPE_FIELDUNIT,
                    170:        AML_OBJTYPE_DEVICE,
                    171:        AML_OBJTYPE_EVENT,
                    172:        AML_OBJTYPE_METHOD,
                    173:        AML_OBJTYPE_MUTEX,
                    174:        AML_OBJTYPE_OPREGION,
                    175:        AML_OBJTYPE_POWERRSRC,
                    176:        AML_OBJTYPE_PROCESSOR,
                    177:        AML_OBJTYPE_THERMZONE,
                    178:        AML_OBJTYPE_BUFFERFIELD,
                    179:        AML_OBJTYPE_DDBHANDLE,
                    180:        AML_OBJTYPE_DEBUGOBJ,
                    181:
                    182:        AML_OBJTYPE_NAMEREF = 0x100,
                    183:        AML_OBJTYPE_OBJREF,
                    184:        AML_OBJTYPE_STATICINT=AML_OBJTYPE_INTEGER|AML_STATIC,
                    185: };
                    186:
                    187: /* AML Opcode Arguments */
                    188: #define AML_ARG_INTEGER                'i'
                    189: #define AML_ARG_BYTE           'b'
                    190: #define AML_ARG_WORD           'w'
                    191: #define AML_ARG_DWORD          'd'
                    192: #define AML_ARG_QWORD          'q'
                    193: #define AML_ARG_IMPBYTE                '!'
                    194: #define AML_ARG_OBJLEN         'p'
                    195: #define AML_ARG_STRING         'a'
                    196: #define AML_ARG_BYTELIST       'B'
                    197: #define AML_ARG_REVISION       'R'
                    198:
                    199: #define AML_ARG_METHOD         'M'
                    200: #define AML_ARG_NAMESTRING     'N'
                    201: #define AML_ARG_NAMEREF                'n'
                    202: #define AML_ARG_FIELDLIST      'F'
                    203: #define AML_ARG_FLAG           'f'
                    204:
                    205: #define AML_ARG_DATAOBJLIST    'O'
                    206: #define AML_ARG_DATAOBJ                'o'
                    207:
                    208: #define AML_ARG_SIMPLENAME     's'
                    209: #define AML_ARG_SUPERNAME      'S'
                    210:
                    211: #define AML_ARG_TERMOBJLIST    'T'
                    212: #define AML_ARG_TERMOBJ                't'
                    213:
                    214: #define AML_METHOD_ARGCOUNT(v)  (((v) >> 0) & 0x7)
                    215: #define AML_METHOD_SERIALIZED(v) (((v) >> 3) & 0x1)
                    216: #define AML_METHOD_SYNCLEVEL(v)         (((v) >> 4) & 0xF)
                    217:
                    218: #define AML_FIELD_ACCESSMASK   0x0F
                    219: #define AML_FIELD_SETATTR(f,t,a) (((f) & 0xF0) | ((t) & 0xF) | ((a)<<8))
                    220: #define AML_FIELD_ACCESS(v)    (((v) >> 0) & 0xF)
                    221: # define AML_FIELD_ANYACC      0x0
                    222: # define AML_FIELD_BYTEACC     0x1
                    223: # define AML_FIELD_WORDACC     0x2
                    224: # define AML_FIELD_DWORDACC    0x3
                    225: # define AML_FIELD_QWORDACC    0x4
                    226: # define AML_FIELD_BUFFERACC   0x5
                    227: #define AML_FIELD_LOCK(v)      (((v) >> 4) & 0x1)
                    228: # define AML_FIELD_LOCK_OFF    0x0
                    229: # define AML_FIELD_LOCK_ON     0x1
                    230: #define AML_FIELD_UPDATE(v)    (((v) >> 5) & 0x3)
                    231: # define AML_FIELD_PRESERVE    0x0
                    232: # define AML_FIELD_WRITEASONES 0x1
                    233: # define AML_FIELD_WRITEASZEROES 0x2
                    234: #define AML_FIELD_ATTR(v)      ((v) >> 8)
                    235: #define AML_FIELD_RESERVED     0x00
                    236: /* XXX fix this name */
                    237: #define AML_FIELD_ATTR__               0x01
                    238:
                    239: struct aml_scope;
                    240: struct aml_node;
                    241:
                    242: /* AML Object Value */
                    243: struct aml_value {
                    244:        int     type;
                    245:        int     length;
                    246:        int     refcnt;
                    247:        int     stack;
                    248:        struct aml_node *node;
                    249:        union {
                    250:                int64_t         vinteger;
                    251:                char            *vstring;
                    252:                u_int8_t        *vbuffer;
                    253:                struct aml_value **vpackage;
                    254:                struct {
                    255:                        u_int8_t        iospace;
                    256:                        u_int64_t       iobase;
                    257:                        u_int32_t       iolen;
                    258:                } vopregion;
                    259:                struct {
                    260:                        int             flags;
                    261:                        u_int8_t        *start;
                    262:                        u_int8_t        *end;
                    263:                        struct aml_value *(*fneval)(struct aml_scope *, struct aml_value *);
                    264:                } vmethod;
                    265:                struct {
                    266:                        u_int16_t        type;
                    267:                        u_int16_t        flags;
                    268:                        u_int32_t        bitpos;
                    269:                        u_int32_t        bitlen;
                    270:                        struct aml_value *ref1;
                    271:                        struct aml_value *ref2;
                    272:                        int              ref3;
                    273:                } vfield;
                    274:                struct {
                    275:                        u_int8_t        proc_id;
                    276:                        u_int32_t       proc_addr;
                    277:                        u_int8_t        proc_len;
                    278:                } vprocessor;
                    279:                struct {
                    280:                        int             index;
                    281:                        struct aml_value *ref;
                    282:                } vobjref;
                    283:                struct {
                    284:                        u_int8_t        pwr_level;
                    285:                        u_int16_t       pwr_order;
                    286:                } vpowerrsrc;
                    287:                struct acpi_mutex       *vmutex;
                    288:        } _;
                    289: };
                    290:
                    291: #define v_nameref              _.vbuffer
                    292: #define v_objref               _.vobjref
                    293: #define v_integer              _.vinteger
                    294: #define v_string               _.vstring
                    295: #define v_buffer               _.vbuffer
                    296: #define v_package              _.vpackage
                    297: #define v_field                        _.vfield
                    298: #define v_opregion             _.vopregion
                    299: #define v_method               _.vmethod
                    300: #define v_processor            _.vprocessor
                    301: #define v_powerrsrc            _.vpowerrsrc
                    302: #define v_mutex                        _.vmutex
                    303:
                    304: #define xaml_intval(v)         ((v)->v_integer)
                    305: #define aml_strlen(v)          ((v)->length)
                    306: #define aml_strval(v)          ((v)->v_string ? (v)->v_string : "bad string")
                    307: #define aml_buflen(v)          ((v)->length)
                    308: #define aml_bufval(v)          ((v)->v_buffer)
                    309: #define aml_pkglen(v)          ((v)->length)
                    310: #define aml_pkgval(v,i)                (&(v)->v_package[(i)])
                    311:
                    312: struct aml_node {
                    313:        struct aml_node *parent;
                    314:        struct aml_node *child;
                    315:        struct aml_node *sibling;
                    316:
                    317:        char            name[5];
                    318:        u_int16_t       opcode;
                    319:        u_int8_t        *start;
                    320:        u_int8_t        *end;
                    321:   //   const char      *name;
                    322:   //   const char      *mnem;
                    323:
                    324:        struct aml_value *value;
                    325:
                    326:        int             depth;
                    327: };
                    328:
                    329: #define AML_FALSE              (0)
                    330: #define AML_TRUE               (1)
                    331:
                    332: #define aml_bitmask(n)         (1L << ((n) & 0x7))
                    333: #define aml_bitpos(n)          ((n)&0x7)
                    334: #define aml_bytepos(n)         ((n)>>3)
                    335: #define aml_bytelen(n)         (((n)+7)>>3)
                    336: #define aml_bytealigned(x)     !((x)&0x7)
                    337:
                    338: #endif /* __DEV_ACPI_AMLTYPES_H__ */

CVSweb