summaryrefslogtreecommitdiff
path: root/driver
diff options
context:
space:
mode:
authorAseda Aboagye <aaboagye@google.com>2016-07-13 14:22:20 -0700
committerchrome-bot <chrome-bot@chromium.org>2016-07-18 21:47:50 -0700
commitb7a604728abe7e332a616b0cad761dec6e501877 (patch)
treef5d233f9b14ef9b36f246e4362ba6ddfd3688d40 /driver
parent3b241c212ecc17dd9151694609045b1aac903953 (diff)
downloadchrome-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>
Diffstat (limited to 'driver')
-rw-r--r--driver/charger/bd99955.c19
-rw-r--r--driver/charger/bd99955.h4
2 files changed, 22 insertions, 1 deletions
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