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