xref: /onnv-gate/usr/src/uts/common/sys/acpi_drv.h (revision 6573:7a725819f4fe)
1*6573Sphitran /*
2*6573Sphitran  * CDDL HEADER START
3*6573Sphitran  *
4*6573Sphitran  * The contents of this file are subject to the terms of the
5*6573Sphitran  * Common Development and Distribution License (the "License").
6*6573Sphitran  * You may not use this file except in compliance with the License.
7*6573Sphitran  *
8*6573Sphitran  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*6573Sphitran  * or http://www.opensolaris.org/os/licensing.
10*6573Sphitran  * See the License for the specific language governing permissions
11*6573Sphitran  * and limitations under the License.
12*6573Sphitran  *
13*6573Sphitran  * When distributing Covered Code, include this CDDL HEADER in each
14*6573Sphitran  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*6573Sphitran  * If applicable, add the following below this CDDL HEADER, with the
16*6573Sphitran  * fields enclosed by brackets "[]" replaced with your own identifying
17*6573Sphitran  * information: Portions Copyright [yyyy] [name of copyright owner]
18*6573Sphitran  *
19*6573Sphitran  * CDDL HEADER END
20*6573Sphitran  */
21*6573Sphitran 
22*6573Sphitran /*
23*6573Sphitran  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
24*6573Sphitran  * Use is subject to license terms.
25*6573Sphitran  */
26*6573Sphitran 
27*6573Sphitran #ifndef _ACPI_DRV_H
28*6573Sphitran #define	_ACPI_DRV_H
29*6573Sphitran 
30*6573Sphitran #pragma ident	"%Z%%M%	%I%	%E% SMI"
31*6573Sphitran 
32*6573Sphitran #ifdef	__cplusplus
33*6573Sphitran extern "C" {
34*6573Sphitran #endif
35*6573Sphitran 
36*6573Sphitran #include <sys/param.h>
37*6573Sphitran #include <sys/kstat.h>
38*6573Sphitran 
39*6573Sphitran enum acpi_drv_ioctl {
40*6573Sphitran 	ACPI_DRV_IOC_BAY,
41*6573Sphitran 	ACPI_DRV_IOC_INFO,
42*6573Sphitran 	ACPI_DRV_IOC_STATUS,
43*6573Sphitran 	ACPI_DRV_IOC_AC_COUNT,
44*6573Sphitran 	ACPI_DRV_IOC_POWER_STATUS,
45*6573Sphitran 	ACPI_DRV_IOC_SET_WARNING,
46*6573Sphitran 	ACPI_DRV_IOC_GET_WARNING,
47*6573Sphitran 	ACPI_DRV_IOC_LID_STATUS,
48*6573Sphitran 	ACPI_DRV_IOC_LEVELS,
49*6573Sphitran 	ACPI_DRV_IOC_SET_BRIGHTNESS
50*6573Sphitran };
51*6573Sphitran 
52*6573Sphitran #define	ACPI_DRV_BST_CHARGING		2
53*6573Sphitran #define	ACPI_DRV_BST_DISCHARGING	1
54*6573Sphitran 
55*6573Sphitran typedef struct batt_bay {
56*6573Sphitran 	/* Total number of bays in the system */
57*6573Sphitran 	int bay_number;
58*6573Sphitran 
59*6573Sphitran 	/*
60*6573Sphitran 	 * Bitmap for each bay and its battery.
61*6573Sphitran 	 * battery_map bit i:
62*6573Sphitran 	 *    1 -- battery inserted to bay i
63*6573Sphitran 	 *    0 -- bay i empty
64*6573Sphitran 	 */
65*6573Sphitran 	uint64_t battery_map;
66*6573Sphitran } batt_bay_t;
67*6573Sphitran 
68*6573Sphitran typedef	struct acpi_bif {
69*6573Sphitran 	uint32_t	bif_unit;
70*6573Sphitran 
71*6573Sphitran 	/*
72*6573Sphitran 	 * 0x00000000 - 0x7fffffff
73*6573Sphitran 	 * 0xffffffff - Unknown design capacity in [mWh] or [mAh]
74*6573Sphitran 	 */
75*6573Sphitran 	uint32_t	bif_design_cap;
76*6573Sphitran 
77*6573Sphitran 	/*
78*6573Sphitran 	 * 0x00000000 - 0x7fffffff
79*6573Sphitran 	 * 0xffffffff - Unknown last full charge capacity in [mWh] or [mAh]
80*6573Sphitran 	 */
81*6573Sphitran 	uint32_t	bif_last_cap;
82*6573Sphitran 
83*6573Sphitran 	uint32_t	bif_tech;
84*6573Sphitran 
85*6573Sphitran 	/*
86*6573Sphitran 	 * 0x00000000 - 0x7fffffff
87*6573Sphitran 	 * 0xffffffff - Unknown design voltage in [mV]
88*6573Sphitran 	 */
89*6573Sphitran 	uint32_t	bif_voltage;
90*6573Sphitran 
91*6573Sphitran 	/*
92*6573Sphitran 	 * 0x00000000 - 0x7fffffff in [mWh] or [mAh]
93*6573Sphitran 	 */
94*6573Sphitran 	uint32_t	bif_warn_cap;
95*6573Sphitran 
96*6573Sphitran 	/*
97*6573Sphitran 	 * 0x00000000 - 0x7fffffff in [mWh] or [mAh]
98*6573Sphitran 	 */
99*6573Sphitran 	uint32_t	bif_low_cap;
100*6573Sphitran 
101*6573Sphitran 	uint32_t	bif_gran1_cap;
102*6573Sphitran 	uint32_t	bif_gran2_cap;
103*6573Sphitran 	char		bif_model[MAXNAMELEN];
104*6573Sphitran 	char		bif_serial[MAXNAMELEN];
105*6573Sphitran 	char		bif_type[MAXNAMELEN];
106*6573Sphitran 	char		bif_oem_info[MAXNAMELEN];
107*6573Sphitran } acpi_bif_t;
108*6573Sphitran 
109*6573Sphitran typedef	struct acpi_bst {
110*6573Sphitran 	uint32_t	bst_state;
111*6573Sphitran 
112*6573Sphitran 	/*
113*6573Sphitran 	 * 0x00000000 - 0x7fffffff in [mW] or [mA]
114*6573Sphitran 	 * 0xffffffff - Unknown rate
115*6573Sphitran 	 */
116*6573Sphitran 	uint32_t	bst_rate;
117*6573Sphitran 
118*6573Sphitran 	/*
119*6573Sphitran 	 * 0x00000000 - 0x7fffffff in [mWh] or [mAh]
120*6573Sphitran 	 * 0xffffffff - Unknown capacity
121*6573Sphitran 	 */
122*6573Sphitran 	uint32_t	bst_rem_cap;
123*6573Sphitran 
124*6573Sphitran 	/*
125*6573Sphitran 	 * 0x00000000 - 0x7fffffff in [mV]
126*6573Sphitran 	 * 0xffffffff - Unknown voltage
127*6573Sphitran 	 */
128*6573Sphitran 	uint32_t	bst_voltage;
129*6573Sphitran } acpi_bst_t;
130*6573Sphitran 
131*6573Sphitran /* Battery warnning levels in percentage */
132*6573Sphitran typedef struct acpi_drv_warn {
133*6573Sphitran 	uint32_t	bw_enabled;	/* Enabled */
134*6573Sphitran 	uint32_t	bw_charge_warn;	/* charge warn threshold */
135*6573Sphitran 	uint32_t	bw_charge_low;	/* charge low threshold */
136*6573Sphitran } acpi_drv_warn_t;
137*6573Sphitran 
138*6573Sphitran #define	ACPI_DRV_NAME		"acpi_drv"
139*6573Sphitran #define	ACPI_DRV_POWER_KSTAT_NAME	"power"
140*6573Sphitran #define	ACPI_DRV_BTWARN_KSTAT_NAME	"battery warning"
141*6573Sphitran #define	ACPI_DRV_BIF_KSTAT_NAME		"battery BIF"
142*6573Sphitran #define	ACPI_DRV_BST_KSTAT_NAME		"battery BST"
143*6573Sphitran 
144*6573Sphitran #define	AC			"AC"
145*6573Sphitran #define	BATTERY			"battery"
146*6573Sphitran #define	SYSTEM_POWER		"system power"
147*6573Sphitran #define	SUPPORTED_BATTERY_COUNT	"supported_battery_count"
148*6573Sphitran 
149*6573Sphitran #define	BW_ENABLED		"enabled"
150*6573Sphitran #define	BW_POWEROFF_THRESHOLD	"warn capacity threshold"
151*6573Sphitran #define	BW_SHUTDOWN_THRESHOLD	"low capacity threshold"
152*6573Sphitran 
153*6573Sphitran #define	BIF_UNIT		"bif_unit"
154*6573Sphitran #define	BIF_DESIGN_CAP		"bif_design_cap"
155*6573Sphitran #define	BIF_LAST_CAP		"bif_last_cap"
156*6573Sphitran #define	BIF_TECH		"bif_tech"
157*6573Sphitran #define	BIF_VOLTAGE		"bif_voltage"
158*6573Sphitran #define	BIF_WARN_CAP		"bif_warn_cap"
159*6573Sphitran #define	BIF_LOW_CAP		"bif_low_cap"
160*6573Sphitran #define	BIF_GRAN1_CAP		"bif_gran1_cap"
161*6573Sphitran #define	BIF_GRAN2_CAP		"bif_gran2_cap"
162*6573Sphitran #define	BIF_MODEL		"bif_model"
163*6573Sphitran #define	BIF_SERIAL		"bif_serial"
164*6573Sphitran #define	BIF_TYPE		"bif_type"
165*6573Sphitran #define	BIF_OEM_INFO		"bif_oem_info"
166*6573Sphitran 
167*6573Sphitran #define	BST_STATE		"bst_state"
168*6573Sphitran #define	BST_RATE		"bst_rate"
169*6573Sphitran #define	BST_REM_CAP		"bst_rem_cap"
170*6573Sphitran #define	BST_VOLTAGE		"bst_voltage"
171*6573Sphitran 
172*6573Sphitran #define	PSR_AC_PRESENT		"psr_ac_present"
173*6573Sphitran 
174*6573Sphitran typedef struct acpi_drv_power_kstat_s {
175*6573Sphitran 	struct kstat_named	acpi_drv_power;
176*6573Sphitran 	struct kstat_named	acpi_drv_supported_battery_count;
177*6573Sphitran } acpi_drv_power_kstat_t;
178*6573Sphitran 
179*6573Sphitran typedef struct acpi_drv_warn_kstat_s {
180*6573Sphitran 	struct kstat_named	acpi_drv_bw_enabled;
181*6573Sphitran 	struct kstat_named	acpi_drv_bw_charge_warn;
182*6573Sphitran 	struct kstat_named	acpi_drv_bw_charge_low;
183*6573Sphitran } acpi_drv_warn_kstat_t;
184*6573Sphitran 
185*6573Sphitran /* BIF kstat */
186*6573Sphitran typedef struct acpi_drv_bif_kstat_s {
187*6573Sphitran 	struct kstat_named	acpi_drv_bif_unit;
188*6573Sphitran 	struct kstat_named	acpi_drv_bif_design_cap;
189*6573Sphitran 	struct kstat_named	acpi_drv_bif_last_cap;
190*6573Sphitran 	struct kstat_named	acpi_drv_bif_tech;
191*6573Sphitran 	struct kstat_named	acpi_drv_bif_voltage;
192*6573Sphitran 	struct kstat_named	acpi_drv_bif_warn_cap;
193*6573Sphitran 	struct kstat_named	acpi_drv_bif_low_cap;
194*6573Sphitran 	struct kstat_named	acpi_drv_bif_gran1_cap;
195*6573Sphitran 	struct kstat_named	acpi_drv_bif_gran2_cap;
196*6573Sphitran 	struct kstat_named	acpi_drv_bif_model;
197*6573Sphitran 	struct kstat_named	acpi_drv_bif_serial;
198*6573Sphitran 	struct kstat_named	acpi_drv_bif_type;
199*6573Sphitran 	struct kstat_named	acpi_drv_bif_oem_info;
200*6573Sphitran } acpi_drv_bif_kstat_t;
201*6573Sphitran 
202*6573Sphitran /* BST kstat */
203*6573Sphitran typedef struct acpi_drv_bst_kstat_s {
204*6573Sphitran 	struct kstat_named	acpi_drv_bst_state;
205*6573Sphitran 	struct kstat_named	acpi_drv_bst_rate;
206*6573Sphitran 	struct kstat_named	acpi_drv_bst_rem_cap;
207*6573Sphitran 	struct kstat_named	acpi_drv_bst_voltage;
208*6573Sphitran } acpi_drv_bst_kstat_t;
209*6573Sphitran 
210*6573Sphitran struct acpi_drv_display_info {
211*6573Sphitran 	int noutput; /* number of output devices */
212*6573Sphitran 	int sw_on;
213*6573Sphitran 	int bright_on;
214*6573Sphitran };
215*6573Sphitran 
216*6573Sphitran struct acpi_drv_output_info {
217*6573Sphitran 	uint32_t adr; /* unique ID for this output device */
218*6573Sphitran 	int nlev; /* number of brightness levels */
219*6573Sphitran };
220*6573Sphitran 
221*6573Sphitran struct acpi_drv_output_status {
222*6573Sphitran 	int state;
223*6573Sphitran 	int num_levels;
224*6573Sphitran 	int cur_level;
225*6573Sphitran 	int cur_level_index;
226*6573Sphitran };
227*6573Sphitran 
228*6573Sphitran #ifdef	__cplusplus
229*6573Sphitran }
230*6573Sphitran #endif
231*6573Sphitran 
232*6573Sphitran #endif /* _ACPI_DRV_H */
233