diff options
author | Diana Z <dzigterman@chromium.org> | 2020-10-19 15:30:33 -0600 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-10-20 21:11:32 +0000 |
commit | edd8b73e8a062b709c2757d6f0085d0fe8146f43 (patch) | |
tree | d7d74b8c70f4ce175e0879560bdb6349ef043f17 /driver/charger/sm5803.c | |
parent | 9fe1b8982470e4a5d300b98470d353afb3a9d8c1 (diff) | |
download | chrome-ec-edd8b73e8a062b709c2757d6f0085d0fe8146f43.tar.gz |
SM5803: Disable ramps on current set in discharge
Disabling the ramps on the current set in discharge reduces issues seen
with dongles drawing current during initial connection.
BRANCH=None
BUG=b:169966133,b:170517117
TEST=on drawlat, confirm CableCreations dongle can now consistently plug
in without having Vbus shut off
Signed-off-by: Diana Z <dzigterman@chromium.org>
Change-Id: I31e9d95cc6ca75b8b59b00aab2b24caad1c8cc72
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2486297
Reviewed-by: Aseda Aboagye <aaboagye@chromium.org>
Diffstat (limited to 'driver/charger/sm5803.c')
-rw-r--r-- | driver/charger/sm5803.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/driver/charger/sm5803.c b/driver/charger/sm5803.c index 14c81469ef..4b996e9e64 100644 --- a/driver/charger/sm5803.c +++ b/driver/charger/sm5803.c @@ -1332,6 +1332,11 @@ static enum ec_error_list sm5803_enable_otg_power(int chgnum, int enabled) reg &= ~SM5803_ANA_EN1_CLS_DISABLE; rv = chg_write8(chgnum, SM5803_REG_ANA_EN1, reg); + /* Disable ramps on current set in discharge */ + rv |= chg_read8(chgnum, SM5803_REG_DISCH_CONF6, ®); + reg |= SM5803_DISCH_CONF6_RAMPS_DIS; + rv |= chg_write8(chgnum, SM5803_REG_DISCH_CONF6, reg); + /* * In order to ensure the Vbus output doesn't overshoot too * much, turn the starting voltage down to 4.8 V and ramp up @@ -1368,6 +1373,11 @@ static enum ec_error_list sm5803_enable_otg_power(int chgnum, int enabled) rv |= chg_write8(chgnum, SM5803_REG_STATUS_DISCHG, status); + /* Re-enable ramps on current set in discharge */ + rv |= chg_read8(chgnum, SM5803_REG_DISCH_CONF6, ®); + reg &= ~SM5803_DISCH_CONF6_RAMPS_DIS; + rv |= chg_write8(chgnum, SM5803_REG_DISCH_CONF6, reg); + /* * PD tasks will always turn off previous sourcing on init. * Protect ourselves from brown out on init by checking if we're |