diff options
author | Aseda Aboagye <aaboagye@google.com> | 2016-07-13 14:22:20 -0700 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2016-07-18 21:47:50 -0700 |
commit | b7a604728abe7e332a616b0cad761dec6e501877 (patch) | |
tree | f5d233f9b14ef9b36f246e4362ba6ddfd3688d40 | |
parent | 3b241c212ecc17dd9151694609045b1aac903953 (diff) | |
download | chrome-ec-b7a604728abe7e332a616b0cad761dec6e501877.tar.gz |
bd99955: Make changes for new OTP change.
There's a new OTP change for the BD99955 and therefore the following
changes needed to be made.
- Change VFASTCHG_SET1 to 8.704V before CHG_EN is set to 1.
- Change VSYS_REG to 6.144V when starting Fast Charging.
- Change VSYS_REG back to 8.906V when Fast Charge is finished.
- Wait for 50ms to set CHG_EN to off (0) after Fast Charging has ended.
BUG=chrome-os-partner:55220
BUG=chrome-os-partner:55238
BRANCH=None
TEST=Flash kevin, plug discharged battery in. Plug AC in. `bd99955 r
0x11 1' and verify that VSYSREG is set to 0x1800 (6144mV).
TEST=`bd99955 r 0x1a 1' and verify that VFASTCHARGE is set to
0x2200 (8704mV).
TEST=Remove battery. `bd99955 r 0x11 1' and verify that VSYSREG is set
to 0x2300 (8960 mV).
TEST=Plug in battery and let charge to full. Verify that VSYSREG is set
to 0x2300 (8960 mV).
Change-Id: I5e5ca2cdcd4ead383416901c904df1e6fe5a9e28
Signed-off-by: Aseda Aboagye <aaboagye@google.com>
Reviewed-on: https://chromium-review.googlesource.com/360421
Commit-Ready: Aseda Aboagye <aaboagye@chromium.org>
Tested-by: Aseda Aboagye <aaboagye@chromium.org>
Reviewed-by: Mary Ruthven <mruthven@chromium.org>
-rw-r--r-- | common/charge_state_v2.c | 4 | ||||
-rw-r--r-- | driver/charger/bd99955.c | 19 | ||||
-rw-r--r-- | driver/charger/bd99955.h | 4 |
3 files changed, 26 insertions, 1 deletions
diff --git a/common/charge_state_v2.c b/common/charge_state_v2.c index 60875d0ff6..95b46a63ed 100644 --- a/common/charge_state_v2.c +++ b/common/charge_state_v2.c @@ -415,7 +415,11 @@ static int charge_request(int voltage, int current) * Set the charge inhibit bit when possible as it appears to save * power in some cases (e.g. Nyan with BQ24735). */ +#ifdef CONFIG_CHARGER_BD99955 + if (current > 0) +#else if (voltage > 0 || current > 0) +#endif r3 = charger_set_mode(0); else r3 = charger_set_mode(CHARGE_FLAG_INHIBIT_CHARGE); diff --git a/driver/charger/bd99955.c b/driver/charger/bd99955.c index e59543bfce..f02249b068 100644 --- a/driver/charger/bd99955.c +++ b/driver/charger/bd99955.c @@ -393,6 +393,15 @@ static void usb_charger_process(enum bd99955_charge_port port) } #endif /* HAS_TASK_USB_CHG */ +static int bd99955_set_vsysreg(int voltage) +{ + /* VSYS Regulation voltage is in 64mV steps. */ + voltage &= ~0x3F; + + return ch_raw_write16(BD99955_CMD_VSYSREG_SETa, voltage, + BD99955_EXTENDED_COMMAND); +} + /* chip specific interfaces */ int charger_set_input_current(int input_current) @@ -548,7 +557,15 @@ int charger_set_mode(int mode) { int rv; - rv = bd99955_charger_enable(mode & CHARGE_FLAG_INHIBIT_CHARGE ? 0 : 1); + if (mode & CHARGE_FLAG_INHIBIT_CHARGE) { + rv = bd99955_set_vsysreg(DISCHARGE_VSYSREG); + msleep(50); + rv |= bd99955_charger_enable(0); + } else { + rv = bd99955_charger_enable(1); + msleep(1); + rv |= bd99955_set_vsysreg(CHARGE_VSYSREG); + } if (rv) return rv; diff --git a/driver/charger/bd99955.h b/driver/charger/bd99955.h index f6ef29a2c6..d53c1faf7d 100644 --- a/driver/charger/bd99955.h +++ b/driver/charger/bd99955.h @@ -39,6 +39,10 @@ enum bd99955_charge_port { #define INPUT_I_MIN 512 #define INPUT_I_STEP 32 +/* VSYSREG settings */ +#define DISCHARGE_VSYSREG 8960 +#define CHARGE_VSYSREG 6144 + /* Battery Charger Commands */ #define BD99955_CMD_CHG_CURRENT 0x14 #define BD99955_CMD_CHG_VOLTAGE 0x15 |