diff options
author | Diana Z <dzigterman@chromium.org> | 2020-08-25 14:13:38 -0600 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-08-27 00:50:34 +0000 |
commit | 9683e474e22632b4b499f2a1dc0cc0133e5a708f (patch) | |
tree | fb0189a3da136f5abc782560a9783ac27128f14e /driver/charger | |
parent | 66e48a5203fd3e4d2d12ab8dad5a012c10930f84 (diff) | |
download | chrome-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')
-rw-r--r-- | driver/charger/sm5803.c | 15 |
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, |