diff options
author | Abe Levkoy <alevkoy@chromium.org> | 2022-02-11 12:35:34 -0700 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2022-02-12 01:21:19 +0000 |
commit | e923c737379f2970118b2c0b080bcb25191c4d25 (patch) | |
tree | 5666ef118c97f8fc622acbb938495b9a5f03bf3c | |
parent | 4e0a6e0647fda7122c54145561146d0032dce511 (diff) | |
download | chrome-ec-e923c737379f2970118b2c0b080bcb25191c4d25.tar.gz |
zephyr test: Test SYV682 VBUS OC limit
Check that the driver refuses to enable VBUS after reach the limit of
VBUS over-current events.
BUG=b:190519131
TEST=zmake configure --test zephyr/test/drivers
BRANCH=none
Signed-off-by: Abe Levkoy <alevkoy@chromium.org>
Change-Id: I2b223ff3342b4e8d51270f936fd3de2d8ab960fe
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3456707
Reviewed-by: Jeremy Bettis <jbettis@chromium.org>
Commit-Queue: Jeremy Bettis <jbettis@chromium.org>
-rw-r--r-- | zephyr/test/drivers/src/ppc_syv682c.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/zephyr/test/drivers/src/ppc_syv682c.c b/zephyr/test/drivers/src/ppc_syv682c.c index 6572d179f6..0d1b315628 100644 --- a/zephyr/test/drivers/src/ppc_syv682c.c +++ b/zephyr/test/drivers/src/ppc_syv682c.c @@ -492,6 +492,36 @@ ZTEST(ppc_syv682c, test_syv682x_vbus_sink_enable) "Sink disabled, but power path enabled"); } +ZTEST(ppc_syv682c, test_syv682x_vbus_sink_oc_limit) +{ + struct i2c_emul *emul = syv682x_emul_get(SYV682X_ORD); + + zassert_ok(ppc_vbus_sink_enable(syv682x_port, true), + "Sink enable failed"); + + /* Generate 4 consecutive sink over-current interrupts. After reaching + * this count, the driver should prevent sink enable until the count is + * cleared by sink disable. + */ + for (int i = 0; i < 4; ++i) { + syv682x_emul_set_condition(emul, SYV682X_STATUS_OC_HV, + SYV682X_CONTROL_4_NONE); + msleep(15); + } + syv682x_emul_set_condition(emul, SYV682X_STATUS_NONE, + SYV682X_CONTROL_4_NONE); + + zassert_not_equal(ppc_vbus_sink_enable(syv682x_port, true), EC_SUCCESS, + "VBUS sink enable succeeded after 4 OC events"); + + zassert_ok(ppc_vbus_sink_enable(syv682x_port, false), + "Sink disable failed"); + zassert_ok(ppc_vbus_sink_enable(syv682x_port, true), + "Sink enable failed"); + zassert_ok(ppc_vbus_sink_enable(syv682x_port, false), + "Sink disable failed"); +} + ZTEST(ppc_syv682c, test_syv682x_ppc_dump) { /* |