summaryrefslogtreecommitdiff
path: root/board/nocturne
diff options
context:
space:
mode:
authorAseda Aboagye <aaboagye@google.com>2018-09-20 11:58:36 -0700
committerCommit Bot <commit-bot@chromium.org>2020-05-05 12:09:36 +0000
commita51524b9ff16588c30d5b16716a2b8f8cc4f5592 (patch)
treed8635eb0cd8a6b2c612896e0ec81c2aa79d2c4ba /board/nocturne
parentd89dd31c472ba642a6a2283180e1e94c8233faa5 (diff)
downloadchrome-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/nocturne')
-rw-r--r--board/nocturne/battery.c31
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);