summaryrefslogtreecommitdiff
path: root/sys/dev/acpi/acpibat.h
blob: f11f9374aadd8f47518d71b29cf6f1d53ef66ece (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
/* $OpenBSD: acpibat.h,v 1.1 2005/12/13 23:19:15 marco Exp $ */
/*
 * Copyright (c) 2005 Marco Peereboom <marco@openbsd.org>
 *
 * Permission to use, copy, modify, and distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */

#ifndef __DEV_ACPI_ACPIBAT_H__
#define __DEV_ACPI_ACPIBAT_H__

#if 0
Arguments: none
Results  : package _BIF (Battery InFormation)
Package {
	// ASCIIZ is ASCII character string terminated with a 0x00.
	Power Unit			//DWORD
	Design Capacity			//DWORD
	Last Full Charge Capacity	//DWORD
	Battery Technology		//DWORD
	Design Voltage			//DWORD
	Design Capacity of Warning	//DWORD
	Design Capacity of Low		//DWORD
	Battery Capacity Granularity 1	//DWORD
	Battery Capacity Granularity 2	//DWORD
	Model Number			//ASCIIZ
	Serial Number			//ASCIIZ
	Battery Type			//ASCIIZ
	OEM Information			//ASCIIZ
}
#endif
struct acpibat_bif {
	u_int32_t	bif_power_unit;
#define BIF_POWER_MW		0x00
#define BIF_POWER_MA		0x01
	u_int32_t	bif_capacity;
#define BIF_UNKNOWN		0xffffffff
	u_int32_t	bif_last_capacity;
	u_int32_t	bif_technology;
#define BIF_TECH_PRIMARY	0x00
#define BIF_TECH_SECONDARY	0x01
	u_int32_t	bif_voltage;
	u_int32_t	bif_warning;
	u_int32_t	bif_low;
	u_int32_t	bif_cap_granu1;
	u_int32_t	bif_cap_granu2;
	char		bif_data[];	/* 4 strings */
};

#if 0
Arguments: none
Results  : DWORD _OSC Definition for Control Method Battery
#endif
#define CMB_OSC_UUID		"f18fc78b-0f15-4978-b793-53f833a1d35b"
#define   CMB_OSC_GRANULARITY	0x01
#define   CMB_OSC_WAKE_ON_LOW	0x02

#if 0
Arguments: none
Results  : package _BST (Battery STatus)
Package {
	Battery State			//DWORD
	Battery Present Rate		//DWORD
	Battery Remaining Capacity	//DWORD
	Battery Present Voltage		//DWORD
}

Per the spec section 10.2.2.3
Remaining Battery Percentage[%] = (Battery Remaining Capacity [=0 ~ 100] /
    Last Full Charged Capacity[=100]) * 100

Remaining Battery Life [h] = Battery Remaining Capacity [mAh/mWh] /
    Battery Present Rate [=0xFFFFFFFF] = unknown

#endif
struct acpibat_bst {
	u_int32_t	bst_state;
#define BST_DISCHARGE		0x01
#define BST_CHARGE		0x02
#define BST_CRITICAL		0x04
	u_int32_t	bst_rate;
#define BST_UNKNOWN		0xffffffff
	u_int32_t	bst_capacity;
	u_int32_t	bst_voltage;
};

#if 0
Arguments: DWORD _BTP (Battery Trip Point) level
Results  : none
#endif
#define BTP_CLEAR_TRIP_POINT	0x00

#if 0
_BTM (Battery TiMe)
Arguments: DWORD rate of discharge
Results  : DWORD time in seconds or error/unknown
#endif
#define BTM_CURRENT_RATE	0x00

#define BTM_RATE_TOO_LARGE	0x00
#define BTM_CRITICAL		0x00
#define BTM_UNKNOWN		0xffffffff

#if 0
Arguments: none
Results  : package _BMD (Battery Maintenance Data)
Package {
	Status Flags		//DWORD
	Capability Flags	//DWORD
	Recalibrate Count	//DWORD
	Quick Recalibrate Time	//DWORD
	Slow Recalibrate Time	//DWORD
}
#endif
struct acpibat_bmd {
	u_int32_t	bmd_status;
#define BMD_AML_CALIBRATE_CYCLE	0x01
#define BMD_CHARGING_DISABLED	0x02
#define BMD_DISCHARGE_WHILE_AC	0x04
#define BMD_RECALIBRATE_BAT	0x08
#define BMD_GOTO_STANDBY_SPEED	0x10
	u_int32_t	bmd_capability;
#define BMD_CB_AML_CALIBRATION	0x01
#define BMD_CB_DISABLE_CHARGER	0x02
#define BMD_CB_DISCH_WHILE_AC	0x04
#define BMD_CB_AFFECT_ALL_BATT	0x08
#define BMD_CB_FULL_CHRG_FIRST	0x10
	u_int32_t	bmd_recalibrate_count;
#define BMD_ONLY_CALIB_IF_ST3	0x00	/* only recal when status bit 3 set */
	u_int32_t	bmd_quick_recalibrate_time;
#define BMD_UNKNOWN		0xffffffff
	u_int32_t	bmd_slow_recalibrate_time;
};

#endif /* __DEV_ACPI_ACPIBAT_H__ */