xref: /dflybsd-src/sys/dev/acpica/acpi_smbus.h (revision 7078f92bf00cafccd0c0191c7aa92b0bb784f70e)
1*5db2f26eSSascha Wildner /*-
2*5db2f26eSSascha Wildner  * Copyright (c) 2005 Hans Petter Selasky
3*5db2f26eSSascha Wildner  * All rights reserved.
4*5db2f26eSSascha Wildner  *
5*5db2f26eSSascha Wildner  * Redistribution and use in source and binary forms, with or without
6*5db2f26eSSascha Wildner  * modification, are permitted provided that the following conditions
7*5db2f26eSSascha Wildner  * are met:
8*5db2f26eSSascha Wildner  * 1. Redistributions of source code must retain the above copyright
9*5db2f26eSSascha Wildner  *    notice, this list of conditions and the following disclaimer.
10*5db2f26eSSascha Wildner  * 2. Redistributions in binary form must reproduce the above copyright
11*5db2f26eSSascha Wildner  *    notice, this list of conditions and the following disclaimer in the
12*5db2f26eSSascha Wildner  *    documentation and/or other materials provided with the distribution.
13*5db2f26eSSascha Wildner  *
14*5db2f26eSSascha Wildner  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15*5db2f26eSSascha Wildner  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16*5db2f26eSSascha Wildner  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17*5db2f26eSSascha Wildner  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18*5db2f26eSSascha Wildner  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19*5db2f26eSSascha Wildner  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20*5db2f26eSSascha Wildner  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21*5db2f26eSSascha Wildner  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22*5db2f26eSSascha Wildner  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23*5db2f26eSSascha Wildner  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24*5db2f26eSSascha Wildner  * SUCH DAMAGE.
25*5db2f26eSSascha Wildner  *
26*5db2f26eSSascha Wildner  *	$FreeBSD: src/sys/dev/acpica/acpi_smbus.h,v 1.1 2005/10/23 00:20:13 njl Exp $
27*5db2f26eSSascha Wildner  */
28*5db2f26eSSascha Wildner 
29*5db2f26eSSascha Wildner #ifndef _ACPI_SMBUS_H_
30*5db2f26eSSascha Wildner #define _ACPI_SMBUS_H_
31*5db2f26eSSascha Wildner 
32*5db2f26eSSascha Wildner /*
33*5db2f26eSSascha Wildner  * System Management Bus register offsets
34*5db2f26eSSascha Wildner  */
35*5db2f26eSSascha Wildner #define SMBUS_PRTCL		0
36*5db2f26eSSascha Wildner #define SMBUS_STS		1
37*5db2f26eSSascha Wildner #define SMBUS_STS_MASK		0x1f
38*5db2f26eSSascha Wildner #define SMBUS_ADDR		2
39*5db2f26eSSascha Wildner #define SMBUS_CMD		3
40*5db2f26eSSascha Wildner #define SMBUS_DATA		4	/* 32 bytes */
41*5db2f26eSSascha Wildner #define SMBUS_BCNT		36
42*5db2f26eSSascha Wildner #define SMBUS_ALRM_ADDR		37
43*5db2f26eSSascha Wildner #define SMBUS_ALRM_DATA		38	/* 2 bytes */
44*5db2f26eSSascha Wildner 
45*5db2f26eSSascha Wildner /*
46*5db2f26eSSascha Wildner  * Smart-Battery commands and definitions
47*5db2f26eSSascha Wildner  */
48*5db2f26eSSascha Wildner 
49*5db2f26eSSascha Wildner /* Base address */
50*5db2f26eSSascha Wildner #define SMBATT_ADDRESS		0x16
51*5db2f26eSSascha Wildner 
52*5db2f26eSSascha Wildner 
53*5db2f26eSSascha Wildner /* access: READ WRITE WORD */
54*5db2f26eSSascha Wildner #define SMBATT_CMD_MANUFACTURER_ACCESS		0
55*5db2f26eSSascha Wildner 
56*5db2f26eSSascha Wildner /*
57*5db2f26eSSascha Wildner  * access: READ WRITE WORD
58*5db2f26eSSascha Wildner  * unit  : mAh (CAPACITY_MODE=0) or 10 mWh (CAPACITY_MODE=1)
59*5db2f26eSSascha Wildner  * range : 0 .. 65535 inclusively
60*5db2f26eSSascha Wildner  */
61*5db2f26eSSascha Wildner #define SMBATT_CMD_REMAINING_CAPACITY_ALARM	0x1
62*5db2f26eSSascha Wildner 
63*5db2f26eSSascha Wildner /*
64*5db2f26eSSascha Wildner  * access: READ WRITE WORD
65*5db2f26eSSascha Wildner  * unit  : minutes
66*5db2f26eSSascha Wildner  * range : 0 .. 65535 inclusively
67*5db2f26eSSascha Wildner  */
68*5db2f26eSSascha Wildner #define SMBATT_CMD_REMAINING_TIME_ALARM		0x2
69*5db2f26eSSascha Wildner 
70*5db2f26eSSascha Wildner /* access: READ WRITE WORD */
71*5db2f26eSSascha Wildner #define SMBATT_CMD_BATTERY_MODE			0x3
72*5db2f26eSSascha Wildner 
73*5db2f26eSSascha Wildner #define SMBATT_BM_INTERNAL_CHARGE_CONTROLLER	(1 <<  0) /* READ */
74*5db2f26eSSascha Wildner #define SMBATT_BM_PRIMARY_BATTERY_SUPPORT	(1 <<  1) /* READ */
75*5db2f26eSSascha Wildner #define SMBATT_BM_CONDITION_FLAG		(1 <<  7) /* READ */
76*5db2f26eSSascha Wildner #define SMBATT_BM_CHARGE_CONTROLLER_ENABLED	(1 <<  8) /* READ WRITE */
77*5db2f26eSSascha Wildner #define SMBATT_BM_PRIMARY_BATTERY		(1 <<  9) /* READ WRITE */
78*5db2f26eSSascha Wildner #define SMBATT_BM_ALARM_MODE			(1 << 13) /* READ WRITE */
79*5db2f26eSSascha Wildner #define SMBATT_BM_CHARGER_MODE			(1 << 14) /* READ WRITE */
80*5db2f26eSSascha Wildner #define SMBATT_BM_CAPACITY_MODE			(1 << 15) /* READ WRITE */
81*5db2f26eSSascha Wildner 
82*5db2f26eSSascha Wildner /*
83*5db2f26eSSascha Wildner  * access: READ WRITE WORD
84*5db2f26eSSascha Wildner  * unit  : mAh (CAPACITY_MODE=0) or 10 mWh (CAPACITY_MODE=1)
85*5db2f26eSSascha Wildner  * range : signed WORD
86*5db2f26eSSascha Wildner  */
87*5db2f26eSSascha Wildner #define SMBATT_CMD_AT_RATE			0x4
88*5db2f26eSSascha Wildner 
89*5db2f26eSSascha Wildner /*
90*5db2f26eSSascha Wildner  * access: READ WORD
91*5db2f26eSSascha Wildner  * unit  : minutes
92*5db2f26eSSascha Wildner  * range : 0 .. 65534, 65535 has special meaning
93*5db2f26eSSascha Wildner  */
94*5db2f26eSSascha Wildner #define SMBATT_CMD_AT_RATE_TIME_TO_FULL		0x5
95*5db2f26eSSascha Wildner 
96*5db2f26eSSascha Wildner /*
97*5db2f26eSSascha Wildner  * access: READ WORD
98*5db2f26eSSascha Wildner  * unit  : minutes
99*5db2f26eSSascha Wildner  * range : 0 .. 65534, 65535 has special meaning
100*5db2f26eSSascha Wildner  */
101*5db2f26eSSascha Wildner #define SMBATT_CMD_AT_RATE_TIME_TO_EMPTY	0x6
102*5db2f26eSSascha Wildner 
103*5db2f26eSSascha Wildner /*
104*5db2f26eSSascha Wildner  * access: READ WORD */
105*5db2f26eSSascha Wildner #define SMBATT_CMD_AT_RATE_OK			0x7
106*5db2f26eSSascha Wildner 
107*5db2f26eSSascha Wildner /*
108*5db2f26eSSascha Wildner  * access: READ WORD
109*5db2f26eSSascha Wildner  * unit  : 0.1 degrees Kelvin
110*5db2f26eSSascha Wildner  * range : 0 .. 6553.5 Kelvin
111*5db2f26eSSascha Wildner  */
112*5db2f26eSSascha Wildner #define SMBATT_CMD_TEMPERATURE			0x8
113*5db2f26eSSascha Wildner 
114*5db2f26eSSascha Wildner /*
115*5db2f26eSSascha Wildner  * access: READ WORD
116*5db2f26eSSascha Wildner  * unit  : mV
117*5db2f26eSSascha Wildner  * range : 0 .. 65535 inclusively
118*5db2f26eSSascha Wildner  */
119*5db2f26eSSascha Wildner #define SMBATT_CMD_VOLTAGE			0x9
120*5db2f26eSSascha Wildner 
121*5db2f26eSSascha Wildner /*
122*5db2f26eSSascha Wildner  * access: READ WORD
123*5db2f26eSSascha Wildner  * unit  : mA
124*5db2f26eSSascha Wildner  * range : signed WORD
125*5db2f26eSSascha Wildner  */
126*5db2f26eSSascha Wildner #define SMBATT_CMD_CURRENT			0xa
127*5db2f26eSSascha Wildner 
128*5db2f26eSSascha Wildner /*
129*5db2f26eSSascha Wildner  * access: READ WORD
130*5db2f26eSSascha Wildner  * unit  : mA
131*5db2f26eSSascha Wildner  * range : signed WORD
132*5db2f26eSSascha Wildner  */
133*5db2f26eSSascha Wildner #define SMBATT_CMD_AVERAGE_CURRENT		0xb
134*5db2f26eSSascha Wildner 
135*5db2f26eSSascha Wildner /*
136*5db2f26eSSascha Wildner  * access: READ WORD
137*5db2f26eSSascha Wildner  * unit  : percent
138*5db2f26eSSascha Wildner  * range : 0..100 inclusively
139*5db2f26eSSascha Wildner  */
140*5db2f26eSSascha Wildner #define SMBATT_CMD_MAX_ERROR			0xc
141*5db2f26eSSascha Wildner 
142*5db2f26eSSascha Wildner /*
143*5db2f26eSSascha Wildner  * access: READ WORD
144*5db2f26eSSascha Wildner  * unit  : percent
145*5db2f26eSSascha Wildner  * range : 0..100 inclusively
146*5db2f26eSSascha Wildner  */
147*5db2f26eSSascha Wildner #define SMBATT_CMD_RELATIVE_STATE_OF_CHARGE	0xd
148*5db2f26eSSascha Wildner 
149*5db2f26eSSascha Wildner /*
150*5db2f26eSSascha Wildner  * access: READ WORD
151*5db2f26eSSascha Wildner  * unit  : percent
152*5db2f26eSSascha Wildner  * range : 0..100 inclusively
153*5db2f26eSSascha Wildner  */
154*5db2f26eSSascha Wildner #define SMBATT_CMD_ABSOLUTE_STATE_OF_CHARGE	0xe
155*5db2f26eSSascha Wildner 
156*5db2f26eSSascha Wildner /*
157*5db2f26eSSascha Wildner  * access: READ WORD
158*5db2f26eSSascha Wildner  * unit  : mAh (CAPACITY_MODE=0) or 10 mWh (CAPACITY_MODE=1)
159*5db2f26eSSascha Wildner  * range : 0..65535 inclusively
160*5db2f26eSSascha Wildner  */
161*5db2f26eSSascha Wildner #define SMBATT_CMD_REMAINING_CAPACITY		0xf
162*5db2f26eSSascha Wildner 
163*5db2f26eSSascha Wildner /*
164*5db2f26eSSascha Wildner  * access: READ WORD
165*5db2f26eSSascha Wildner  * unit  : mAh (CAPACITY_MODE=0) or 10 mWh (CAPACITY_MODE=1)
166*5db2f26eSSascha Wildner  * range : 0..65535 inclusively
167*5db2f26eSSascha Wildner  */
168*5db2f26eSSascha Wildner #define SMBATT_CMD_FULL_CHARGE_CAPACITY		0x10
169*5db2f26eSSascha Wildner 
170*5db2f26eSSascha Wildner /*
171*5db2f26eSSascha Wildner  * access: READ WORD
172*5db2f26eSSascha Wildner  * unit  : minutes
173*5db2f26eSSascha Wildner  * range : 0..65534, 65535 is reserved
174*5db2f26eSSascha Wildner  */
175*5db2f26eSSascha Wildner #define SMBATT_CMD_RUN_TIME_TO_EMPTY		0x11
176*5db2f26eSSascha Wildner 
177*5db2f26eSSascha Wildner /*
178*5db2f26eSSascha Wildner  * access: READ WORD
179*5db2f26eSSascha Wildner  * unit  : minutes
180*5db2f26eSSascha Wildner  * range : 0..65534, 65535 is reserved
181*5db2f26eSSascha Wildner  */
182*5db2f26eSSascha Wildner #define SMBATT_CMD_AVERAGE_TIME_TO_EMPTY	0x12
183*5db2f26eSSascha Wildner 
184*5db2f26eSSascha Wildner /*
185*5db2f26eSSascha Wildner  * access: READ WORD
186*5db2f26eSSascha Wildner  * unit  : minutes
187*5db2f26eSSascha Wildner  * range : 0..65534, 65535 is reserved
188*5db2f26eSSascha Wildner  */
189*5db2f26eSSascha Wildner #define SMBATT_CMD_AVERAGE_TIME_TO_FULL		0x13
190*5db2f26eSSascha Wildner 
191*5db2f26eSSascha Wildner /*
192*5db2f26eSSascha Wildner  * access: READ WORD
193*5db2f26eSSascha Wildner  * unit  : mA
194*5db2f26eSSascha Wildner  */
195*5db2f26eSSascha Wildner #define SMBATT_CMD_CHARGING_CURRENT		0x14
196*5db2f26eSSascha Wildner 
197*5db2f26eSSascha Wildner /*
198*5db2f26eSSascha Wildner  * access: READ WORD
199*5db2f26eSSascha Wildner  * unit  : mV
200*5db2f26eSSascha Wildner  * range : 0 .. 65534, 65535 reserved
201*5db2f26eSSascha Wildner  */
202*5db2f26eSSascha Wildner #define SMBATT_CMD_CHARGING_VOLTAGE		0x15
203*5db2f26eSSascha Wildner 
204*5db2f26eSSascha Wildner /* access: READ WORD */
205*5db2f26eSSascha Wildner #define SMBATT_CMD_BATTERY_STATUS		0x16
206*5db2f26eSSascha Wildner 
207*5db2f26eSSascha Wildner /* alarm bits */
208*5db2f26eSSascha Wildner #define SMBATT_BS_OVER_CHARGED_ALARM		(1 << 15)
209*5db2f26eSSascha Wildner #define SMBATT_BS_TERMINATE_CHARGE_ALARM	(1 << 14)
210*5db2f26eSSascha Wildner #define SMBATT_BS_RESERVED_2			(1 << 13)
211*5db2f26eSSascha Wildner #define SMBATT_BS_OVER_TEMP_ALARM		(1 << 12)
212*5db2f26eSSascha Wildner #define SMBATT_BS_TERMINATE_DISCHARGE_ALARM	(1 << 11)
213*5db2f26eSSascha Wildner #define SMBATT_BS_RESERVED_1			(1 << 10)
214*5db2f26eSSascha Wildner #define SMBATT_BS_REMAINING_CAPACITY_ALARM     	(1 << 9)
215*5db2f26eSSascha Wildner #define SMBATT_BS_REMAINING_TIME_ALARM		(1 << 8)
216*5db2f26eSSascha Wildner 
217*5db2f26eSSascha Wildner /* status bits */
218*5db2f26eSSascha Wildner #define SMBATT_BS_INITIALIZED			(1 << 7)
219*5db2f26eSSascha Wildner #define SMBATT_BS_DISCHARGING			(1 << 6)
220*5db2f26eSSascha Wildner #define SMBATT_BS_FULLY_CHARGED			(1 << 5)
221*5db2f26eSSascha Wildner #define SMBATT_BS_FULLY_DISCHARGED		(1 << 4)
222*5db2f26eSSascha Wildner 
223*5db2f26eSSascha Wildner /* error bits */
224*5db2f26eSSascha Wildner #define SMBATT_BS_GET_ERROR(x)			((x) & 0xf)
225*5db2f26eSSascha Wildner #define SMBATT_BS_ERROR_OK			0
226*5db2f26eSSascha Wildner #define SMBATT_BS_ERROR_BUSY			1
227*5db2f26eSSascha Wildner #define SMBATT_BS_ERROR_RESERVED_COMMAND	2
228*5db2f26eSSascha Wildner #define SMBATT_BS_ERROR_UNSUPPORTED_COMMAND	3
229*5db2f26eSSascha Wildner #define SMBATT_BS_ERROR_ACCESS_DENIED		4
230*5db2f26eSSascha Wildner #define SMBATT_BS_ERROR_OVER_UNDER_FLOW		5
231*5db2f26eSSascha Wildner #define SMBATT_BS_ERROR_BADSIZE			6
232*5db2f26eSSascha Wildner #define SMBATT_BS_ERROR_UNKNOWN			7
233*5db2f26eSSascha Wildner 
234*5db2f26eSSascha Wildner /*
235*5db2f26eSSascha Wildner  * access: READ WORD
236*5db2f26eSSascha Wildner  * unit  : cycle(s)
237*5db2f26eSSascha Wildner  * range : 0 .. 65534, 65535 reserved
238*5db2f26eSSascha Wildner  */
239*5db2f26eSSascha Wildner #define SMBATT_CMD_CYCLE_COUNT			0x17
240*5db2f26eSSascha Wildner 
241*5db2f26eSSascha Wildner /*
242*5db2f26eSSascha Wildner  * access: READ WORD
243*5db2f26eSSascha Wildner  * unit  : mAh (CAPACITY_MODE=0) or 10 mWh (CAPACITY_MODE=1)
244*5db2f26eSSascha Wildner  * range : 0..65535 inclusively
245*5db2f26eSSascha Wildner  */
246*5db2f26eSSascha Wildner #define SMBATT_CMD_DESIGN_CAPACITY		0x18
247*5db2f26eSSascha Wildner 
248*5db2f26eSSascha Wildner /*
249*5db2f26eSSascha Wildner  * access: READ WORD
250*5db2f26eSSascha Wildner  * unit  : mV
251*5db2f26eSSascha Wildner  * range : 0..65535 mV
252*5db2f26eSSascha Wildner  */
253*5db2f26eSSascha Wildner #define SMBATT_CMD_DESIGN_VOLTAGE		0x19
254*5db2f26eSSascha Wildner 
255*5db2f26eSSascha Wildner /* access: READ WORD */
256*5db2f26eSSascha Wildner #define SMBATT_CMD_SPECIFICATION_INFO		0x1a
257*5db2f26eSSascha Wildner 
258*5db2f26eSSascha Wildner #define SMBATT_SI_GET_REVISION(x)	(((x) >>  0) & 0xf)
259*5db2f26eSSascha Wildner #define SMBATT_SI_GET_VERSION(x)	(((x) >>  4) & 0xf)
260*5db2f26eSSascha Wildner #define SMBATT_SI_GET_VSCALE(x)		(((x) >>  8) & 0xf)
261*5db2f26eSSascha Wildner #define SMBATT_SI_GET_IPSCALE(x)	(((x) >> 12) & 0xf)
262*5db2f26eSSascha Wildner 
263*5db2f26eSSascha Wildner /* access: READ WORD */
264*5db2f26eSSascha Wildner #define SMBATT_CMD_MANUFACTURE_DATE 		0x1b
265*5db2f26eSSascha Wildner 
266*5db2f26eSSascha Wildner #define SMBATT_MD_GET_DAY(x)		 (((x) >> 0) & 0x1f)
267*5db2f26eSSascha Wildner #define SMBATT_MD_GET_MONTH(x)		 (((x) >> 5) & 0xf)
268*5db2f26eSSascha Wildner #define SMBATT_MD_GET_YEAR(x)		((((x) >> 9) & 0x7f) + 1980)
269*5db2f26eSSascha Wildner 
270*5db2f26eSSascha Wildner /* access: READ WORD */
271*5db2f26eSSascha Wildner #define SMBATT_CMD_SERIAL_NUMBER		0x1c
272*5db2f26eSSascha Wildner 
273*5db2f26eSSascha Wildner /* access: READ BLOCK */
274*5db2f26eSSascha Wildner #define SMBATT_CMD_MANUFACTURER_NAME		0x20
275*5db2f26eSSascha Wildner 
276*5db2f26eSSascha Wildner /* access: READ BLOCK */
277*5db2f26eSSascha Wildner #define SMBATT_CMD_DEVICE_NAME			0x21
278*5db2f26eSSascha Wildner 
279*5db2f26eSSascha Wildner /* access: READ BLOCK */
280*5db2f26eSSascha Wildner #define SMBATT_CMD_DEVICE_CHEMISTRY		0x22
281*5db2f26eSSascha Wildner 
282*5db2f26eSSascha Wildner /* access: READ BLOCK */
283*5db2f26eSSascha Wildner #define SMBATT_CMD_MANUFACTURER_DATA		0x23
284*5db2f26eSSascha Wildner 
285*5db2f26eSSascha Wildner #endif /* !_ACPI_SMBUS_H_ */
286