diff options
author | Aseda Aboagye <aaboagye@google.com> | 2018-09-20 11:58:36 -0700 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-05-05 12:09:36 +0000 |
commit | a51524b9ff16588c30d5b16716a2b8f8cc4f5592 (patch) | |
tree | d8635eb0cd8a6b2c612896e0ec81c2aa79d2c4ba /board | |
parent | d89dd31c472ba642a6a2283180e1e94c8233faa5 (diff) | |
download | chrome-ec-a51524b9ff16588c30d5b16716a2b8f8cc4f5592.tar.gz |
CHERRY-PICK: nocturne: Set input voltage to 9V when batt full.
To reduce our power consumption in our lowest power state, we should
reduce the charger's input voltage down to 9V when the battery is full
and we are no longer charging it. This commit will trigger a PD
negotiation to select a 9V source cap.
BUG=b:116125689
BRANCH=firmware-nocturne-10984.B
TEST=Let battery discharge that it will accept current, plug in
blackcat, verify that it chooses a 15V contract. Wait until battery
gets full and stops accepting current, verify that the new explicit
contract is for 9V.
TEST=While battery is full, turn on AP, verify that contract changes to
15V/3A.
Signed-off-by: Aseda Aboagye <aaboagye@google.com>
Reviewed-on: https://chromium-review.googlesource.com/1239550
Reviewed-by: Furquan Shaikh <furquan@chromium.org>
Commit-Queue: Aseda Aboagye <aaboagye@chromium.org>
Tested-by: Aseda Aboagye <aaboagye@chromium.org>
Change-Id: I8a1ad7b289d4d2a74661658d707c5f9bd44444a9
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2157059
Tested-by: Patryk Duda <pdk@semihalf.com>
Commit-Queue: Patryk Duda <pdk@semihalf.com>
Reviewed-by: Aseda Aboagye <aaboagye@chromium.org>
Diffstat (limited to 'board')
-rw-r--r-- | board/nocturne/battery.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/board/nocturne/battery.c b/board/nocturne/battery.c index 73feb6ecc3..3db5fede33 100644 --- a/board/nocturne/battery.c +++ b/board/nocturne/battery.c @@ -7,9 +7,14 @@ #include "battery.h" #include "battery_smart.h" +#include "charge_manager.h" +#include "chipset.h" #include "common.h" +#include "console.h" #include "ec_commands.h" #include "extpower.h" +#include "hooks.h" +#include "usb_pd.h" /* Shutdown mode parameter to write to manufacturer access register */ #define SB_SHUTDOWN_DATA 0x0010 @@ -84,3 +89,29 @@ enum battery_disconnect_state battery_get_disconnect_state(void) /* No safety fault, battery is disconnected */ return BATTERY_DISCONNECTED; } + +static void reduce_input_voltage_when_full(void) +{ + struct batt_params batt; + int max_pd_voltage_mv; + int active_chg_port; + + active_chg_port = charge_manager_get_active_charge_port(); + if (active_chg_port == CHARGE_PORT_NONE) + return; + + battery_get_params(&batt); + if (!(batt.flags & BATT_FLAG_BAD_STATUS)) { + /* Lower our input voltage to 9V when battery is full. */ + if ((batt.status & STATUS_FULLY_CHARGED) && + chipset_in_state(CHIPSET_STATE_ANY_OFF)) + max_pd_voltage_mv = 9000; + else + max_pd_voltage_mv = PD_MAX_VOLTAGE_MV; + + if (pd_get_max_voltage() != max_pd_voltage_mv) + pd_set_external_voltage_limit(active_chg_port, + max_pd_voltage_mv); + } +} +DECLARE_HOOK(HOOK_SECOND, reduce_input_voltage_when_full, HOOK_PRIO_DEFAULT); |