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