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

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

1.1     ! nbrk        1: /* $OpenBSD: acpidev.h,v 1.25 2007/05/31 17:49:16 gwk Exp $ */
        !             2: /*
        !             3:  * Copyright (c) 2005 Marco Peereboom <marco@openbsd.org>
        !             4:  * Copyright (c) 2005 Thorsten Lockert <tholo@sigmasoft.com>
        !             5:  *
        !             6:  * Permission to use, copy, modify, and distribute this software for any
        !             7:  * purpose with or without fee is hereby granted, provided that the above
        !             8:  * copyright notice and this permission notice appear in all copies.
        !             9:  *
        !            10:  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
        !            11:  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
        !            12:  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
        !            13:  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
        !            14:  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
        !            15:  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
        !            16:  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
        !            17:  */
        !            18:
        !            19: #ifndef __DEV_ACPI_ACPIDEV_H__
        !            20: #define __DEV_ACPI_ACPIDEV_H__
        !            21:
        !            22: #include <sys/sensors.h>
        !            23: #include <sys/rwlock.h>
        !            24: #include <dev/acpi/acpireg.h>
        !            25:
        !            26: #define DEVNAME(s)  ((s)->sc_dev.dv_xname)
        !            27:
        !            28: #define ACPIDEV_NOPOLL         0
        !            29: #define ACPIDEV_POLL           1
        !            30:
        !            31: /*
        !            32:  * _BIF (Battery InFormation)
        !            33:  * Arguments: none
        !            34:  * Results  : package _BIF (Battery InFormation)
        !            35:  * Package {
        !            36:  *     // ASCIIZ is ASCII character string terminated with a 0x00.
        !            37:  *     Power Unit                      //DWORD
        !            38:  *     Design Capacity                 //DWORD
        !            39:  *     Last Full Charge Capacity       //DWORD
        !            40:  *     Battery Technology              //DWORD
        !            41:  *     Design Voltage                  //DWORD
        !            42:  *     Design Capacity of Warning      //DWORD
        !            43:  *     Design Capacity of Low          //DWORD
        !            44:  *     Battery Capacity Granularity 1  //DWORD
        !            45:  *     Battery Capacity Granularity 2  //DWORD
        !            46:  *     Model Number                    //ASCIIZ
        !            47:  *     Serial Number                   //ASCIIZ
        !            48:  *     Battery Type                    //ASCIIZ
        !            49:  *     OEM Information                 //ASCIIZ
        !            50:  * }
        !            51:  */
        !            52: struct acpibat_bif {
        !            53:        u_int32_t       bif_power_unit;
        !            54: #define BIF_POWER_MW           0x00
        !            55: #define BIF_POWER_MA           0x01
        !            56:        u_int32_t       bif_capacity;
        !            57: #define BIF_UNKNOWN            0xffffffff
        !            58:        u_int32_t       bif_last_capacity;
        !            59:        u_int32_t       bif_technology;
        !            60: #define BIF_TECH_PRIMARY       0x00
        !            61: #define BIF_TECH_SECONDARY     0x01
        !            62:        u_int32_t       bif_voltage;
        !            63:        u_int32_t       bif_warning;
        !            64:        u_int32_t       bif_low;
        !            65:        u_int32_t       bif_cap_granu1;
        !            66:        u_int32_t       bif_cap_granu2;
        !            67:        char            bif_model[20];
        !            68:        char            bif_serial[20];
        !            69:        char            bif_type[20];
        !            70:        char            bif_oem[20];
        !            71: };
        !            72:
        !            73: /*
        !            74:  * _OSC Definition for Control Method Battery
        !            75:  * Arguments: none
        !            76:  * Results  : DWORD flags
        !            77:  */
        !            78: #define CMB_OSC_UUID           "f18fc78b-0f15-4978-b793-53f833a1d35b"
        !            79: #define   CMB_OSC_GRANULARITY  0x01
        !            80: #define   CMB_OSC_WAKE_ON_LOW  0x02
        !            81:
        !            82: /*
        !            83:  * _BST (Battery STatus)
        !            84:  * Arguments: none
        !            85:  * Results  : package _BST (Battery STatus)
        !            86:  * Package {
        !            87:  *     Battery State                   //DWORD
        !            88:  *     Battery Present Rate            //DWORD
        !            89:  *     Battery Remaining Capacity      //DWORD
        !            90:  *     Battery Present Voltage         //DWORD
        !            91:  * }
        !            92:  *
        !            93:  * Per the spec section 10.2.2.3
        !            94:  * Remaining Battery Percentage[%] = (Battery Remaining Capacity [=0 ~ 100] /
        !            95:  *     Last Full Charged Capacity[=100]) * 100
        !            96:  *
        !            97:  * Remaining Battery Life [h] = Battery Remaining Capacity [mAh/mWh] /
        !            98:  *     Battery Present Rate [=0xFFFFFFFF] = unknown
        !            99:  */
        !           100: struct acpibat_bst {
        !           101:        u_int32_t       bst_state;
        !           102: #define BST_DISCHARGE          0x01
        !           103: #define BST_CHARGE             0x02
        !           104: #define BST_CRITICAL           0x04
        !           105:        u_int32_t       bst_rate;
        !           106: #define BST_UNKNOWN            0xffffffff
        !           107:        u_int32_t       bst_capacity;
        !           108:        u_int32_t       bst_voltage;
        !           109: };
        !           110:
        !           111: /*
        !           112:  * _BTP (Battery Trip Point)
        !           113:  * Arguments: DWORD level
        !           114:  * Results  : none
        !           115:  */
        !           116: #define BTP_CLEAR_TRIP_POINT   0x00
        !           117:
        !           118: /*
        !           119:  * _BTM (Battery TiMe)
        !           120:  * Arguments: DWORD rate of discharge
        !           121:  * Results  : DWORD time in seconds or error/unknown
        !           122:  */
        !           123: #define BTM_CURRENT_RATE       0x00
        !           124:
        !           125: #define BTM_RATE_TOO_LARGE     0x00
        !           126: #define BTM_CRITICAL           0x00
        !           127: #define BTM_UNKNOWN            0xffffffff
        !           128:
        !           129: /*
        !           130:  * _BMD (Battery Maintenance Data)
        !           131:  * Arguments: none
        !           132:  * Results  : package _BMD (Battery Maintenance Data)
        !           133:  * Package {
        !           134:  *     Status Flags            //DWORD
        !           135:  *     Capability Flags        //DWORD
        !           136:  *     Recalibrate Count       //DWORD
        !           137:  *     Quick Recalibrate Time  //DWORD
        !           138:  *     Slow Recalibrate Time   //DWORD
        !           139:  * }
        !           140:  */
        !           141: struct acpibat_bmd {
        !           142:        u_int32_t       bmd_status;
        !           143: #define BMD_AML_CALIBRATE_CYCLE        0x01
        !           144: #define BMD_CHARGING_DISABLED  0x02
        !           145: #define BMD_DISCHARGE_WHILE_AC 0x04
        !           146: #define BMD_RECALIBRATE_BAT    0x08
        !           147: #define BMD_GOTO_STANDBY_SPEED 0x10
        !           148:        u_int32_t       bmd_capability;
        !           149: #define BMD_CB_AML_CALIBRATION 0x01
        !           150: #define BMD_CB_DISABLE_CHARGER 0x02
        !           151: #define BMD_CB_DISCH_WHILE_AC  0x04
        !           152: #define BMD_CB_AFFECT_ALL_BATT 0x08
        !           153: #define BMD_CB_FULL_CHRG_FIRST 0x10
        !           154:        u_int32_t       bmd_recalibrate_count;
        !           155: #define BMD_ONLY_CALIB_IF_ST3  0x00    /* only recal when status bit 3 set */
        !           156:        u_int32_t       bmd_quick_recalibrate_time;
        !           157: #define BMD_UNKNOWN            0xffffffff
        !           158:        u_int32_t       bmd_slow_recalibrate_time;
        !           159: };
        !           160:
        !           161: /*
        !           162:  * _BMC (Battery Maintenance Control)
        !           163:  * Arguments: DWORD flags
        !           164:  * Results  : none
        !           165:  */
        !           166: #define BMC_AML_CALIBRATE      0x01
        !           167: #define BMC_DISABLE_CHARGING   0x02
        !           168: #define BMC_ALLOW_AC_DISCHARGE 0x04
        !           169:
        !           170: /* AC device */
        !           171: /*
        !           172:  * _PSR (Power Source)
        !           173:  * Arguments: none
        !           174:  * Results  : DWORD status
        !           175:  */
        !           176: #define PSR_OFFLINE            0x00
        !           177: #define PSR_ONLINE             0x01
        !           178:
        !           179: /*
        !           180:  * _PCL (Power Consumer List)
        !           181:  * Arguments: none
        !           182:  * Results  : LIST of Power Class pointers
        !           183:  */
        !           184:
        !           185: /* hpet device */
        !           186: #define        HPET_REG_SIZE           1024
        !           187:
        !           188: #define        HPET_CAPABILITIES       0x000
        !           189: #define        HPET_CONFIGURATION      0x010
        !           190: #define        HPET_INTERRUPT_STATUS   0x020
        !           191: #define        HPET_MAIN_COUNTER       0x0F0
        !           192: #define        HPET_TIMER0_CONFIG      0x100
        !           193: #define        HPET_TIMER0_COMPARE     0x108
        !           194: #define        HPET_TIMER0_INTERRUPT   0x110
        !           195: #define        HPET_TIMER1_CONFIG      0x200
        !           196: #define        HPET_TIMER1_COMPARE     0x208
        !           197: #define        HPET_TIMER1_INTERRUPT   0x310
        !           198: #define        HPET_TIMER2_CONFIG      0x400
        !           199: #define        HPET_TIMER2_COMPARE     0x408
        !           200: #define        HPET_TIMER2_INTERRUPT   0x510
        !           201:
        !           202: #define STA_PRESENT   (1L << 0)
        !           203: #define STA_ENABLED   (1L << 1)
        !           204: #define STA_SHOW_UI   (1L << 2)
        !           205: #define STA_DEV_OK    (1L << 3)
        !           206: #define STA_BATTERY   (1L << 4)
        !           207:
        !           208: /*
        !           209:  * _PSS (Performance Supported States)
        !           210:  * Arguments: none
        !           211:  * Results  : package _PSS (Performance Supported States)
        !           212:  * Package {
        !           213:  *     CoreFreq                //DWORD
        !           214:  *     Power                   //DWORD
        !           215:  *     TransitionLatency       //DWORD
        !           216:  *     BusMasterLatency        //DWORD
        !           217:  *     Control                 //DWORD
        !           218:  *     Status                  //DWORD
        !           219:  * }
        !           220:  */
        !           221: struct acpicpu_pss {
        !           222:        u_int32_t       pss_core_freq;
        !           223:        u_int32_t       pss_power;
        !           224:        u_int32_t       pss_trans_latency;
        !           225:        u_int32_t       pss_bus_latency;
        !           226:        u_int32_t       pss_ctrl;
        !           227:        u_int32_t       pss_status;
        !           228: };
        !           229:
        !           230: int acpicpu_fetch_pss(struct acpicpu_pss **);
        !           231: void acpicpu_set_notify(void (*)(struct acpicpu_pss *, int));
        !           232: /*
        !           233:  * XXX this is returned in a buffer and is not a "natural" type.
        !           234:  *
        !           235:  * GRD (Generic Register Descriptor )
        !           236:  *
        !           237:  */
        !           238: struct acpi_grd {
        !           239:        u_int8_t        grd_descriptor;
        !           240:        u_int16_t       grd_length;
        !           241:        struct acpi_gas grd_gas;
        !           242: } __packed;
        !           243:
        !           244: /*
        !           245:  * _PCT (Performance Control )
        !           246:  * Arguments: none
        !           247:  * Results  : package _PCT (Performance Control)
        !           248:  * Package {
        !           249:  *     Perf_Ctrl_register      //Register
        !           250:  *     Perf_Status_register    //Register
        !           251:  * }
        !           252:  */
        !           253: struct acpicpu_pct {
        !           254:        struct acpi_grd pct_ctrl;
        !           255:        struct acpi_grd pct_status;
        !           256: };
        !           257:
        !           258: /* softc for fake apm devices */
        !           259: struct acpiac_softc {
        !           260:        struct device           sc_dev;
        !           261:
        !           262:        bus_space_tag_t         sc_iot;
        !           263:        bus_space_handle_t      sc_ioh;
        !           264:
        !           265:        struct acpi_softc       *sc_acpi;
        !           266:        struct aml_node         *sc_devnode;
        !           267:
        !           268:        int                     sc_ac_stat;
        !           269:
        !           270:        struct ksensor          sc_sens[1];
        !           271:        struct ksensordev       sc_sensdev;
        !           272: };
        !           273:
        !           274: struct acpibat_softc {
        !           275:        struct device           sc_dev;
        !           276:
        !           277:        bus_space_tag_t         sc_iot;
        !           278:        bus_space_handle_t      sc_ioh;
        !           279:
        !           280:        struct acpi_softc       *sc_acpi;
        !           281:        struct aml_node         *sc_devnode;
        !           282:
        !           283:        struct acpibat_bif      sc_bif;
        !           284:        struct acpibat_bst      sc_bst;
        !           285:        volatile int            sc_bat_present;
        !           286:
        !           287:        struct ksensor          sc_sens[8];
        !           288:        struct ksensordev       sc_sensdev;
        !           289: };
        !           290:
        !           291: struct acpidock_softc {
        !           292:        struct device           sc_dev;
        !           293:
        !           294:        bus_space_tag_t         sc_iot;
        !           295:        bus_space_handle_t      sc_ioh;
        !           296:
        !           297:        struct acpi_softc       *sc_acpi;
        !           298:        struct aml_node         *sc_devnode;
        !           299:
        !           300:        TAILQ_HEAD(, aml_nodelist)      sc_deps_h;
        !           301:        struct aml_nodelist     *sc_deps;
        !           302:
        !           303:        struct ksensor          sc_sens;
        !           304:        struct ksensordev       sc_sensdev;
        !           305:
        !           306:        int                     sc_docked;
        !           307:        int                     sc_sta;
        !           308:
        !           309: #define ACPIDOCK_STATUS_UNKNOWN                -1
        !           310: #define ACPIDOCK_STATUS_UNDOCKED       0
        !           311: #define ACPIDOCK_STATUS_DOCKED         1
        !           312: };
        !           313:
        !           314: #define ACPIDOCK_EVENT_INSERT  0
        !           315: #define        ACPIDOCK_EVENT_EJECT    3
        !           316:
        !           317:
        !           318: #endif /* __DEV_ACPI_ACPIDEV_H__ */

CVSweb