From 6fb50e909018e367b2a2d62d196b759c4f0b132e Mon Sep 17 00:00:00 2001 From: Kevin K Wong Date: Tue, 28 Apr 2015 00:14:26 -0700 Subject: [PATCH] bq24770: Corrected charger driver used an incorrect SMBUS address. BUG=none TEST=Verified with a SMBus analyzer that only the expected device address is detected on the bus. BRANCH=none Change-Id: Ib8c8589544b9ec11127619a1120eb21f211fd690 Signed-off-by: Kevin K Wong Reviewed-on: https://chromium-review.googlesource.com/267472 Reviewed-by: Alec Berg Reviewed-by: Shawn N Commit-Queue: Divya Jyothi --- driver/charger/bq24773.c | 18 ++++++++++-------- driver/charger/bq24773.h | 15 +++++++++------ 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/driver/charger/bq24773.c b/driver/charger/bq24773.c index 23b9a1b428..0c79f8acca 100644 --- a/driver/charger/bq24773.c +++ b/driver/charger/bq24773.c @@ -197,16 +197,19 @@ int charger_post_init(void) #ifndef BOARD_SAMUS /* Turn off PROCHOT warning */ - rv = i2c_write8(I2C_PORT_CHARGER, BQ24773_ADDR, - BQ24773_PROCHOT_OPTION1, 0); + rv = raw_read16(REG_PROCHOT_OPTION1, &option); + if (rv) + return rv; + + option &= ~PROCHOT_OPTION1_SELECTOR_MASK; + + rv = raw_write16(REG_PROCHOT_OPTION1, option); #else /* On Samus, use PROCHOT warning to detect charging problems */ /* Turn on PROCHOT warning */ - rv = i2c_write16(I2C_PORT_CHARGER, BQ24773_ADDR, - BQ24773_PROCHOT_OPTION1, 0x8120); + rv = raw_write16(REG_PROCHOT_OPTION1, 0x8120); /* Set PROCHOT ICRIT warning when IADP is >120% of IDPM */ - rv |= i2c_write16(I2C_PORT_CHARGER, BQ24773_ADDR, - BQ24773_PROCHOT_OPTION0, 0x1b54); + rv |= raw_write16(REG_PROCHOT_OPTION0, 0x1b54); #endif if (rv) @@ -214,8 +217,7 @@ int charger_post_init(void) #ifdef CONFIG_CHARGER_ILIM_PIN_DISABLED /* Read the external ILIM pin enabled flag. */ - rv = i2c_read16(I2C_PORT_CHARGER, BQ24773_ADDR, - BQ24773_CHARGE_OPTION2, &option2); + rv = raw_read16(REG_CHARGE_OPTION2, &option2); if (rv) return rv; diff --git a/driver/charger/bq24773.h b/driver/charger/bq24773.h index 4e1e68a6b9..944ac2a814 100644 --- a/driver/charger/bq24773.h +++ b/driver/charger/bq24773.h @@ -19,8 +19,8 @@ #define BQ24770_CHARGE_OPTION0 0x12 #define BQ24770_CHARGE_OPTION1 0x3B #define BQ24770_CHARGE_OPTION2 0x38 -#define BQ24770_PROTECT_OPTION0 0x3C -#define BQ24770_PROTECT_OPTION1 0x3D +#define BQ24770_PROCHOT_OPTION0 0x3C +#define BQ24770_PROCHOT_OPTION1 0x3D #define BQ24770_CHARGE_CURRENT 0x14 #define BQ24770_MAX_CHARGE_VOLTAGE 0x15 #define BQ24770_MIN_SYSTEM_VOLTAGE 0x3E @@ -46,6 +46,9 @@ #define OPTION2_EN_EXTILIM (1 << 7) +/* Prochot Option bits */ +#define PROCHOT_OPTION1_SELECTOR_MASK 0x7f /* [6:0] PROCHOT SELECTOR */ + /* ChargeCurrent Register - 0x14 (mA) */ #define CHARGE_I_OFF 0 #define CHARGE_I_MIN 128 @@ -69,8 +72,8 @@ #define REG_CHARGE_OPTION0 BQ24770_CHARGE_OPTION0 #define REG_CHARGE_OPTION1 BQ24770_CHARGE_OPTION1 #define REG_CHARGE_OPTION2 BQ24770_CHARGE_OPTION2 - #define REG_PROTECT_OPTION0 BQ24770_PROTECT_OPTION0 - #define REG_PROTECT_OPTION1 BQ24770_PROTECT_OPTION1 + #define REG_PROCHOT_OPTION0 BQ24770_PROCHOT_OPTION0 + #define REG_PROCHOT_OPTION1 BQ24770_PROCHOT_OPTION1 #define REG_CHARGE_CURRENT BQ24770_CHARGE_CURRENT #define REG_MAX_CHARGE_VOLTAGE BQ24770_MAX_CHARGE_VOLTAGE #define REG_MIN_SYSTEM_VOLTAGE BQ24770_MIN_SYSTEM_VOLTAGE @@ -85,8 +88,8 @@ #define REG_CHARGE_OPTION0 BQ24773_CHARGE_OPTION0 #define REG_CHARGE_OPTION1 BQ24773_CHARGE_OPTION1 #define REG_CHARGE_OPTION2 BQ24773_CHARGE_OPTION2 - #define REG_PROTECT_OPTION0 BQ24773_PROTECT_OPTION0 - #define REG_PROTECT_OPTION1 BQ24773_PROTECT_OPTION1 + #define REG_PROCHOT_OPTION0 BQ24773_PROCHOT_OPTION0 + #define REG_PROCHOT_OPTION1 BQ24773_PROCHOT_OPTION1 #define REG_CHARGE_CURRENT BQ24773_CHARGE_CURRENT #define REG_MAX_CHARGE_VOLTAGE BQ24773_MAX_CHARGE_VOLTAGE #define REG_MIN_SYSTEM_VOLTAGE BQ24773_MIN_SYSTEM_VOLTAGE