Annotation of sys/dev/acpi/acpidev.h, Revision 1.1.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