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

Annotation of sys/dev/acpi/acpivar.h, Revision 1.1

1.1     ! nbrk        1: /*     $OpenBSD: acpivar.h,v 1.36 2007/05/31 17:49:16 gwk Exp $        */
        !             2: /*
        !             3:  * Copyright (c) 2005 Thorsten Lockert <tholo@sigmasoft.com>
        !             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_ACPIVAR_H_
        !            19: #define _DEV_ACPI_ACPIVAR_H_
        !            20:
        !            21: #include <sys/timeout.h>
        !            22: #include <sys/rwlock.h>
        !            23:
        !            24: /* #define ACPI_DEBUG */
        !            25: #ifdef ACPI_DEBUG
        !            26: extern int acpi_debug;
        !            27: #define dprintf(x...)    do { if (acpi_debug) printf(x); } while (0)
        !            28: #define dnprintf(n,x...)  do { if (acpi_debug > (n)) printf(x); } while (0)
        !            29: #else
        !            30: #define dprintf(x...)
        !            31: #define dnprintf(n,x...)
        !            32: #endif
        !            33:
        !            34: extern int acpi_hasprocfvs;
        !            35:
        !            36: struct klist;
        !            37: struct acpiec_softc;
        !            38:
        !            39: struct acpi_attach_args {
        !            40:        char            *aaa_name;
        !            41:        bus_space_tag_t  aaa_iot;
        !            42:        bus_space_tag_t  aaa_memt;
        !            43:        void            *aaa_table;
        !            44:        paddr_t          aaa_pbase; /* Physical base address of ACPI tables */
        !            45:        struct aml_node *aaa_node;
        !            46:        const char      *aaa_dev;
        !            47: };
        !            48:
        !            49: struct acpi_mem_map {
        !            50:        vaddr_t          baseva;
        !            51:        u_int8_t        *va;
        !            52:        size_t           vsize;
        !            53:        paddr_t          pa;
        !            54: };
        !            55:
        !            56: struct acpi_q {
        !            57:        SIMPLEQ_ENTRY(acpi_q)    q_next;
        !            58:        void                    *q_table;
        !            59:        u_int8_t                 q_data[0];
        !            60: };
        !            61:
        !            62: typedef SIMPLEQ_HEAD(, acpi_q) acpi_qhead_t;
        !            63:
        !            64: #define ACPIREG_PM1A_STS    0x00
        !            65: #define ACPIREG_PM1A_EN            0x01
        !            66: #define ACPIREG_PM1A_CNT    0x02
        !            67: #define ACPIREG_PM1B_STS    0x03
        !            68: #define ACPIREG_PM1B_EN            0x04
        !            69: #define ACPIREG_PM1B_CNT    0x05
        !            70: #define ACPIREG_PM2_CNT            0x06
        !            71: #define ACPIREG_PM_TMR     0x07
        !            72: #define ACPIREG_GPE0_STS    0x08
        !            73: #define ACPIREG_GPE0_EN            0x09
        !            74: #define ACPIREG_GPE1_STS    0x0A
        !            75: #define ACPIREG_GPE1_EN            0x0B
        !            76: #define ACPIREG_SMICMD     0x0C
        !            77: #define ACPIREG_MAXREG     0x0D
        !            78:
        !            79: /* Special registers */
        !            80: #define ACPIREG_PM1_STS            0x0E
        !            81: #define ACPIREG_PM1_EN     0x0F
        !            82: #define ACPIREG_PM1_CNT            0x10
        !            83: #define ACPIREG_GPE_STS     0x11
        !            84: #define ACPIREG_GPE_EN      0x12
        !            85:
        !            86: struct acpi_parsestate
        !            87: {
        !            88:        u_int8_t           *start;
        !            89:        u_int8_t           *end;
        !            90:        u_int8_t           *pos;
        !            91: };
        !            92:
        !            93: struct acpi_reg_map {
        !            94:        bus_space_handle_t  ioh;
        !            95:        int                 addr;
        !            96:        int                 size;
        !            97:        const char         *name;
        !            98: };
        !            99:
        !           100: struct acpi_thread {
        !           101:        struct acpi_softc   *sc;
        !           102:        volatile int        running;
        !           103: };
        !           104:
        !           105: struct acpi_mutex {
        !           106:        struct rwlock           amt_lock;
        !           107: #define ACPI_MTX_MAXNAME       5
        !           108:        char                    amt_name[ACPI_MTX_MAXNAME + 3]; /* only 4 used */
        !           109:        int                     amt_ref_count;
        !           110:        int                     amt_timeout;
        !           111:        int                     amt_synclevel;
        !           112: };
        !           113:
        !           114: struct gpe_block {
        !           115:        int  (*handler)(struct acpi_softc *, int, void *);
        !           116:        void *arg;
        !           117:        int   active;
        !           118: };
        !           119:
        !           120: struct acpi_ac {
        !           121:        struct acpiac_softc     *aac_softc;
        !           122:        SLIST_ENTRY(acpi_ac)    aac_link;
        !           123: };
        !           124:
        !           125: SLIST_HEAD(acpi_ac_head, acpi_ac);
        !           126:
        !           127: struct acpi_bat {
        !           128:        struct acpibat_softc    *aba_softc;
        !           129:        SLIST_ENTRY(acpi_bat)   aba_link;
        !           130: };
        !           131:
        !           132: SLIST_HEAD(acpi_bat_head, acpi_bat);
        !           133:
        !           134: struct acpi_softc {
        !           135:        struct device           sc_dev;
        !           136:
        !           137:        bus_space_tag_t         sc_iot;
        !           138:        bus_space_tag_t         sc_memt;
        !           139: #if 0
        !           140:        bus_space_tag_t         sc_pcit;
        !           141:        bus_space_tag_t         sc_smbust;
        !           142: #endif
        !           143:
        !           144:        /*
        !           145:         * First-level ACPI tables
        !           146:         */
        !           147:        struct acpi_fadt        *sc_fadt;
        !           148:        acpi_qhead_t            sc_tables;
        !           149:
        !           150:        /*
        !           151:         * Second-level information from FADT
        !           152:         */
        !           153:        struct acpi_facs        *sc_facs;       /* Shared with firmware! */
        !           154:
        !           155:        struct klist            *sc_note;
        !           156:        struct acpi_reg_map     sc_pmregs[ACPIREG_MAXREG];
        !           157:        bus_space_handle_t      sc_ioh_pm1a_evt;
        !           158:
        !           159:        void                    *sc_interrupt;
        !           160: #ifdef __HAVE_GENERIC_SOFT_INTERRUPTS
        !           161:        void                    *sc_softih;
        !           162: #else
        !           163:        struct timeout          sc_timeout;
        !           164: #endif
        !           165:
        !           166:        int                     sc_powerbtn;
        !           167:        int                     sc_sleepbtn;
        !           168:
        !           169:        struct {
        !           170:                int slp_typa;
        !           171:                int slp_typb;
        !           172:        }                       sc_sleeptype[6];
        !           173:        int                     sc_maxgpe;
        !           174:         int                     sc_lastgpe;
        !           175:
        !           176:        struct gpe_block       *gpe_table;
        !           177:
        !           178:        int                     sc_wakeup;
        !           179:        u_int32_t               sc_gpe_sts;
        !           180:        u_int32_t               sc_gpe_en;
        !           181:        struct acpi_thread      *sc_thread;
        !           182:
        !           183:        struct aml_node         *sc_tts;
        !           184:        struct aml_node         *sc_pts;
        !           185:        struct aml_node         *sc_bfs;
        !           186:        struct aml_node         *sc_gts;
        !           187:        struct aml_node         *sc_wak;
        !           188:        int                     sc_state;
        !           189:        struct acpiec_softc     *sc_ec;         /* XXX assume single EC */
        !           190:
        !           191:        struct acpi_ac_head     sc_ac;
        !           192:        struct acpi_bat_head    sc_bat;
        !           193:
        !           194:        struct timeout          sc_dev_timeout;
        !           195:        int                     sc_poll;
        !           196: };
        !           197:
        !           198: #define GPE_NONE  0x00
        !           199: #define GPE_LEVEL 0x01
        !           200: #define GPE_EDGE  0x02
        !           201:
        !           202: struct acpi_table {
        !           203:        int     offset;
        !           204:        size_t  size;
        !           205:        void    *table;
        !           206: };
        !           207:
        !           208: #define        ACPI_IOC_GETFACS        _IOR('A', 0, struct acpi_facs)
        !           209: #define        ACPI_IOC_GETTABLE       _IOWR('A', 1, struct acpi_table)
        !           210: #define ACPI_IOC_SETSLEEPSTATE _IOW('A', 2, int)
        !           211:
        !           212: #define        ACPI_EV_PWRBTN          0x0001  /* Power button was pushed */
        !           213: #define        ACPI_EV_SLPBTN          0x0002  /* Sleep button was pushed */
        !           214:
        !           215: #define        ACPI_EVENT_MASK         0x0003
        !           216:
        !           217: #define        ACPI_EVENT_COMPOSE(t,i) (((i) & 0x7fff) << 16 | ((t) & ACPI_EVENT_MASK))
        !           218: #define        ACPI_EVENT_TYPE(e)      ((e) & ACPI_EVENT_MASK)
        !           219: #define        ACPI_EVENT_INDEX(e)     ((e) >> 16)
        !           220:
        !           221: #if defined(_KERNEL)
        !           222: struct   acpi_gas;
        !           223: int     acpi_map_address(struct acpi_softc *, struct acpi_gas *, bus_addr_t, bus_size_t,
        !           224:                          bus_space_handle_t *, bus_space_tag_t *);
        !           225:
        !           226: int     acpi_map(paddr_t, size_t, struct acpi_mem_map *);
        !           227: void    acpi_unmap(struct acpi_mem_map *);
        !           228: int     acpi_probe(struct device *, struct cfdata *, struct acpi_attach_args *);
        !           229: u_int   acpi_checksum(const void *, size_t);
        !           230: void    acpi_attach_machdep(struct acpi_softc *);
        !           231: int     acpi_interrupt(void *);
        !           232: void    acpi_enter_sleep_state(struct acpi_softc *, int);
        !           233: void    acpi_powerdown(void);
        !           234: void    acpi_resume(struct acpi_softc *);
        !           235:
        !           236: #define ACPI_IOREAD 0
        !           237: #define ACPI_IOWRITE 1
        !           238:
        !           239: void acpi_delay(struct acpi_softc *, int64_t);
        !           240: int acpi_gasio(struct acpi_softc *, int, int, uint64_t, int, int, void *);
        !           241:
        !           242: int     acpi_set_gpehandler(struct acpi_softc *, int, int (*)(struct acpi_softc *, int, void *), void *, const char *);
        !           243: void   acpi_enable_gpe(struct acpi_softc *, u_int32_t);
        !           244:
        !           245: int    acpiec_intr(struct acpiec_softc *);
        !           246: void   acpiec_read(struct acpiec_softc *, u_int8_t, int, u_int8_t *);
        !           247: void   acpiec_write(struct acpiec_softc *, u_int8_t, int, u_int8_t *);
        !           248: void   acpiec_handle_events(struct acpiec_softc *);
        !           249:
        !           250: int    acpi_read_pmreg(struct acpi_softc *, int, int);
        !           251: void   acpi_write_pmreg(struct acpi_softc *, int, int, int);
        !           252:
        !           253: void   acpi_poll(void *);
        !           254:
        !           255: #endif
        !           256:
        !           257: #endif /* !_DEV_ACPI_ACPIVAR_H_ */

CVSweb