summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShawn Nematbakhsh <shawnn@chromium.org>2016-09-07 14:14:42 -0700
committerchrome-bot <chrome-bot@chromium.org>2016-09-16 21:59:31 -0700
commitcca986c9b4a3d078cfc8cfffd3201b32216a298d (patch)
tree81f52a78d5b5904622bcb03d5e81d27fdd678354
parent7cb5f24596af261a46f0fab9f3f6106cb8d33b99 (diff)
downloadchrome-ec-cca986c9b4a3d078cfc8cfffd3201b32216a298d.tar.gz
charger: bd99955: Adjust charger params at init
- Use 1200KHz DCDC clock. - Set reverse current threshold to -50mV. - Set internal gain to 2x. BUG=chrome-os-partner:57118,chrome-os-partner:56255 TEST=Manual on kevin and reef, verify charging w/ zinger. BRANCH=None Signed-off-by: Shawn Nematbakhsh <shawnn@chromium.org> Change-Id: Ib7188764206743543fb873f303acb7b62977dc3d Reviewed-on: https://chromium-review.googlesource.com/382451 Commit-Ready: Shawn N <shawnn@chromium.org> Tested-by: Shawn N <shawnn@chromium.org> Reviewed-by: Aaron Durbin <adurbin@chromium.org>
-rw-r--r--driver/charger/bd99955.c19
-rw-r--r--driver/charger/bd99955.h11
2 files changed, 25 insertions, 5 deletions
diff --git a/driver/charger/bd99955.c b/driver/charger/bd99955.c
index c392997594..110e03103a 100644
--- a/driver/charger/bd99955.c
+++ b/driver/charger/bd99955.c
@@ -659,11 +659,13 @@ static void bd99995_init(void)
ch_raw_write16(BD99955_CMD_CHGOP_SET1, reg,
BD99955_EXTENDED_COMMAND);
- /* Enable BC1.2 USB charging and DC/DC converter */
+ /* Enable BC1.2 USB charging and DC/DC converter @ 1200KHz */
if (ch_raw_read16(BD99955_CMD_CHGOP_SET2, &reg,
BD99955_EXTENDED_COMMAND))
return;
- reg &= ~(BD99955_CMD_CHGOP_SET2_USB_SUS);
+ reg &= ~(BD99955_CMD_CHGOP_SET2_USB_SUS |
+ BD99955_CMD_CHGOP_SET2_DCDC_CLK_SEL);
+ reg |= BD99955_CMD_CHGOP_SET2_DCDC_CLK_SEL_1200;
ch_raw_write16(BD99955_CMD_CHGOP_SET2, reg,
BD99955_EXTENDED_COMMAND);
@@ -714,6 +716,19 @@ static void bd99995_init(void)
ch_raw_write16(BD99955_CMD_VCC_TH_SET, BD99955_VBUS_DISCHARGE_TH,
BD99955_EXTENDED_COMMAND);
#endif
+
+ /* Unlock debug regs */
+ ch_raw_write16(BD99955_CMD_PROTECT_SET, 0x3c, BD99955_EXTENDED_COMMAND);
+ ch_raw_write16(BD99955_CMD_MAP_SET, 0x2, BD99955_EXTENDED_COMMAND);
+
+ /* Undocumented - reverse current threshold = -50mV */
+ ch_raw_write16(0x14, 0x0202, BD99955_DEBUG_COMMAND);
+ /* Undocumented - internal gain = 2x */
+ ch_raw_write16(0x1a, 0x80, BD99955_DEBUG_COMMAND);
+
+ /* Re-lock debug regs */
+ ch_raw_write16(BD99955_CMD_PROTECT_SET, 0x0, BD99955_EXTENDED_COMMAND);
+ ch_raw_write16(BD99955_CMD_MAP_SET, 0x1, BD99955_EXTENDED_COMMAND);
}
DECLARE_HOOK(HOOK_INIT, bd99995_init, HOOK_PRIO_INIT_EXTPOWER);
diff --git a/driver/charger/bd99955.h b/driver/charger/bd99955.h
index 3cfb9f5192..2c38d5878f 100644
--- a/driver/charger/bd99955.h
+++ b/driver/charger/bd99955.h
@@ -104,9 +104,14 @@ enum bd99955_charge_port {
#define BD99955_CMD_CHGOP_SET1_SDP_CHG_TRIG (1 << 8)
#define BD99955_CMD_CHGOP_SET2 0x0C
-#define BD99955_CMD_CHGOP_SET2_BATT_LEARN (1 << 8)
-#define BD99955_CMD_CHGOP_SET2_CHG_EN (1 << 7)
-#define BD99955_CMD_CHGOP_SET2_USB_SUS (1 << 6)
+#define BD99955_CMD_CHGOP_SET2_BATT_LEARN (1 << 8)
+#define BD99955_CMD_CHGOP_SET2_CHG_EN (1 << 7)
+#define BD99955_CMD_CHGOP_SET2_USB_SUS (1 << 6)
+#define BD99955_CMD_CHGOP_SET2_DCDC_CLK_SEL (3 << 2)
+#define BD99955_CMD_CHGOP_SET2_DCDC_CLK_SEL_600 (0 << 2)
+#define BD99955_CMD_CHGOP_SET2_DCDC_CLK_SEL_857 (1 << 2)
+#define BD99955_CMD_CHGOP_SET2_DCDC_CLK_SEL_1000 (2 << 2)
+#define BD99955_CMD_CHGOP_SET2_DCDC_CLK_SEL_1200 (3 << 2)
#define BD99955_CMD_VBUSCLPS_TH_SET 0x0D
#define BD99955_CMD_VCCCLPS_TH_SET 0x0E