From ca7eba386a9e837cc0ec20a198a26a06066466e4 Mon Sep 17 00:00:00 2001 From: Edward Hill Date: Tue, 8 Jan 2019 11:21:12 -0700 Subject: liara: Reduce input voltage to 5V when battery full To reduce power consumption, reduce USB-C PD input voltage to 5V when the battery is full and the system is off (S5/G3). BUG=b:121383620 BRANCH=grunt TEST=battery 90%: chgsup shows 15V or 20V, when battery full: chgsup shows 5V, power on AP: chgsup shows 15V or 20V Change-Id: I377bc02ca5ec352619b05ef619c7a9e184f547cb Signed-off-by: Edward Hill Reviewed-on: https://chromium-review.googlesource.com/1401018 Reviewed-by: Jett Rink --- board/liara/battery.c | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) (limited to 'board/liara/battery.c') diff --git a/board/liara/battery.c b/board/liara/battery.c index f3066949e6..b88b446473 100644 --- a/board/liara/battery.c +++ b/board/liara/battery.c @@ -6,8 +6,11 @@ */ #include "battery_fuel_gauge.h" +#include "charge_state.h" +#include "chipset.h" #include "common.h" -#include "util.h" +#include "hooks.h" +#include "usb_pd.h" /* * Battery info for all Liara battery types. Note that the fields @@ -162,3 +165,27 @@ const struct board_batt_params board_battery_info[] = { BUILD_ASSERT(ARRAY_SIZE(board_battery_info) == BATTERY_TYPE_COUNT); const enum battery_type DEFAULT_BATTERY_TYPE = BATTERY_PANASONIC; + +/* Lower our input voltage to 5V in S5/G3 when battery is full. */ +static void reduce_input_voltage_when_full(void) +{ + int max_pd_voltage_mv; + int port; + + if (charge_get_percent() == 100 && + chipset_in_or_transitioning_to_state(CHIPSET_STATE_ANY_OFF)) + max_pd_voltage_mv = 5000; + else + max_pd_voltage_mv = PD_MAX_VOLTAGE_MV; + + if (pd_get_max_voltage() != max_pd_voltage_mv) { + for (port = 0; port < CONFIG_USB_PD_PORT_COUNT; port++) + pd_set_external_voltage_limit(port, max_pd_voltage_mv); + } +} +DECLARE_HOOK(HOOK_BATTERY_SOC_CHANGE, reduce_input_voltage_when_full, + HOOK_PRIO_DEFAULT); +DECLARE_HOOK(HOOK_CHIPSET_STARTUP, reduce_input_voltage_when_full, + HOOK_PRIO_DEFAULT); +DECLARE_HOOK(HOOK_CHIPSET_SHUTDOWN, reduce_input_voltage_when_full, + HOOK_PRIO_DEFAULT); -- cgit v1.2.1