diff options
author | Rong Chang <rongchang@google.com> | 2012-02-08 18:40:15 -0800 |
---|---|---|
committer | Rong Chang <rongchang@chromium.org> | 2012-02-10 16:12:56 -0800 |
commit | 62df62ccd4551ad2133d513be583839d229a9365 (patch) | |
tree | 836eab9eec5c5c9c7e4fabf14d6707478a749a1d /common/charger_bq24725.c | |
parent | ee7fce76b032f2a5f94f122e8214e9cfc8790f62 (diff) | |
download | chrome-ec-62df62ccd4551ad2133d513be583839d229a9365.tar.gz |
Add basic smart battery driver
This change adds a common part of smart battery driver. Following
features are not implemented, or in chip specific driver:
Battery access control, authentication, factory mode
Manufacturer access/data commands
Block read/write, device name, flash data
Chip specific features, per cell info/temp/capacity
Signed-off-by: Rong Chang <rongchang@google.com>
BUG=chrome-os-partner:7856
TEST=console command check battery staus
[unplug power]
> battery
[check voltage,current,capacity,time to empty]
[plug power]
> charger voltage 8400
> charger current 4250
> battery
[check current,time to full]
> charger input 4032
> battery
[check current,time to full]
[wait 130 seconds, charger watch dog timeout]
> battery
[check current]
Change-Id: Ifac17a0892f52e8f37eebc14b00e71f18360776c
Signed-off-by: Rong Chang <rongchang@chromium.org>
Diffstat (limited to 'common/charger_bq24725.c')
-rw-r--r-- | common/charger_bq24725.c | 44 |
1 files changed, 22 insertions, 22 deletions
diff --git a/common/charger_bq24725.c b/common/charger_bq24725.c index 5b70d0d0c5..e5f8b3bc74 100644 --- a/common/charger_bq24725.c +++ b/common/charger_bq24725.c @@ -44,8 +44,8 @@ static const struct charger_info bq24725_charger_info = { static int charger_set_input_current(int input_current) { - return i2c_write16(I2C_PORT_CHARGER, CHARGER_ADDR, - BQ24725_INPUT_CURRENT, CURRENT_TO_REG(input_current, R_AC)); + return sbc_write(BQ24725_INPUT_CURRENT, + CURRENT_TO_REG(input_current, R_AC)); } static int charger_get_input_current(int *input_current) @@ -53,8 +53,7 @@ static int charger_get_input_current(int *input_current) int rv; int reg; - rv = i2c_read16(I2C_PORT_CHARGER, CHARGER_ADDR, - BQ24725_INPUT_CURRENT, ®); + rv = sbc_read(BQ24725_INPUT_CURRENT, ®); if (rv) return rv; @@ -65,26 +64,22 @@ static int charger_get_input_current(int *input_current) static int charger_manufacturer_id(int *id) { - return i2c_read16(I2C_PORT_CHARGER, CHARGER_ADDR, - BQ24725_MANUFACTURE_ID, id); + return sbc_read(BQ24725_MANUFACTURE_ID, id); } static int charger_device_id(int *id) { - return i2c_read16(I2C_PORT_CHARGER, CHARGER_ADDR, - BQ24725_DEVICE_ID, id); + return sbc_read(BQ24725_DEVICE_ID, id); } static int charger_get_option(int *option) { - return i2c_read16(I2C_PORT_CHARGER, CHARGER_ADDR, - BQ24725_CHARGE_OPTION, option); + return sbc_read(BQ24725_CHARGE_OPTION, option); } static int charger_set_option(int option) { - return i2c_write16(I2C_PORT_CHARGER, CHARGER_ADDR, - BQ24725_CHARGE_OPTION, option); + return sbc_write(BQ24725_CHARGE_OPTION, option); } /* charger interfaces */ @@ -132,8 +127,7 @@ int charger_get_current(int *current) int rv; int reg; - rv = i2c_read16(I2C_PORT_CHARGER, CHARGER_ADDR, - SB_CHARGING_CURRENT, ®); + rv = sbc_read(SB_CHARGING_CURRENT, ®); if (rv) return rv; @@ -143,32 +137,38 @@ int charger_get_current(int *current) int charger_set_current(int current) { - return i2c_write16(I2C_PORT_CHARGER, CHARGER_ADDR, - SB_CHARGING_CURRENT, CURRENT_TO_REG(current, R_SNS)); + return sbc_write(SB_CHARGING_CURRENT, CURRENT_TO_REG(current, R_SNS)); } int charger_get_voltage(int *voltage) { - return i2c_read16(I2C_PORT_CHARGER, CHARGER_ADDR, - SB_CHARGING_VOLTAGE, voltage); + return sbc_read(SB_CHARGING_VOLTAGE, voltage); } int charger_set_voltage(int voltage) { - return i2c_write16(I2C_PORT_CHARGER, CHARGER_ADDR, - SB_CHARGING_VOLTAGE, voltage); + return sbc_write(SB_CHARGING_VOLTAGE, voltage); } /* Initialization */ int charger_init(void) { /* bq24725 power on reset state: - * charger watch dog timer = 175sec - * charger input current limit = 4096 * 10 / RS_AC + * watch dog timer = 175 sec + * input current limit = ~1/2 maximum setting + * charging voltage = 0 mV + * charging current = 0 mA */ return EC_SUCCESS; } +/* Charging power state initialization */ +int charger_post_init(void) +{ + /* Set charger input current limit */ + return charger_set_input_current(CONFIG_CHARGER_INPUT_CURRENT); +} + /* Console commands */ |