summaryrefslogtreecommitdiff
path: root/driver/charger/sm5803.c
diff options
context:
space:
mode:
authorDiana Z <dzigterman@chromium.org>2020-08-25 14:13:38 -0600
committerCommit Bot <commit-bot@chromium.org>2020-08-27 00:50:34 +0000
commit9683e474e22632b4b499f2a1dc0cc0133e5a708f (patch)
treefb0189a3da136f5abc782560a9783ac27128f14e /driver/charger/sm5803.c
parent66e48a5203fd3e4d2d12ab8dad5a012c10930f84 (diff)
downloadchrome-ec-9683e474e22632b4b499f2a1dc0cc0133e5a708f.tar.gz
SM5803: Add discharge on AC interface
In order to discharge with AC present, the SM5803 must disable sinking. Note that the sinking disable function will sanity-check to ensure the call doesn't cut off sourcing out to a port partner. BRANCH=None BUG=b:164256610 TEST=make -j buildall Signed-off-by: Diana Z <dzigterman@chromium.org> Change-Id: I550340a36d7b9af5a6e0192753fddcd94ab1a2b6 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2376466 Reviewed-by: Aseda Aboagye <aaboagye@chromium.org>
Diffstat (limited to 'driver/charger/sm5803.c')
-rw-r--r--driver/charger/sm5803.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/driver/charger/sm5803.c b/driver/charger/sm5803.c
index 63ad62ab16..4e274af858 100644
--- a/driver/charger/sm5803.c
+++ b/driver/charger/sm5803.c
@@ -839,6 +839,20 @@ static enum ec_error_list sm5803_set_voltage(int chgnum, int voltage)
return rv;
}
+static enum ec_error_list sm5803_discharge_on_ac(int chgnum, int enable)
+{
+ enum ec_error_list rv = EC_SUCCESS;
+
+ if (enable) {
+ rv = sm5803_vbus_sink_enable(chgnum, 0);
+ } else {
+ if (chgnum == charge_manager_get_active_charge_port())
+ rv = sm5803_vbus_sink_enable(chgnum, 1);
+ }
+
+ return rv;
+}
+
static enum ec_error_list sm5803_get_vbus_voltage(int chgnum, int port,
int *voltage)
{
@@ -1124,6 +1138,7 @@ const struct charger_drv sm5803_drv = {
.set_current = &sm5803_set_current,
.get_voltage = &sm5803_get_voltage,
.set_voltage = &sm5803_set_voltage,
+ .discharge_on_ac = &sm5803_discharge_on_ac,
.get_vbus_voltage = &sm5803_get_vbus_voltage,
.set_input_current = &sm5803_set_input_current,
.get_input_current = &sm5803_get_input_current,