xref: /onnv-gate/usr/src/uts/common/sys/acpi_drv.h (revision 8693:07b88e9a8bb5)
16573Sphitran /*
26573Sphitran  * CDDL HEADER START
36573Sphitran  *
46573Sphitran  * The contents of this file are subject to the terms of the
56573Sphitran  * Common Development and Distribution License (the "License").
66573Sphitran  * You may not use this file except in compliance with the License.
76573Sphitran  *
86573Sphitran  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
96573Sphitran  * or http://www.opensolaris.org/os/licensing.
106573Sphitran  * See the License for the specific language governing permissions
116573Sphitran  * and limitations under the License.
126573Sphitran  *
136573Sphitran  * When distributing Covered Code, include this CDDL HEADER in each
146573Sphitran  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
156573Sphitran  * If applicable, add the following below this CDDL HEADER, with the
166573Sphitran  * fields enclosed by brackets "[]" replaced with your own identifying
176573Sphitran  * information: Portions Copyright [yyyy] [name of copyright owner]
186573Sphitran  *
196573Sphitran  * CDDL HEADER END
206573Sphitran  */
216573Sphitran 
226573Sphitran /*
23*8693SKerry.Shu@Sun.COM  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
246573Sphitran  * Use is subject to license terms.
256573Sphitran  */
266573Sphitran 
276573Sphitran #ifndef _ACPI_DRV_H
286573Sphitran #define	_ACPI_DRV_H
296573Sphitran 
306573Sphitran #ifdef	__cplusplus
316573Sphitran extern "C" {
326573Sphitran #endif
336573Sphitran 
346573Sphitran #include <sys/param.h>
356573Sphitran #include <sys/kstat.h>
366573Sphitran 
376573Sphitran enum acpi_drv_ioctl {
386573Sphitran 	ACPI_DRV_IOC_BAY,
396573Sphitran 	ACPI_DRV_IOC_INFO,
406573Sphitran 	ACPI_DRV_IOC_STATUS,
416573Sphitran 	ACPI_DRV_IOC_AC_COUNT,
426573Sphitran 	ACPI_DRV_IOC_POWER_STATUS,
436573Sphitran 	ACPI_DRV_IOC_SET_WARNING,
446573Sphitran 	ACPI_DRV_IOC_GET_WARNING,
456573Sphitran 	ACPI_DRV_IOC_LID_STATUS,
467651SPhi.Tran@Sun.COM 	ACPI_DRV_IOC_LID_UPDATE,
476573Sphitran 	ACPI_DRV_IOC_LEVELS,
486573Sphitran 	ACPI_DRV_IOC_SET_BRIGHTNESS
496573Sphitran };
506573Sphitran 
516573Sphitran #define	ACPI_DRV_BST_CHARGING		2
526573Sphitran #define	ACPI_DRV_BST_DISCHARGING	1
536573Sphitran 
546573Sphitran typedef struct batt_bay {
556573Sphitran 	/* Total number of bays in the system */
566573Sphitran 	int bay_number;
576573Sphitran 
586573Sphitran 	/*
596573Sphitran 	 * Bitmap for each bay and its battery.
606573Sphitran 	 * battery_map bit i:
616573Sphitran 	 *    1 -- battery inserted to bay i
626573Sphitran 	 *    0 -- bay i empty
636573Sphitran 	 */
646573Sphitran 	uint64_t battery_map;
656573Sphitran } batt_bay_t;
666573Sphitran 
676573Sphitran typedef	struct acpi_bif {
686573Sphitran 	uint32_t	bif_unit;
696573Sphitran 
706573Sphitran 	/*
716573Sphitran 	 * 0x00000000 - 0x7fffffff
726573Sphitran 	 * 0xffffffff - Unknown design capacity in [mWh] or [mAh]
736573Sphitran 	 */
746573Sphitran 	uint32_t	bif_design_cap;
756573Sphitran 
766573Sphitran 	/*
776573Sphitran 	 * 0x00000000 - 0x7fffffff
786573Sphitran 	 * 0xffffffff - Unknown last full charge capacity in [mWh] or [mAh]
796573Sphitran 	 */
806573Sphitran 	uint32_t	bif_last_cap;
816573Sphitran 
826573Sphitran 	uint32_t	bif_tech;
836573Sphitran 
846573Sphitran 	/*
856573Sphitran 	 * 0x00000000 - 0x7fffffff
866573Sphitran 	 * 0xffffffff - Unknown design voltage in [mV]
876573Sphitran 	 */
886573Sphitran 	uint32_t	bif_voltage;
896573Sphitran 
906573Sphitran 	/*
916573Sphitran 	 * 0x00000000 - 0x7fffffff in [mWh] or [mAh]
926573Sphitran 	 */
936573Sphitran 	uint32_t	bif_warn_cap;
946573Sphitran 
956573Sphitran 	/*
966573Sphitran 	 * 0x00000000 - 0x7fffffff in [mWh] or [mAh]
976573Sphitran 	 */
986573Sphitran 	uint32_t	bif_low_cap;
996573Sphitran 
1006573Sphitran 	uint32_t	bif_gran1_cap;
1016573Sphitran 	uint32_t	bif_gran2_cap;
1026573Sphitran 	char		bif_model[MAXNAMELEN];
1036573Sphitran 	char		bif_serial[MAXNAMELEN];
1046573Sphitran 	char		bif_type[MAXNAMELEN];
1056573Sphitran 	char		bif_oem_info[MAXNAMELEN];
1066573Sphitran } acpi_bif_t;
1076573Sphitran 
1086573Sphitran typedef	struct acpi_bst {
1096573Sphitran 	uint32_t	bst_state;
1106573Sphitran 
1116573Sphitran 	/*
1126573Sphitran 	 * 0x00000000 - 0x7fffffff in [mW] or [mA]
1136573Sphitran 	 * 0xffffffff - Unknown rate
1146573Sphitran 	 */
1156573Sphitran 	uint32_t	bst_rate;
1166573Sphitran 
1176573Sphitran 	/*
1186573Sphitran 	 * 0x00000000 - 0x7fffffff in [mWh] or [mAh]
1196573Sphitran 	 * 0xffffffff - Unknown capacity
1206573Sphitran 	 */
1216573Sphitran 	uint32_t	bst_rem_cap;
1226573Sphitran 
1236573Sphitran 	/*
1246573Sphitran 	 * 0x00000000 - 0x7fffffff in [mV]
1256573Sphitran 	 * 0xffffffff - Unknown voltage
1266573Sphitran 	 */
1276573Sphitran 	uint32_t	bst_voltage;
1286573Sphitran } acpi_bst_t;
1296573Sphitran 
1306573Sphitran /* Battery warnning levels in percentage */
1316573Sphitran typedef struct acpi_drv_warn {
1326573Sphitran 	uint32_t	bw_enabled;	/* Enabled */
1336573Sphitran 	uint32_t	bw_charge_warn;	/* charge warn threshold */
1346573Sphitran 	uint32_t	bw_charge_low;	/* charge low threshold */
1356573Sphitran } acpi_drv_warn_t;
1366573Sphitran 
1376573Sphitran #define	ACPI_DRV_NAME		"acpi_drv"
1386573Sphitran #define	ACPI_DRV_POWER_KSTAT_NAME	"power"
1396573Sphitran #define	ACPI_DRV_BTWARN_KSTAT_NAME	"battery warning"
1406573Sphitran #define	ACPI_DRV_BIF_KSTAT_NAME		"battery BIF"
1416573Sphitran #define	ACPI_DRV_BST_KSTAT_NAME		"battery BST"
1426573Sphitran 
1436573Sphitran #define	AC			"AC"
1446573Sphitran #define	BATTERY			"battery"
1456573Sphitran #define	SYSTEM_POWER		"system power"
1466573Sphitran #define	SUPPORTED_BATTERY_COUNT	"supported_battery_count"
1476573Sphitran 
1486573Sphitran #define	BW_ENABLED		"enabled"
1496573Sphitran #define	BW_POWEROFF_THRESHOLD	"warn capacity threshold"
1506573Sphitran #define	BW_SHUTDOWN_THRESHOLD	"low capacity threshold"
1516573Sphitran 
1526573Sphitran #define	BIF_UNIT		"bif_unit"
1536573Sphitran #define	BIF_DESIGN_CAP		"bif_design_cap"
1546573Sphitran #define	BIF_LAST_CAP		"bif_last_cap"
1556573Sphitran #define	BIF_TECH		"bif_tech"
1566573Sphitran #define	BIF_VOLTAGE		"bif_voltage"
1576573Sphitran #define	BIF_WARN_CAP		"bif_warn_cap"
1586573Sphitran #define	BIF_LOW_CAP		"bif_low_cap"
1596573Sphitran #define	BIF_GRAN1_CAP		"bif_gran1_cap"
1606573Sphitran #define	BIF_GRAN2_CAP		"bif_gran2_cap"
1616573Sphitran #define	BIF_MODEL		"bif_model"
1626573Sphitran #define	BIF_SERIAL		"bif_serial"
1636573Sphitran #define	BIF_TYPE		"bif_type"
1646573Sphitran #define	BIF_OEM_INFO		"bif_oem_info"
1656573Sphitran 
1666573Sphitran #define	BST_STATE		"bst_state"
1676573Sphitran #define	BST_RATE		"bst_rate"
1686573Sphitran #define	BST_REM_CAP		"bst_rem_cap"
1696573Sphitran #define	BST_VOLTAGE		"bst_voltage"
1706573Sphitran 
1716573Sphitran #define	PSR_AC_PRESENT		"psr_ac_present"
1726573Sphitran 
1736573Sphitran typedef struct acpi_drv_power_kstat_s {
1746573Sphitran 	struct kstat_named	acpi_drv_power;
1756573Sphitran 	struct kstat_named	acpi_drv_supported_battery_count;
1766573Sphitran } acpi_drv_power_kstat_t;
1776573Sphitran 
1786573Sphitran typedef struct acpi_drv_warn_kstat_s {
1796573Sphitran 	struct kstat_named	acpi_drv_bw_enabled;
1806573Sphitran 	struct kstat_named	acpi_drv_bw_charge_warn;
1816573Sphitran 	struct kstat_named	acpi_drv_bw_charge_low;
1826573Sphitran } acpi_drv_warn_kstat_t;
1836573Sphitran 
1846573Sphitran /* BIF kstat */
1856573Sphitran typedef struct acpi_drv_bif_kstat_s {
1866573Sphitran 	struct kstat_named	acpi_drv_bif_unit;
1876573Sphitran 	struct kstat_named	acpi_drv_bif_design_cap;
1886573Sphitran 	struct kstat_named	acpi_drv_bif_last_cap;
1896573Sphitran 	struct kstat_named	acpi_drv_bif_tech;
1906573Sphitran 	struct kstat_named	acpi_drv_bif_voltage;
1916573Sphitran 	struct kstat_named	acpi_drv_bif_warn_cap;
1926573Sphitran 	struct kstat_named	acpi_drv_bif_low_cap;
1936573Sphitran 	struct kstat_named	acpi_drv_bif_gran1_cap;
1946573Sphitran 	struct kstat_named	acpi_drv_bif_gran2_cap;
1956573Sphitran 	struct kstat_named	acpi_drv_bif_model;
1966573Sphitran 	struct kstat_named	acpi_drv_bif_serial;
1976573Sphitran 	struct kstat_named	acpi_drv_bif_type;
1986573Sphitran 	struct kstat_named	acpi_drv_bif_oem_info;
1996573Sphitran } acpi_drv_bif_kstat_t;
2006573Sphitran 
2016573Sphitran /* BST kstat */
2026573Sphitran typedef struct acpi_drv_bst_kstat_s {
2036573Sphitran 	struct kstat_named	acpi_drv_bst_state;
2046573Sphitran 	struct kstat_named	acpi_drv_bst_rate;
2056573Sphitran 	struct kstat_named	acpi_drv_bst_rem_cap;
2066573Sphitran 	struct kstat_named	acpi_drv_bst_voltage;
2076573Sphitran } acpi_drv_bst_kstat_t;
2086573Sphitran 
209*8693SKerry.Shu@Sun.COM /* acpi device types */
210*8693SKerry.Shu@Sun.COM enum acpi_drv_type {
211*8693SKerry.Shu@Sun.COM 	ACPI_DRV_TYPE_UNKNOWN,
212*8693SKerry.Shu@Sun.COM 	ACPI_DRV_TYPE_CBAT,
213*8693SKerry.Shu@Sun.COM 	ACPI_DRV_TYPE_AC,
214*8693SKerry.Shu@Sun.COM 	ACPI_DRV_TYPE_LID,
215*8693SKerry.Shu@Sun.COM 	ACPI_DRV_TYPE_DISPLAY,
216*8693SKerry.Shu@Sun.COM 	ACPI_DRV_TYPE_HOTKEY
2176573Sphitran };
2186573Sphitran 
2196573Sphitran struct acpi_drv_output_info {
2206573Sphitran 	uint32_t adr; /* unique ID for this output device */
2216573Sphitran 	int nlev; /* number of brightness levels */
2226573Sphitran };
2236573Sphitran 
2246573Sphitran struct acpi_drv_output_status {
2256573Sphitran 	int state;
2266573Sphitran 	int num_levels;
2276573Sphitran 	int cur_level;
2286573Sphitran 	int cur_level_index;
2296573Sphitran };
2306573Sphitran 
231*8693SKerry.Shu@Sun.COM #define	ACPI_DRV_OK			0
232*8693SKerry.Shu@Sun.COM #define	ACPI_DRV_ERR			-1
233*8693SKerry.Shu@Sun.COM 
2346573Sphitran #ifdef	__cplusplus
2356573Sphitran }
2366573Sphitran #endif
2376573Sphitran 
2386573Sphitran #endif /* _ACPI_DRV_H */
239