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