summaryrefslogtreecommitdiff
path: root/common/charger_bq24725.c
diff options
context:
space:
mode:
authorRong Chang <rongchang@google.com>2012-02-08 18:40:15 -0800
committerRong Chang <rongchang@chromium.org>2012-02-10 16:12:56 -0800
commit62df62ccd4551ad2133d513be583839d229a9365 (patch)
tree836eab9eec5c5c9c7e4fabf14d6707478a749a1d /common/charger_bq24725.c
parentee7fce76b032f2a5f94f122e8214e9cfc8790f62 (diff)
downloadchrome-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.c44
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, &reg);
+ rv = sbc_read(BQ24725_INPUT_CURRENT, &reg);
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, &reg);
+ rv = sbc_read(SB_CHARGING_CURRENT, &reg);
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 */