diff options
author | Aseda Aboagye <aaboagye@google.com> | 2016-09-08 15:03:24 -0700 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2016-09-09 14:42:23 -0700 |
commit | 491627741a1951c900396e57a2adac71c1b634e1 (patch) | |
tree | 21a20766bd2fffab07f2df1632ee5c980f8e0437 | |
parent | 5832b34148ea0574d23f39098a5a43e6374b85c5 (diff) | |
download | chrome-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.c | 8 | ||||
-rw-r--r-- | driver/charger/bd99955.h | 10 | ||||
-rw-r--r-- | include/config.h | 9 |
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. */ |