summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAbe Levkoy <alevkoy@chromium.org>2022-02-11 12:35:34 -0700
committerCommit Bot <commit-bot@chromium.org>2022-02-12 01:21:19 +0000
commite923c737379f2970118b2c0b080bcb25191c4d25 (patch)
tree5666ef118c97f8fc622acbb938495b9a5f03bf3c
parent4e0a6e0647fda7122c54145561146d0032dce511 (diff)
downloadchrome-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.c30
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)
{
/*