summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenis Brockus <dbrockus@google.com>2020-12-29 10:29:33 -0700
committerCommit Bot <commit-bot@chromium.org>2020-12-30 20:01:22 +0000
commitfcf4e0908333e98cb2d83e098da15869a148eda0 (patch)
tree27c0b267e4e7a469096dd1013f9c7f5b95f7cc1a
parent4772a209e5b760f95232e72a2be775073ce84966 (diff)
downloadchrome-ec-fcf4e0908333e98cb2d83e098da15869a148eda0.tar.gz
TCPMv2: Compliance Unit Test - PROC.PD.E1 generalization
Allow caller to control the first part of attach and the already attached portion of the code. BUG=none BRANCH=none TEST=make buildall Signed-off-by: Denis Brockus <dbrockus@google.com> Change-Id: I52419f41501c5d828bbc4a14a5a7b9d89e17f17f Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2606565 Tested-by: Denis Brockus <dbrockus@chromium.org> Auto-Submit: Denis Brockus <dbrockus@chromium.org> Reviewed-by: Keith Short <keithshort@chromium.org> Commit-Queue: Keith Short <keithshort@chromium.org>
-rw-r--r--test/usb_tcpmv2_compliance.h9
-rw-r--r--test/usb_tcpmv2_compliance_common.c131
-rw-r--r--test/usb_tcpmv2_td_pd_ll_e3.c3
-rw-r--r--test/usb_tcpmv2_td_pd_ll_e4.c3
-rw-r--r--test/usb_tcpmv2_td_pd_ll_e5.c3
-rw-r--r--test/usb_tcpmv2_td_pd_snk3_e12.c3
-rw-r--r--test/usb_tcpmv2_td_pd_src3_e26.c3
7 files changed, 86 insertions, 69 deletions
diff --git a/test/usb_tcpmv2_compliance.h b/test/usb_tcpmv2_compliance.h
index f477d9f575..20a3c1ed66 100644
--- a/test/usb_tcpmv2_compliance.h
+++ b/test/usb_tcpmv2_compliance.h
@@ -64,9 +64,12 @@ void partner_send_msg(enum pd_msg_type sop,
int handle_attach_expected_msgs(enum pd_data_role data_role);
-#define INITIAL_ATTACH true
-#define ALREADY_ATTACHED false
-int proc_pd_e1(enum pd_data_role data_role, bool initial_attach);
+enum proc_pd_e1_attach {
+ INITIAL_ATTACH = BIT(0),
+ ALREADY_ATTACHED = BIT(1),
+ INITIAL_AND_ALREADY_ATTACHED = INITIAL_ATTACH | ALREADY_ATTACHED
+};
+int proc_pd_e1(enum pd_data_role data_role, enum proc_pd_e1_attach attach);
int proc_pd_e3(void);
int test_td_pd_ll_e3_dfp(void);
diff --git a/test/usb_tcpmv2_compliance_common.c b/test/usb_tcpmv2_compliance_common.c
index 11d68164d3..5add250e9f 100644
--- a/test/usb_tcpmv2_compliance_common.c
+++ b/test/usb_tcpmv2_compliance_common.c
@@ -178,9 +178,9 @@ int tcpci_startup(void)
/*****************************************************************************
* PROC.PD.E1. Bring-up procedure
*/
-int proc_pd_e1(enum pd_data_role data_role, bool initial_attach)
+int proc_pd_e1(enum pd_data_role data_role, enum proc_pd_e1_attach attach)
{
- if (initial_attach) {
+ if (attach & INITIAL_ATTACH) {
/*
* a) The test starts in a disconnected state.
*/
@@ -243,76 +243,85 @@ int proc_pd_e1(enum pd_data_role data_role, bool initial_attach)
}
}
- switch (partner_get_power_role()) {
- case PD_ROLE_SOURCE:
- /*
- * e) The tester transmits Source Capabilities until reception
- * of GoodCrc for tNoResponse max (5.5s). The Source
- * Capabilities includes Fixed 5V 3A PDO.
- */
- task_wait_event(1 * MSEC);
- partner_send_msg(PD_MSG_SOP, PD_DATA_SOURCE_CAP, 1, 0, &pdo);
+ if (attach & ALREADY_ATTACHED) {
+ switch (partner_get_power_role()) {
+ case PD_ROLE_SOURCE:
+ /*
+ * e) The tester transmits Source Capabilities until
+ * reception of GoodCrc for tNoResponse max (5.5s).
+ * The Source Capabilities includes Fixed 5V 3A PDO.
+ */
+ task_wait_event(1 * MSEC);
+ partner_send_msg(PD_MSG_SOP, PD_DATA_SOURCE_CAP, 1, 0,
+ &pdo);
- /*
- * f) The tester waits for the Request from the UUT for
- * tSenderResponse max (30 ms).
- */
- TEST_EQ(verify_tcpci_transmit(TCPC_TX_SOP, 0, PD_DATA_REQUEST),
- EC_SUCCESS, "%d");
- mock_set_alert(TCPC_REG_ALERT_TX_SUCCESS);
+ /*
+ * f) The tester waits for the Request from the UUT for
+ * tSenderResponse max (30 ms).
+ */
+ TEST_EQ(verify_tcpci_transmit(TCPC_TX_SOP, 0,
+ PD_DATA_REQUEST),
+ EC_SUCCESS, "%d");
+ mock_set_alert(TCPC_REG_ALERT_TX_SUCCESS);
- /*
- * g) The tester sends Accept, and when Vbus is stable at the
- * target voltage, sends PS_RDY.
- */
- partner_send_msg(PD_MSG_SOP, PD_CTRL_ACCEPT, 0, 0, NULL);
- task_wait_event(10 * MSEC);
- partner_send_msg(PD_MSG_SOP, PD_CTRL_PS_RDY, 0, 0, NULL);
- task_wait_event(1 * MSEC);
+ /*
+ * g) The tester sends Accept, and when Vbus is stable
+ * at the target voltage, sends PS_RDY.
+ */
+ partner_send_msg(PD_MSG_SOP, PD_CTRL_ACCEPT, 0, 0,
+ NULL);
+ task_wait_event(10 * MSEC);
+ partner_send_msg(PD_MSG_SOP, PD_CTRL_PS_RDY, 0, 0,
+ NULL);
+ task_wait_event(1 * MSEC);
- TEST_EQ(tc_is_attached_snk(PORT0), true, "%d");
- break;
+ TEST_EQ(tc_is_attached_snk(PORT0), true, "%d");
+ break;
- case PD_ROLE_SINK:
- /*
- * c) The tester waits Source Capabilities for for tNoResponse
- * max (5.5 s).
- */
- TEST_EQ(verify_tcpci_transmit(TCPC_TX_SOP,
- 0,
- PD_DATA_SOURCE_CAP),
- EC_SUCCESS, "%d");
+ case PD_ROLE_SINK:
+ /*
+ * c) The tester waits Source Capabilities for for
+ * tNoResponse max (5.5 s).
+ */
+ TEST_EQ(verify_tcpci_transmit(TCPC_TX_SOP, 0,
+ PD_DATA_SOURCE_CAP),
+ EC_SUCCESS, "%d");
- /*
- * d) The tester replies GoodCrc on reception of the Source
- * Capabilities.
- */
- mock_set_alert(TCPC_REG_ALERT_TX_SUCCESS);
- task_wait_event(10 * MSEC);
+ /*
+ * d) The tester replies GoodCrc on reception of the
+ * Source Capabilities.
+ */
+ mock_set_alert(TCPC_REG_ALERT_TX_SUCCESS);
+ task_wait_event(10 * MSEC);
- /*
- * e) The tester requests 5V 0.5A.
- */
- partner_send_msg(PD_MSG_SOP, PD_DATA_REQUEST, 1, 0, &rdo);
+ /*
+ * e) The tester requests 5V 0.5A.
+ */
+ partner_send_msg(PD_MSG_SOP, PD_DATA_REQUEST, 1, 0,
+ &rdo);
- TEST_EQ(verify_tcpci_transmit(TCPC_TX_SOP, PD_CTRL_ACCEPT, 0),
- EC_SUCCESS, "%d");
- mock_set_alert(TCPC_REG_ALERT_TX_SUCCESS);
+ TEST_EQ(verify_tcpci_transmit(TCPC_TX_SOP,
+ PD_CTRL_ACCEPT, 0),
+ EC_SUCCESS, "%d");
+ mock_set_alert(TCPC_REG_ALERT_TX_SUCCESS);
- /*
- * f) The tester waits PS_RDY for tPSSourceOn max (480 ms).
- */
- TEST_EQ(verify_tcpci_transmit(TCPC_TX_SOP, PD_CTRL_PS_RDY, 0),
- EC_SUCCESS, "%d");
- mock_set_alert(TCPC_REG_ALERT_TX_SUCCESS);
- task_wait_event(1 * MSEC);
+ /*
+ * f) The tester waits PS_RDY for tPSSourceOn max
+ * (480 ms).
+ */
+ TEST_EQ(verify_tcpci_transmit(TCPC_TX_SOP,
+ PD_CTRL_PS_RDY, 0),
+ EC_SUCCESS, "%d");
+ mock_set_alert(TCPC_REG_ALERT_TX_SUCCESS);
+ task_wait_event(1 * MSEC);
- TEST_EQ(tc_is_attached_src(PORT0), true, "%d");
- break;
+ TEST_EQ(tc_is_attached_src(PORT0), true, "%d");
+ break;
+ }
+ TEST_EQ(pd_get_data_role(I2C_PORT_HOST_TCPC),
+ data_role, "%d");
}
- TEST_EQ(pd_get_data_role(I2C_PORT_HOST_TCPC),
- data_role, "%d");
return EC_SUCCESS;
}
diff --git a/test/usb_tcpmv2_td_pd_ll_e3.c b/test/usb_tcpmv2_td_pd_ll_e3.c
index c2f1474acf..8989d8a9c7 100644
--- a/test/usb_tcpmv2_td_pd_ll_e3.c
+++ b/test/usb_tcpmv2_td_pd_ll_e3.c
@@ -29,7 +29,8 @@ static int td_pd_ll_e3(enum pd_data_role data_role)
/*
* a) Run PROC.PD.E1 Bring-up according to the UUT role.
*/
- TEST_EQ(proc_pd_e1(data_role, INITIAL_ATTACH), EC_SUCCESS, "%d");
+ TEST_EQ(proc_pd_e1(data_role, INITIAL_AND_ALREADY_ATTACHED),
+ EC_SUCCESS, "%d");
/*
* Make sure we are idle. Reject everything that is pending
diff --git a/test/usb_tcpmv2_td_pd_ll_e4.c b/test/usb_tcpmv2_td_pd_ll_e4.c
index 2ef421f14f..caf08a04df 100644
--- a/test/usb_tcpmv2_td_pd_ll_e4.c
+++ b/test/usb_tcpmv2_td_pd_ll_e4.c
@@ -31,7 +31,8 @@ static int td_pd_ll_e4(enum pd_data_role data_role)
/*
* a) Run PROC.PD.E1 Bring-up according to the UUT role.
*/
- TEST_EQ(proc_pd_e1(data_role, INITIAL_ATTACH), EC_SUCCESS, "%d");
+ TEST_EQ(proc_pd_e1(data_role, INITIAL_AND_ALREADY_ATTACHED),
+ EC_SUCCESS, "%d");
/*
* Make sure we are idle. Reject everything that is pending
diff --git a/test/usb_tcpmv2_td_pd_ll_e5.c b/test/usb_tcpmv2_td_pd_ll_e5.c
index c3e0842f63..31664634b2 100644
--- a/test/usb_tcpmv2_td_pd_ll_e5.c
+++ b/test/usb_tcpmv2_td_pd_ll_e5.c
@@ -26,7 +26,8 @@ static int td_pd_ll_e5(enum pd_data_role data_role)
/*
* a) Run PROC.PD.E1 Bring-up according to the UUT role.
*/
- TEST_EQ(proc_pd_e1(data_role, INITIAL_ATTACH), EC_SUCCESS, "%d");
+ TEST_EQ(proc_pd_e1(data_role, INITIAL_AND_ALREADY_ATTACHED),
+ EC_SUCCESS, "%d");
/*
* Make sure we are idle. Reject everything that is pending
diff --git a/test/usb_tcpmv2_td_pd_snk3_e12.c b/test/usb_tcpmv2_td_pd_snk3_e12.c
index 99334860ab..e712e0d209 100644
--- a/test/usb_tcpmv2_td_pd_snk3_e12.c
+++ b/test/usb_tcpmv2_td_pd_snk3_e12.c
@@ -25,7 +25,8 @@ int test_td_pd_snk3_e12(void)
* a) Run PROC.PD.E1 Bring-up according to the UUT role.
*/
TEST_EQ(tcpci_startup(), EC_SUCCESS, "%d");
- TEST_EQ(proc_pd_e1(PD_ROLE_UFP, INITIAL_ATTACH), EC_SUCCESS, "%d");
+ TEST_EQ(proc_pd_e1(PD_ROLE_UFP, INITIAL_AND_ALREADY_ATTACHED),
+ EC_SUCCESS, "%d");
/*
* b) The Tester keeps the Rp value as SinkTXNG and sends a
diff --git a/test/usb_tcpmv2_td_pd_src3_e26.c b/test/usb_tcpmv2_td_pd_src3_e26.c
index 9d0a557c78..48b6284dc2 100644
--- a/test/usb_tcpmv2_td_pd_src3_e26.c
+++ b/test/usb_tcpmv2_td_pd_src3_e26.c
@@ -26,7 +26,8 @@ int test_td_pd_src3_e26(void)
* b) The Tester waits until it can start an AMS (Run PROC.PD.E3)...
*/
TEST_EQ(tcpci_startup(), EC_SUCCESS, "%d");
- TEST_EQ(proc_pd_e1(PD_ROLE_DFP, INITIAL_ATTACH), EC_SUCCESS, "%d");
+ TEST_EQ(proc_pd_e1(PD_ROLE_DFP, INITIAL_AND_ALREADY_ATTACHED),
+ EC_SUCCESS, "%d");
TEST_EQ(proc_pd_e3(), EC_SUCCESS, "%d");
/*