summaryrefslogtreecommitdiff
path: root/test/usb_common_test.c
diff options
context:
space:
mode:
authorJett Rink <jettrink@chromium.org>2019-10-07 11:09:01 -0600
committerCommit Bot <commit-bot@chromium.org>2019-10-08 17:14:48 +0000
commitdd1dbd8fee7eedef8dad4fe8a8bbec14a0ea5b2e (patch)
tree1f7ac17718be363bdeb727a397c404c46f9ba041 /test/usb_common_test.c
parent84ffa0bd38cba5e5daba8527c6ed09e91ca43edd (diff)
downloadchrome-ec-dd1dbd8fee7eedef8dad4fe8a8bbec14a0ea5b2e.tar.gz
usbc: fix cc interpretation error
Ensure that two Rp values are interpreted as a debug accessory. Added unit test for meaningful combinations. BRANCH=none BUG=none TEST=passes unit test. Change-Id: Ia454382f20f9377edc944dc01be133e062c218b0 Signed-off-by: Jett Rink <jettrink@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1845811 Reviewed-by: Edward Hill <ecgh@chromium.org>
Diffstat (limited to 'test/usb_common_test.c')
-rw-r--r--test/usb_common_test.c74
1 files changed, 74 insertions, 0 deletions
diff --git a/test/usb_common_test.c b/test/usb_common_test.c
new file mode 100644
index 0000000000..d054f4ead2
--- /dev/null
+++ b/test/usb_common_test.c
@@ -0,0 +1,74 @@
+/* Copyright 2019 The Chromium OS Authors. All rights reserved.
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ *
+ * Test USB common module.
+ */
+#include "test_util.h"
+#include "usb_common.h"
+
+int test_pd_get_cc_state(void)
+{
+ TEST_EQ(pd_get_cc_state(TYPEC_CC_VOLT_RP_3_0, TYPEC_CC_VOLT_RP_3_0),
+ PD_CC_DFP_DEBUG_ACC, "%d");
+ TEST_EQ(pd_get_cc_state(TYPEC_CC_VOLT_RP_3_0, TYPEC_CC_VOLT_RP_1_5),
+ PD_CC_DFP_DEBUG_ACC, "%d");
+ TEST_EQ(pd_get_cc_state(TYPEC_CC_VOLT_RP_3_0, TYPEC_CC_VOLT_RP_DEF),
+ PD_CC_DFP_DEBUG_ACC, "%d");
+ TEST_EQ(pd_get_cc_state(TYPEC_CC_VOLT_RP_1_5, TYPEC_CC_VOLT_RP_3_0),
+ PD_CC_DFP_DEBUG_ACC, "%d");
+ TEST_EQ(pd_get_cc_state(TYPEC_CC_VOLT_RP_1_5, TYPEC_CC_VOLT_RP_1_5),
+ PD_CC_DFP_DEBUG_ACC, "%d");
+ TEST_EQ(pd_get_cc_state(TYPEC_CC_VOLT_RP_1_5, TYPEC_CC_VOLT_RP_DEF),
+ PD_CC_DFP_DEBUG_ACC, "%d");
+ TEST_EQ(pd_get_cc_state(TYPEC_CC_VOLT_RP_DEF, TYPEC_CC_VOLT_RP_3_0),
+ PD_CC_DFP_DEBUG_ACC, "%d");
+ TEST_EQ(pd_get_cc_state(TYPEC_CC_VOLT_RP_DEF, TYPEC_CC_VOLT_RP_1_5),
+ PD_CC_DFP_DEBUG_ACC, "%d");
+ TEST_EQ(pd_get_cc_state(TYPEC_CC_VOLT_RP_DEF, TYPEC_CC_VOLT_RP_DEF),
+ PD_CC_DFP_DEBUG_ACC, "%d");
+
+ TEST_EQ(pd_get_cc_state(TYPEC_CC_VOLT_RP_3_0, TYPEC_CC_VOLT_OPEN),
+ PD_CC_DFP_ATTACHED, "%d");
+ TEST_EQ(pd_get_cc_state(TYPEC_CC_VOLT_RP_1_5, TYPEC_CC_VOLT_OPEN),
+ PD_CC_DFP_ATTACHED, "%d");
+ TEST_EQ(pd_get_cc_state(TYPEC_CC_VOLT_RP_DEF, TYPEC_CC_VOLT_OPEN),
+ PD_CC_DFP_ATTACHED, "%d");
+ TEST_EQ(pd_get_cc_state(TYPEC_CC_VOLT_OPEN, TYPEC_CC_VOLT_RP_3_0),
+ PD_CC_DFP_ATTACHED, "%d");
+ TEST_EQ(pd_get_cc_state(TYPEC_CC_VOLT_OPEN, TYPEC_CC_VOLT_RP_1_5),
+ PD_CC_DFP_ATTACHED, "%d");
+ TEST_EQ(pd_get_cc_state(TYPEC_CC_VOLT_OPEN, TYPEC_CC_VOLT_RP_DEF),
+ PD_CC_DFP_ATTACHED, "%d");
+
+ TEST_EQ(pd_get_cc_state(TYPEC_CC_VOLT_RD, TYPEC_CC_VOLT_RD),
+ PD_CC_UFP_DEBUG_ACC, "%d");
+
+ TEST_EQ(pd_get_cc_state(TYPEC_CC_VOLT_RD, TYPEC_CC_VOLT_RA),
+ PD_CC_UFP_ATTACHED, "%d");
+ TEST_EQ(pd_get_cc_state(TYPEC_CC_VOLT_RD, TYPEC_CC_VOLT_OPEN),
+ PD_CC_UFP_ATTACHED, "%d");
+ TEST_EQ(pd_get_cc_state(TYPEC_CC_VOLT_RA, TYPEC_CC_VOLT_RD),
+ PD_CC_UFP_ATTACHED, "%d");
+ TEST_EQ(pd_get_cc_state(TYPEC_CC_VOLT_OPEN, TYPEC_CC_VOLT_RD),
+ PD_CC_UFP_ATTACHED, "%d");
+
+ TEST_EQ(pd_get_cc_state(TYPEC_CC_VOLT_RA, TYPEC_CC_VOLT_RA),
+ PD_CC_UFP_AUDIO_ACC, "%d");
+
+ TEST_EQ(pd_get_cc_state(TYPEC_CC_VOLT_OPEN, TYPEC_CC_VOLT_OPEN),
+ PD_CC_NONE, "%d");
+ TEST_EQ(pd_get_cc_state(TYPEC_CC_VOLT_OPEN, TYPEC_CC_VOLT_RA),
+ PD_CC_NONE, "%d");
+ TEST_EQ(pd_get_cc_state(TYPEC_CC_VOLT_RA, TYPEC_CC_VOLT_OPEN),
+ PD_CC_NONE, "%d");
+
+ return EC_SUCCESS;
+}
+
+void run_test(void)
+{
+ RUN_TEST(test_pd_get_cc_state);
+
+ test_print_result();
+}