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

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

1.1       nbrk        1: /* $OpenBSD: dsdt.h,v 1.28 2007/04/11 02:51:11 jordan Exp $ */
                      2: /*
                      3:  * Copyright (c) 2005 Marco Peereboom <marco@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_DSDT_H__
                     19: #define __DEV_ACPI_DSDT_H__
                     20:
                     21: struct aml_vallist {
                     22:        struct aml_value *obj;
                     23:        int nobj;
                     24:        struct aml_vallist *next;
                     25: };
                     26:
                     27: struct aml_scope {
                     28:        struct acpi_softc  *sc;
                     29:        uint8_t            *pos;
                     30:        uint8_t            *end;
                     31:        struct aml_node    *node;
                     32:        struct aml_vallist *tmpvals;
                     33:        struct aml_scope   *parent;
                     34:        struct aml_value   *locals;
                     35:        struct aml_value   *args;
                     36:        int                 nargs;
                     37: };
                     38:
                     39:
                     40: struct aml_opcode {
                     41:        u_int32_t               opcode;
                     42:        const char              *mnem;
                     43:        const char              *args;
                     44:        struct aml_value        *(*handler)(struct aml_scope *, int,
                     45:                                    struct aml_value*);
                     46: };
                     47:
                     48: const char             *aml_eisaid(u_int32_t);
                     49: const char              *aml_args(int);
                     50: const char             *aml_mnem(int, uint8_t *);
                     51: int64_t                        aml_val2int(struct aml_value *);
                     52: struct aml_node                *aml_searchname(struct aml_node *, const void *);
                     53: struct aml_node         *aml_createname(struct aml_node *, const void *,
                     54:                            struct aml_value *);
                     55:
                     56: struct aml_value       *aml_allocint(uint64_t);
                     57: struct aml_value       *aml_allocstr(const char *);
                     58: struct aml_value       *aml_allocvalue(int, int64_t, const void *);
                     59: void                   aml_freevalue(struct aml_value *);
                     60: void                   aml_notify(struct aml_node *, int);
                     61: void                   aml_notify_dev(const char *, int);
                     62: void                   aml_showvalue(struct aml_value *, int);
                     63: void                   aml_walkroot(void);
                     64: void                   aml_walktree(struct aml_node *);
                     65:
                     66: int                    aml_find_node(struct aml_node *, const char *,
                     67:                            void (*)(struct aml_node *, void *), void *);
                     68: int                    acpi_parse_aml(struct acpi_softc *, u_int8_t *,
                     69:                            u_int32_t);
                     70: int                    aml_eval_object(struct acpi_softc *, struct aml_node *,
                     71:                            struct aml_value *, int, struct aml_value *);
                     72: void                   aml_register_notify(struct aml_node *, const char *,
                     73:                            int (*)(struct aml_node *, int, void *), void *,
                     74:                            int);
                     75:
                     76: u_int64_t              aml_getpciaddr(struct acpi_softc *, struct aml_node *);
                     77:
                     78: int                    aml_evalnode(struct acpi_softc *, struct aml_node *,
                     79:                            int , struct aml_value *, struct aml_value *);
                     80: int                    aml_evalname(struct acpi_softc *, struct aml_node *,
                     81:                            const char *, int, struct aml_value *,
                     82:                            struct aml_value *);
                     83:
                     84: void                   aml_fixup_dsdt(u_int8_t *, u_int8_t *, int);
                     85: void                   aml_create_defaultobjects(void);
                     86:
                     87: int                    acpi_mutex_acquire(struct aml_value *, int);
                     88: void                   acpi_mutex_release(struct aml_value *);
                     89:
                     90: const char             *aml_nodename(struct aml_node *);
                     91:
                     92: #define SR_IRQ                  0x04
                     93: #define SR_DMA                  0x05
                     94: #define SR_STARTDEP             0x06
                     95: #define SR_ENDDEP               0x07
                     96: #define SR_IOPORT               0x08
                     97: #define SR_FIXEDPORT            0x09
                     98: #define SR_ENDTAG               0x0F
                     99:
                    100: #define LR_24BIT                0x81
                    101: #define LR_GENREGISTER          0x82
                    102: #define LR_32BIT                0x85
                    103: #define LR_32BITFIXED           0x86
                    104: #define LR_DWORD                0x87
                    105: #define LR_WORD                 0x88
                    106: #define LR_EXTIRQ               0x89
                    107: #define LR_QWORD                0x8A
                    108:
                    109: #define __amlflagbit(v,s,l)
                    110: union acpi_resource {
                    111:        struct {
                    112:                uint8_t  typecode;
                    113:                uint16_t length;
                    114:        }  __packed hdr;
                    115:
                    116:        /* Small resource structures
                    117:         * format of typecode is: tttttlll, t = type, l = length
                    118:         */
                    119:        struct {
                    120:                uint8_t  typecode;
                    121:                uint16_t irq_mask;
                    122:                uint8_t  irq_flags;
                    123:        }  __packed sr_irq;
                    124:        struct {
                    125:                uint8_t  typecode;
                    126:                uint8_t  channel;
                    127:                uint8_t  flags;
                    128:        }  __packed sr_dma;
                    129:        struct {
                    130:                uint8_t  typecode;
                    131:                uint8_t  flags;
                    132:                uint16_t _min;
                    133:                uint16_t _max;
                    134:                uint8_t  _aln;
                    135:                uint8_t  _len;
                    136:        }  __packed sr_ioport;
                    137:        struct {
                    138:                uint8_t  typecode;
                    139:                uint16_t _bas;
                    140:                uint8_t  _len;
                    141:        }  __packed sr_fioport;
                    142:
                    143:        /* Large resource structures */
                    144:        struct {
                    145:                uint8_t  typecode;
                    146:                uint16_t length;
                    147:                uint8_t  _info;
                    148:                uint16_t _min;
                    149:                uint16_t _max;
                    150:                uint16_t _aln;
                    151:                uint16_t _len;
                    152:        }  __packed lr_m24;
                    153:        struct {
                    154:                uint8_t  typecode;
                    155:                uint16_t length;
                    156:                uint8_t  _info;
                    157:                uint32_t _min;
                    158:                uint32_t _max;
                    159:                uint32_t _aln;
                    160:                uint32_t _len;
                    161:        }  __packed lr_m32;
                    162:        struct {
                    163:                uint8_t  typecode;
                    164:                uint16_t length;
                    165:                uint8_t  flags;
                    166:                uint8_t  irq_count;
                    167:                uint32_t irq[1];
                    168:        } __packed lr_extirq;
                    169:        struct {
                    170:                uint8_t         typecode;
                    171:                uint16_t        length;
                    172:                uint8_t         type;
                    173:                uint8_t         flags;
                    174:                uint8_t         tflags;
                    175:                uint16_t        _gra;
                    176:                uint16_t        _min;
                    177:                uint16_t        _max;
                    178:                uint16_t        _tra;
                    179:                uint16_t        _len;
                    180:                uint8_t         src_index;
                    181:                char            src[1];
                    182:        } __packed lr_word;
                    183:        struct {
                    184:                uint8_t         typecode;
                    185:                uint16_t        length;
                    186:                uint8_t         type;
                    187:                uint8_t         flags;
                    188:                uint8_t         tflags;
                    189:                uint32_t        _gra;
                    190:                uint32_t        _min;
                    191:                uint32_t        _max;
                    192:                uint32_t        _tra;
                    193:                uint32_t        _len;
                    194:                uint8_t         src_index;
                    195:                char            src[1];
                    196:        } __packed lr_dword;
                    197:        struct {
                    198:                uint8_t         typecode;
                    199:                uint16_t        length;
                    200:                uint8_t         type;
                    201:                uint8_t         flags;
                    202:                uint8_t         tflags;
                    203:                uint64_t        _gra;
                    204:                uint64_t        _min;
                    205:                uint64_t        _max;
                    206:                uint64_t        _tra;
                    207:                uint64_t        _len;
                    208:                uint8_t         src_index;
                    209:                char            src[1];
                    210:        } __packed lr_qword;
                    211:        uint8_t          pad[64];
                    212: } __packed;
                    213:
                    214: #define AML_CRSTYPE(x) ((x)->hdr.typecode & 0x80 ? \
                    215:                            (x)->hdr.typecode : (x)->hdr.typecode >> 3)
                    216: #define AML_CRSLEN(x)  ((x)->hdr.typecode & 0x80 ? \
                    217:                            3+(x)->hdr.length : 1+((x)->hdr.typecode & 0x7))
                    218:
                    219: int                    aml_print_resource(union acpi_resource *, void *);
                    220: int                    aml_parse_resource(int, uint8_t *,
                    221:                            int (*)(union acpi_resource *, void *), void *);
                    222:
                    223: #define ACPI_E_NOERROR   0x00
                    224: #define ACPI_E_BADVALUE  0x01
                    225:
                    226: #define AML_MAX_ARG     7
                    227: #define AML_MAX_LOCAL   8
                    228:
                    229: /* XXX: endian macros */
                    230: #define aml_letohost16(x) letoh16(x)
                    231: #define aml_letohost32(x) letoh32(x)
                    232: #define aml_letohost64(x) letoh64(x)
                    233:
                    234: #define AML_WALK_PRE 0x00
                    235: #define AML_WALK_POST 0x01
                    236:
                    237: void                   aml_walknodes(struct aml_node *, int,
                    238:                            int (*)(struct aml_node *, void *), void *);
                    239:
                    240: void                   aml_postparse(void);
                    241: void                   acpi_poll_notify(void);
                    242:
                    243: void                   aml_hashopcodes(void);
                    244:
                    245: void   aml_foreachpkg(struct aml_value *, int,
                    246:            void (*fn)(struct aml_value *, void *), void *);
                    247:
                    248: #endif /* __DEV_ACPI_DSDT_H__ */

CVSweb