docs/how-to-build.md: use proper markup for directory names
[unleashed/tickless.git] / include / sys / acpi_drv.h
blob185e838506af8b128e68ee327d639a97d1cec2a2
1 /*
2 * CDDL HEADER START
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
19 * CDDL HEADER END
23 * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
24 * Use is subject to license terms.
28 * Copyright 2015 Hans Rosenfeld <rosenfeld@grumpf.hope-2000.org>
31 #ifndef _ACPI_DRV_H
32 #define _ACPI_DRV_H
34 #ifdef __cplusplus
35 extern "C" {
36 #endif
38 #include <sys/param.h>
39 #include <sys/kstat.h>
41 enum acpi_drv_ioctl {
42 ACPI_DRV_IOC_BAY,
43 ACPI_DRV_IOC_INFO,
44 ACPI_DRV_IOC_STATUS,
45 ACPI_DRV_IOC_AC_COUNT,
46 ACPI_DRV_IOC_POWER_STATUS,
47 ACPI_DRV_IOC_SET_WARNING,
48 ACPI_DRV_IOC_GET_WARNING,
49 ACPI_DRV_IOC_LID_STATUS,
50 ACPI_DRV_IOC_LID_UPDATE,
51 ACPI_DRV_IOC_LEVELS,
52 ACPI_DRV_IOC_SET_BRIGHTNESS
55 #define ACPI_DRV_BST_CHARGING 2
56 #define ACPI_DRV_BST_DISCHARGING 1
58 typedef struct batt_bay {
59 /* Total number of bays in the system */
60 int bay_number;
63 * Bitmap for each bay and its battery.
64 * battery_map bit i:
65 * 1 -- battery inserted to bay i
66 * 0 -- bay i empty
68 uint64_t battery_map;
69 } batt_bay_t;
71 typedef struct acpi_bif {
72 uint32_t bif_unit;
75 * 0x00000000 - 0x7fffffff
76 * 0xffffffff - Unknown design capacity in [mWh] or [mAh]
78 uint32_t bif_design_cap;
81 * 0x00000000 - 0x7fffffff
82 * 0xffffffff - Unknown last full charge capacity in [mWh] or [mAh]
84 uint32_t bif_last_cap;
86 uint32_t bif_tech;
89 * 0x00000000 - 0x7fffffff
90 * 0xffffffff - Unknown design voltage in [mV]
92 uint32_t bif_voltage;
95 * 0x00000000 - 0x7fffffff in [mWh] or [mAh]
97 uint32_t bif_warn_cap;
100 * 0x00000000 - 0x7fffffff in [mWh] or [mAh]
102 uint32_t bif_low_cap;
104 uint32_t bif_gran1_cap;
105 uint32_t bif_gran2_cap;
106 char bif_model[MAXNAMELEN];
107 char bif_serial[MAXNAMELEN];
108 char bif_type[MAXNAMELEN];
109 char bif_oem_info[MAXNAMELEN];
110 } acpi_bif_t;
112 typedef struct acpi_bst {
113 uint32_t bst_state;
116 * 0x00000000 - 0x7fffffff in [mW] or [mA]
117 * 0xffffffff - Unknown rate
119 uint32_t bst_rate;
122 * 0x00000000 - 0x7fffffff in [mWh] or [mAh]
123 * 0xffffffff - Unknown capacity
125 uint32_t bst_rem_cap;
128 * 0x00000000 - 0x7fffffff in [mV]
129 * 0xffffffff - Unknown voltage
131 uint32_t bst_voltage;
132 } acpi_bst_t;
134 /* Battery warnning levels in percentage */
135 typedef struct acpi_drv_warn {
136 uint32_t bw_enabled; /* Enabled */
137 uint32_t bw_charge_warn; /* charge warn threshold */
138 uint32_t bw_charge_low; /* charge low threshold */
139 } acpi_drv_warn_t;
141 #define ACPI_DRV_NAME "acpi_drv"
142 #define ACPI_DRV_POWER_KSTAT_NAME "power"
143 #define ACPI_DRV_BTWARN_KSTAT_NAME "battery warning"
144 #define ACPI_DRV_BIF_KSTAT_NAME "battery BIF"
145 #define ACPI_DRV_BST_KSTAT_NAME "battery BST"
147 #define AC "AC"
148 #define BATTERY "battery"
149 #define SYSTEM_POWER "system power"
150 #define SUPPORTED_BATTERY_COUNT "supported_battery_count"
152 #define BW_ENABLED "enabled"
153 #define BW_POWEROFF_THRESHOLD "warn capacity threshold"
154 #define BW_SHUTDOWN_THRESHOLD "low capacity threshold"
156 #define BIF_UNIT "bif_unit"
157 #define BIF_DESIGN_CAP "bif_design_cap"
158 #define BIF_LAST_CAP "bif_last_cap"
159 #define BIF_TECH "bif_tech"
160 #define BIF_VOLTAGE "bif_voltage"
161 #define BIF_WARN_CAP "bif_warn_cap"
162 #define BIF_LOW_CAP "bif_low_cap"
163 #define BIF_GRAN1_CAP "bif_gran1_cap"
164 #define BIF_GRAN2_CAP "bif_gran2_cap"
165 #define BIF_MODEL "bif_model"
166 #define BIF_SERIAL "bif_serial"
167 #define BIF_TYPE "bif_type"
168 #define BIF_OEM_INFO "bif_oem_info"
170 #define BST_STATE "bst_state"
171 #define BST_RATE "bst_rate"
172 #define BST_REM_CAP "bst_rem_cap"
173 #define BST_VOLTAGE "bst_voltage"
175 #define PSR_AC_PRESENT "psr_ac_present"
177 typedef struct acpi_drv_power_kstat_s {
178 struct kstat_named acpi_drv_power;
179 struct kstat_named acpi_drv_supported_battery_count;
180 } acpi_drv_power_kstat_t;
182 typedef struct acpi_drv_warn_kstat_s {
183 struct kstat_named acpi_drv_bw_enabled;
184 struct kstat_named acpi_drv_bw_charge_warn;
185 struct kstat_named acpi_drv_bw_charge_low;
186 } acpi_drv_warn_kstat_t;
188 /* BIF kstat */
189 typedef struct acpi_drv_bif_kstat_s {
190 struct kstat_named acpi_drv_bif_unit;
191 struct kstat_named acpi_drv_bif_design_cap;
192 struct kstat_named acpi_drv_bif_last_cap;
193 struct kstat_named acpi_drv_bif_tech;
194 struct kstat_named acpi_drv_bif_voltage;
195 struct kstat_named acpi_drv_bif_warn_cap;
196 struct kstat_named acpi_drv_bif_low_cap;
197 struct kstat_named acpi_drv_bif_gran1_cap;
198 struct kstat_named acpi_drv_bif_gran2_cap;
199 struct kstat_named acpi_drv_bif_model;
200 struct kstat_named acpi_drv_bif_serial;
201 struct kstat_named acpi_drv_bif_type;
202 struct kstat_named acpi_drv_bif_oem_info;
203 } acpi_drv_bif_kstat_t;
205 /* BST kstat */
206 typedef struct acpi_drv_bst_kstat_s {
207 struct kstat_named acpi_drv_bst_state;
208 struct kstat_named acpi_drv_bst_rate;
209 struct kstat_named acpi_drv_bst_rem_cap;
210 struct kstat_named acpi_drv_bst_voltage;
211 } acpi_drv_bst_kstat_t;
213 /* acpi device types */
214 enum acpi_drv_type {
215 ACPI_DRV_TYPE_UNKNOWN,
216 ACPI_DRV_TYPE_CBAT,
217 ACPI_DRV_TYPE_AC,
218 ACPI_DRV_TYPE_LID,
219 ACPI_DRV_TYPE_DISPLAY,
220 ACPI_DRV_TYPE_HOTKEY
223 struct acpi_drv_output_info {
224 uint32_t adr; /* unique ID for this output device */
225 int nlev; /* number of brightness levels */
228 struct acpi_drv_output_status {
229 int state;
230 int num_levels;
231 int cur_level;
232 int cur_level_index;
235 #define ACPI_DRV_OK 0
236 #define ACPI_DRV_ERR -1
238 #ifdef _KERNEL
240 #define MINOR_SHIFT 8
241 #define IDX_MASK ((1 << MINOR_SHIFT) - 1)
242 #define MINOR_BATT(idx) (ACPI_DRV_TYPE_CBAT << MINOR_SHIFT | \
243 (idx))
244 #define MINOR_AC(idx) (ACPI_DRV_TYPE_AC << MINOR_SHIFT | \
245 (idx))
246 #define MINOR_LID(idx) (ACPI_DRV_TYPE_LID << MINOR_SHIFT | \
247 (idx))
248 #define MINOR_HOTKEY(idx) (ACPI_DRV_TYPE_HOTKEY << MINOR_SHIFT \
249 | (idx))
250 #define MINOR2IDX(minor) ((minor) & IDX_MASK)
251 #define MINOR2TYPE(minor) ((minor) >> MINOR_SHIFT)
253 #endif /* _KERNEL */
255 #ifdef __cplusplus
257 #endif
259 #endif /* _ACPI_DRV_H */