diff options
author | Edward Hill <ecgh@chromium.org> | 2020-09-29 20:42:49 -0600 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-09-30 08:33:23 +0000 |
commit | 4f2bbac0770ace9ffe24eefbc26506f6dfe81303 (patch) | |
tree | 9d4860829483375ac358af99dd4470d122e7a048 /baseboard | |
parent | 9e7a0e936e66731ad73893b1304eebbca8a1e206 (diff) | |
download | chrome-ec-4f2bbac0770ace9ffe24eefbc26506f6dfe81303.tar.gz |
zork: Workaround VBUS=0 for charge_ramp_sw
The ISL9241 sometimes incorrectly reports 0 for unknown
reason, causing ramp to stop at 0.5A. Workaround this by ignoring 0.
This partly defeats the point of ramping, but will still catch
VBUS below 4.5V and above 0V.
BUG=b:168569046
BRANCH=zork
TEST=EC reboot with no battery and 65W charger, ramp to 3.25A @ 20V
Signed-off-by: Edward Hill <ecgh@chromium.org>
Change-Id: I2c08cc548b1fd67507865e7339e8168b0e53e628
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2438934
Reviewed-by: Denis Brockus <dbrockus@chromium.org>
Commit-Queue: Denis Brockus <dbrockus@chromium.org>
Diffstat (limited to 'baseboard')
-rw-r--r-- | baseboard/zork/baseboard.c | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/baseboard/zork/baseboard.c b/baseboard/zork/baseboard.c index b72e4fb77f..36591bb4f2 100644 --- a/baseboard/zork/baseboard.c +++ b/baseboard/zork/baseboard.c @@ -325,10 +325,29 @@ void board_pwrbtn_to_pch(int level) */ int board_is_vbus_too_low(int port, enum chg_ramp_vbus_state ramp_state) { - int voltage; + int voltage = 0; + int rv; + + rv = charger_get_vbus_voltage(port, &voltage); + + if (rv) { + ccprints("%s rv=%d", __func__, rv); + return 0; + } + + /* + * b/168569046: The ISL9241 sometimes incorrectly reports 0 for unknown + * reason, causing ramp to stop at 0.5A. Workaround this by ignoring 0. + * This partly defeats the point of ramping, but will still catch + * VBUS below 4.5V and above 0V. + */ + if (voltage == 0) { + ccprints("%s vbus=0", __func__); + return 0; + } - if (charger_get_vbus_voltage(port, &voltage)) - voltage = 0; + if (voltage < BC12_MIN_VOLTAGE) + ccprints("%s vbus=%d", __func__, voltage); return voltage < BC12_MIN_VOLTAGE; } |