summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAseda Aboagye <aaboagye@google.com>2016-09-08 15:03:24 -0700
committerchrome-bot <chrome-bot@chromium.org>2016-09-09 14:42:23 -0700
commit491627741a1951c900396e57a2adac71c1b634e1 (patch)
tree21a20766bd2fffab07f2df1632ee5c980f8e0437
parent5832b34148ea0574d23f39098a5a43e6374b85c5 (diff)
downloadchrome-ec-491627741a1951c900396e57a2adac71c1b634e1.tar.gz
bd99955: Add support for power save mode.
The BD99956 charger has a power save mode that it can enter once VBUS or VCC is removed. This commit adds an optional config option that can be used to select the power save mode: CONFIG_BD99955_POWER_SAVE_MODE By default, no power save mode will be enabled. However, a board can device what level of power savings they wish to use. The levels are the following: BD99955_PWR_SAVE_LOW /* BGATE ON w/ PROCHOT# monitored only system * voltage. */ BD99955_PWR_SAVE_MED /* BGATE ON w/ PROCHOT# monitored only system * voltage every 1ms. */ BD99955_PWR_SAVE_HIGH /* BGATE ON w/o PROCHOT# monitoring. */ BD99955_PWR_SAVE_MAX /* BGATE OFF */ BUG=chrome-os-partner:55631 BRANCH=kevin TEST=make -j buildall Change-Id: Ibab7ad30d5f1ae9917b46b40d6f2800ef19e52dd Signed-off-by: Aseda Aboagye <aaboagye@google.com> Reviewed-on: https://chromium-review.googlesource.com/382877 Commit-Ready: Aseda Aboagye <aaboagye@chromium.org> Tested-by: Aseda Aboagye <aaboagye@chromium.org> Reviewed-by: Shawn N <shawnn@chromium.org>
-rw-r--r--driver/charger/bd99955.c8
-rw-r--r--driver/charger/bd99955.h10
-rw-r--r--include/config.h9
3 files changed, 27 insertions, 0 deletions
diff --git a/driver/charger/bd99955.c b/driver/charger/bd99955.c
index 82457e732b..8d2aaedc7f 100644
--- a/driver/charger/bd99955.c
+++ b/driver/charger/bd99955.c
@@ -621,6 +621,7 @@ int charger_set_voltage(int voltage)
static void bd99995_init(void)
{
int reg;
+ int power_save_mode = BD99955_PWR_SAVE_OFF;
const struct battery_info *bi = battery_get_info();
/* Enable BC1.2 detection on VCC */
@@ -693,6 +694,13 @@ static void bd99995_init(void)
ch_raw_write16(BD99955_CMD_ITRICH_SET,
bi->precharge_current & 0x07C0,
BD99955_EXTENDED_COMMAND);
+
+ /* Power save mode when VBUS/VCC is removed. */
+#ifdef CONFIG_BD99955_POWER_SAVE_MODE
+ power_save_mode = CONFIG_BD99955_POWER_SAVE_MODE;
+#endif
+ ch_raw_write16(BD99955_CMD_SMBREG, power_save_mode,
+ 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 2d67a8a389..a3ab4266df 100644
--- a/driver/charger/bd99955.h
+++ b/driver/charger/bd99955.h
@@ -288,6 +288,16 @@ enum bd99955_charge_port {
#define BD99955_CMD_OTPREG0 0x7A
#define BD99955_CMD_OTPREG1 0x7B
#define BD99955_CMD_SMBREG 0x7C
+/* Normal functionality - power save mode disabled. */
+#define BD99955_PWR_SAVE_OFF 0
+/* BGATE ON w/ PROCHOT# monitored only system voltage. */
+#define BD99955_PWR_SAVE_LOW 0x1
+/* BGATE ON w/ PROCHOT# monitored only system voltage every 1ms. */
+#define BD99955_PWR_SAVE_MED 0x2
+/* BGATE ON w/o PROCHOT# monitoring. */
+#define BD99955_PWR_SAVE_HIGH 0x5
+/* BGATE OFF */
+#define BD99955_PWR_SAVE_MAX 0x6
#define BD99955_CMD_DEBUG_MODE_SET 0x7F
/* Map PD port number to charge port number */
diff --git a/include/config.h b/include/config.h
index df972df887..72ea36dc8c 100644
--- a/include/config.h
+++ b/include/config.h
@@ -380,6 +380,15 @@
#undef CONFIG_BD99955_PRIMARY_CHARGE_PORT_VCC
/*
+ * BD99955 Power Save Mode
+ *
+ * Which power save mode should the charger enter when VBUS is removed. Check
+ * driver/bd99955.h for the power save settings. By default, no power save mode
+ * is enabled.
+ */
+#undef CONFIG_BD99955_POWER_SAVE_MODE
+
+/*
* If the battery temperature sense pin is connected to charger,
* get the battery temperature from the charger.
*/