diff options
Diffstat (limited to 'include/battery_smart.h')
-rw-r--r-- | include/battery_smart.h | 271 |
1 files changed, 136 insertions, 135 deletions
diff --git a/include/battery_smart.h b/include/battery_smart.h index c37b7c692c..f07b967861 100644 --- a/include/battery_smart.h +++ b/include/battery_smart.h @@ -1,4 +1,4 @@ -/* Copyright 2012 The Chromium OS Authors. All rights reserved. +/* Copyright 2012 The ChromiumOS Authors * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. * @@ -11,167 +11,168 @@ #include "common.h" /* Smart battery and charger I2C address */ -#define BATTERY_ADDR_FLAGS 0x0B -#define CHARGER_ADDR_FLAGS 0x09 +#define BATTERY_ADDR_FLAGS 0x0B +#define CHARGER_ADDR_FLAGS 0x09 /* Charger functions */ -#define SB_CHARGER_SPEC_INFO 0x11 -#define SB_CHARGE_MODE 0x12 -#define SB_CHARGER_STATUS 0x13 -#define SB_CHARGING_CURRENT 0x14 -#define SB_CHARGING_VOLTAGE 0x15 -#define SB_ALARM_WARNING 0x16 +#define SB_CHARGER_SPEC_INFO 0x11 +#define SB_CHARGE_MODE 0x12 +#define SB_CHARGER_STATUS 0x13 +#define SB_CHARGING_CURRENT 0x14 +#define SB_CHARGING_VOLTAGE 0x15 +#define SB_ALARM_WARNING 0x16 /* Battery functions */ -#define SB_MANUFACTURER_ACCESS 0x00 -#define SB_REMAINING_CAPACITY_ALARM 0x01 -#define SB_REMAINING_TIME_ALARM 0x02 -#define SB_BATTERY_MODE 0x03 -#define SB_AT_RATE 0x04 -#define SB_AT_RATE_TIME_TO_FULL 0x05 -#define SB_AT_RATE_TIME_TO_EMPTY 0x06 -#define SB_AT_RATE_OK 0x07 -#define SB_TEMPERATURE 0x08 -#define SB_VOLTAGE 0x09 -#define SB_CURRENT 0x0a -#define SB_AVERAGE_CURRENT 0x0b -#define SB_MAX_ERROR 0x0c -#define SB_RELATIVE_STATE_OF_CHARGE 0x0d -#define SB_ABSOLUTE_STATE_OF_CHARGE 0x0e -#define SB_REMAINING_CAPACITY 0x0f -#define SB_FULL_CHARGE_CAPACITY 0x10 -#define SB_RUN_TIME_TO_EMPTY 0x11 -#define SB_AVERAGE_TIME_TO_EMPTY 0x12 -#define SB_AVERAGE_TIME_TO_FULL 0x13 -#define SB_CHARGING_CURRENT 0x14 -#define SB_CHARGING_VOLTAGE 0x15 -#define SB_BATTERY_STATUS 0x16 -#define SB_CYCLE_COUNT 0x17 -#define SB_DESIGN_CAPACITY 0x18 -#define SB_DESIGN_VOLTAGE 0x19 -#define SB_SPECIFICATION_INFO 0x1a -#define SB_MANUFACTURE_DATE 0x1b -#define SB_SERIAL_NUMBER 0x1c -#define SB_MANUFACTURER_NAME 0x20 -#define SB_DEVICE_NAME 0x21 -#define SB_DEVICE_CHEMISTRY 0x22 -#define SB_MANUFACTURER_DATA 0x23 -#define SB_OPTIONAL_MFG_FUNC1 0x3C -#define SB_OPTIONAL_MFG_FUNC2 0x3D -#define SB_OPTIONAL_MFG_FUNC3 0x3E -#define SB_OPTIONAL_MFG_FUNC4 0x3F +#define SB_MANUFACTURER_ACCESS 0x00 +#define SB_REMAINING_CAPACITY_ALARM 0x01 +#define SB_REMAINING_TIME_ALARM 0x02 +#define SB_BATTERY_MODE 0x03 +#define SB_AT_RATE 0x04 +#define SB_AT_RATE_TIME_TO_FULL 0x05 +#define SB_AT_RATE_TIME_TO_EMPTY 0x06 +#define SB_AT_RATE_OK 0x07 +#define SB_TEMPERATURE 0x08 +#define SB_VOLTAGE 0x09 +#define SB_CURRENT 0x0a +#define SB_AVERAGE_CURRENT 0x0b +#define SB_MAX_ERROR 0x0c +#define SB_RELATIVE_STATE_OF_CHARGE 0x0d +#define SB_ABSOLUTE_STATE_OF_CHARGE 0x0e +#define SB_REMAINING_CAPACITY 0x0f +#define SB_FULL_CHARGE_CAPACITY 0x10 +#define SB_RUN_TIME_TO_EMPTY 0x11 +#define SB_AVERAGE_TIME_TO_EMPTY 0x12 +#define SB_AVERAGE_TIME_TO_FULL 0x13 +#define SB_CHARGING_CURRENT 0x14 +#define SB_CHARGING_VOLTAGE 0x15 +#define SB_BATTERY_STATUS 0x16 +#define SB_CYCLE_COUNT 0x17 +#define SB_DESIGN_CAPACITY 0x18 +#define SB_DESIGN_VOLTAGE 0x19 +#define SB_SPECIFICATION_INFO 0x1a +#define SB_MANUFACTURE_DATE 0x1b +#define SB_SERIAL_NUMBER 0x1c +#define SB_MANUFACTURER_NAME 0x20 +#define SB_DEVICE_NAME 0x21 +#define SB_DEVICE_CHEMISTRY 0x22 +#define SB_MANUFACTURER_DATA 0x23 +#define SB_OPTIONAL_MFG_FUNC1 0x3C +#define SB_OPTIONAL_MFG_FUNC2 0x3D +#define SB_OPTIONAL_MFG_FUNC3 0x3E +#define SB_OPTIONAL_MFG_FUNC4 0x3F /* Extension of smart battery spec, may not be supported on all platforms */ -#define SB_PACK_STATUS 0x43 -#define SB_ALT_MANUFACTURER_ACCESS 0x44 -#define SB_MANUFACTURE_INFO 0x70 +#define SB_PACK_STATUS 0x43 +#define SB_ALT_MANUFACTURER_ACCESS 0x44 +#define SB_MANUFACTURE_INFO 0x70 /* Battery mode */ #define MODE_INTERNAL_CHARGE_CONTROLLER BIT(0) -#define MODE_PRIMARY_BATTERY_SUPPORT BIT(1) -#define MODE_CONDITION_CYCLE BIT(7) -#define MODE_CHARGE_CONTROLLER_ENABLED BIT(8) -#define MODE_PRIMARY_BATTERY BIT(9) -#define MODE_ALARM BIT(13) -#define MODE_CHARGER BIT(14) -#define MODE_CAPACITY BIT(15) +#define MODE_PRIMARY_BATTERY_SUPPORT BIT(1) +#define MODE_CONDITION_CYCLE BIT(7) +#define MODE_CHARGE_CONTROLLER_ENABLED BIT(8) +#define MODE_PRIMARY_BATTERY BIT(9) +#define MODE_ALARM BIT(13) +#define MODE_CHARGER BIT(14) +#define MODE_CAPACITY BIT(15) /* Battery status */ -#define STATUS_ERR_CODE_MASK 0xf -#define STATUS_CODE_OK 0 -#define STATUS_CODE_BUSY 1 -#define STATUS_CODE_RESERVED 2 -#define STATUS_CODE_UNSUPPORTED 3 -#define STATUS_CODE_ACCESS_DENIED 4 -#define STATUS_CODE_OVERUNDERFLOW 5 -#define STATUS_CODE_BADSIZE 6 -#define STATUS_CODE_UNKNOWN_ERROR 7 -#define STATUS_FULLY_DISCHARGED BIT(4) -#define STATUS_FULLY_CHARGED BIT(5) -#define STATUS_DISCHARGING BIT(6) -#define STATUS_INITIALIZED BIT(7) -#define STATUS_REMAINING_TIME_ALARM BIT(8) +#define STATUS_ERR_CODE_MASK 0xf +#define STATUS_CODE_OK 0 +#define STATUS_CODE_BUSY 1 +#define STATUS_CODE_RESERVED 2 +#define STATUS_CODE_UNSUPPORTED 3 +#define STATUS_CODE_ACCESS_DENIED 4 +#define STATUS_CODE_OVERUNDERFLOW 5 +#define STATUS_CODE_BADSIZE 6 +#define STATUS_CODE_UNKNOWN_ERROR 7 +#define STATUS_FULLY_DISCHARGED BIT(4) +#define STATUS_FULLY_CHARGED BIT(5) +#define STATUS_DISCHARGING BIT(6) +#define STATUS_INITIALIZED BIT(7) +#define STATUS_REMAINING_TIME_ALARM BIT(8) #define STATUS_REMAINING_CAPACITY_ALARM BIT(9) #define STATUS_TERMINATE_DISCHARGE_ALARM BIT(11) -#define STATUS_OVERTEMP_ALARM BIT(12) -#define STATUS_TERMINATE_CHARGE_ALARM BIT(14) -#define STATUS_OVERCHARGED_ALARM BIT(15) +#define STATUS_OVERTEMP_ALARM BIT(12) +#define STATUS_TERMINATE_CHARGE_ALARM BIT(14) +#define STATUS_OVERCHARGED_ALARM BIT(15) /* Battery Spec Info */ -#define BATTERY_SPEC_REVISION_MASK 0x000F -#define BATTERY_SPEC_REVISION_SHIFT 0 -#define BATTERY_SPEC_VERSION_MASK 0x00F0 -#define BATTERY_SPEC_VERSION_SHIFT 4 -#define BATTERY_SPEC_VSCALE_MASK 0x0F00 -#define BATTERY_SPEC_VSCALE_SHIFT 8 -#define BATTERY_SPEC_IPSCALE_MASK 0xF000 -#define BATTERY_SPEC_IPSCALE_SHIFT 12 - -#define BATTERY_SPEC_VERSION(INFO) ((INFO & BATTERY_SPEC_VERSION_MASK) >> \ - BATTERY_SPEC_VERSION_SHIFT) +#define BATTERY_SPEC_REVISION_MASK 0x000F +#define BATTERY_SPEC_REVISION_SHIFT 0 +#define BATTERY_SPEC_VERSION_MASK 0x00F0 +#define BATTERY_SPEC_VERSION_SHIFT 4 +#define BATTERY_SPEC_VSCALE_MASK 0x0F00 +#define BATTERY_SPEC_VSCALE_SHIFT 8 +#define BATTERY_SPEC_IPSCALE_MASK 0xF000 +#define BATTERY_SPEC_IPSCALE_SHIFT 12 + +#define BATTERY_SPEC_VERSION(INFO) \ + ((INFO & BATTERY_SPEC_VERSION_MASK) >> BATTERY_SPEC_VERSION_SHIFT) /* Smart battery version info */ -#define BATTERY_SPEC_VER_1_0 1 -#define BATTERY_SPEC_VER_1_1 2 -#define BATTERY_SPEC_VER_1_1_WITH_PEC 3 +#define BATTERY_SPEC_VER_1_0 1 +#define BATTERY_SPEC_VER_1_1 2 +#define BATTERY_SPEC_VER_1_1_WITH_PEC 3 /* Smart battery revision info */ -#define BATTERY_SPEC_REVISION_1 1 +#define BATTERY_SPEC_REVISION_1 1 /* Charger alarm warning */ -#define ALARM_OVER_CHARGED 0x8000 -#define ALARM_TERMINATE_CHARGE 0x4000 -#define ALARM_RESERVED_2000 0x2000 -#define ALARM_OVER_TEMP 0x1000 -#define ALARM_TERMINATE_DISCHARGE 0x0800 -#define ALARM_RESERVED_0400 0x0400 -#define ALARM_REMAINING_CAPACITY 0x0200 -#define ALARM_REMAINING_TIME 0x0100 -#define ALARM_STATUS_INITIALIZE 0x0080 -#define ALARM_STATUS_DISCHARGING 0x0040 -#define ALARM_STATUS_FULLY_CHARGED 0x0020 -#define ALARM_STATUS_FULLY_DISCHARGED 0x0010 +#define ALARM_OVER_CHARGED 0x8000 +#define ALARM_TERMINATE_CHARGE 0x4000 +#define ALARM_RESERVED_2000 0x2000 +#define ALARM_OVER_TEMP 0x1000 +#define ALARM_TERMINATE_DISCHARGE 0x0800 +#define ALARM_RESERVED_0400 0x0400 +#define ALARM_REMAINING_CAPACITY 0x0200 +#define ALARM_REMAINING_TIME 0x0100 +#define ALARM_STATUS_INITIALIZE 0x0080 +#define ALARM_STATUS_DISCHARGING 0x0040 +#define ALARM_STATUS_FULLY_CHARGED 0x0020 +#define ALARM_STATUS_FULLY_DISCHARGED 0x0010 /* Charge mode */ -#define CHARGE_FLAG_INHIBIT_CHARGE BIT(0) -#define CHARGE_FLAG_ENABLE_POLLING BIT(1) -#define CHARGE_FLAG_POR_RESET BIT(2) -#define CHARGE_FLAG_RESET_TO_ZERO BIT(3) +#define CHARGE_FLAG_INHIBIT_CHARGE BIT(0) +#define CHARGE_FLAG_ENABLE_POLLING BIT(1) +#define CHARGE_FLAG_POR_RESET BIT(2) +#define CHARGE_FLAG_RESET_TO_ZERO BIT(3) /* Charger status */ -#define CHARGER_CHARGE_INHIBITED BIT(0) -#define CHARGER_POLLING_ENABLED BIT(1) -#define CHARGER_VOLTAGE_NOTREG BIT(2) -#define CHARGER_CURRENT_NOTREG BIT(3) -#define CHARGER_LEVEL_2 BIT(4) -#define CHARGER_LEVEL_3 BIT(5) -#define CHARGER_CURRENT_OR BIT(6) -#define CHARGER_VOLTAGE_OR BIT(7) -#define CHARGER_RES_OR BIT(8) -#define CHARGER_RES_COLD BIT(9) -#define CHARGER_RES_HOT BIT(10) -#define CHARGER_RES_UR BIT(11) -#define CHARGER_ALARM_INHIBITED BIT(12) -#define CHARGER_POWER_FAIL BIT(13) -#define CHARGER_BATTERY_PRESENT BIT(14) -#define CHARGER_AC_PRESENT BIT(15) +#define CHARGER_CHARGE_INHIBITED BIT(0) +#define CHARGER_POLLING_ENABLED BIT(1) +#define CHARGER_VOLTAGE_NOTREG BIT(2) +#define CHARGER_CURRENT_NOTREG BIT(3) +#define CHARGER_LEVEL_2 BIT(4) +#define CHARGER_LEVEL_3 BIT(5) +#define CHARGER_CURRENT_OR BIT(6) +#define CHARGER_VOLTAGE_OR BIT(7) +#define CHARGER_RES_OR BIT(8) +#define CHARGER_RES_COLD BIT(9) +#define CHARGER_RES_HOT BIT(10) +#define CHARGER_RES_UR BIT(11) +#define CHARGER_ALARM_INHIBITED BIT(12) +#define CHARGER_POWER_FAIL BIT(13) +#define CHARGER_BATTERY_PRESENT BIT(14) +#define CHARGER_AC_PRESENT BIT(15) +#define CHARGER_BYPASS_MODE BIT(16) /* Charger specification info */ -#define INFO_CHARGER_SPEC(INFO) ((INFO) & 0xf) -#define INFO_SELECTOR_SUPPORT(INFO) (((INFO) >> 4) & 1) +#define INFO_CHARGER_SPEC(INFO) ((INFO)&0xf) +#define INFO_SELECTOR_SUPPORT(INFO) (((INFO) >> 4) & 1) /* Manufacturer Access parameters */ -#define PARAM_SAFETY_STATUS 0x51 -#define PARAM_OPERATION_STATUS 0x54 -#define PARAM_FIRMWARE_RUNTIME 0x62 +#define PARAM_SAFETY_STATUS 0x51 +#define PARAM_OPERATION_STATUS 0x54 +#define PARAM_FIRMWARE_RUNTIME 0x62 /* Operation status masks -- 6 byte reply */ /* reply[3] */ -#define BATTERY_DISCHARGING_DISABLED 0x20 -#define BATTERY_CHARGING_DISABLED 0x40 +#define BATTERY_DISCHARGING_DISABLED 0x20 +#define BATTERY_CHARGING_DISABLED 0x40 /* Battery manufacture date */ -#define MANUFACTURE_DATE_DAY_MASK 0x001F -#define MANUFACTURE_DATE_DAY_SHIFT 0 -#define MANUFACTURE_DATE_MONTH_MASK 0x01E0 -#define MANUFACTURE_DATE_MONTH_SHIFT 5 -#define MANUFACTURE_DATE_YEAR_MASK 0xFE00 -#define MANUFACTURE_DATE_YEAR_SHIFT 9 -#define MANUFACTURE_DATE_YEAR_OFFSET 1980 -#define MANUFACTURE_RUNTIME_SIZE 4 +#define MANUFACTURE_DATE_DAY_MASK 0x001F +#define MANUFACTURE_DATE_DAY_SHIFT 0 +#define MANUFACTURE_DATE_MONTH_MASK 0x01E0 +#define MANUFACTURE_DATE_MONTH_SHIFT 5 +#define MANUFACTURE_DATE_YEAR_MASK 0xFE00 +#define MANUFACTURE_DATE_YEAR_SHIFT 9 +#define MANUFACTURE_DATE_YEAR_OFFSET 1980 +#define MANUFACTURE_RUNTIME_SIZE 4 /* Read from battery */ int sb_read(int cmd, int *param); |