summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorKeith Short <keithshort@chromium.org>2020-12-16 20:45:41 -0700
committerCommit Bot <commit-bot@chromium.org>2021-01-09 00:44:44 +0000
commit88d46d61c3081b7fc32225f3aed7426a1d62e36e (patch)
tree82368a4b5a93e6eba6eb7d2c121a50fcdf7515c6 /test
parent6be1ff9b14b3593cfc6b657a41334cc8a7f5811d (diff)
downloadchrome-ec-88d46d61c3081b7fc32225f3aed7426a1d62e36e.tar.gz
tcpmv2: always issue SOP' soft reset
After entering a PD contract, always issue an SOP' soft reset before sending any discovery VDMs to the cable. BUG=b:172364575 BRANCH=volteer TEST=connect monitor with emarked cable, verify SOP' soft reset is sent when EC starts as SNK/DFP. TEST=Connect monitor with non-emark cable. Verify SOP' soft reset is sent once regardless of starting role. TEST=Connect USB4 dock, verify USB4 entry. Signed-off-by: Keith Short <keithshort@chromium.org> Change-Id: Id5026a2c8c9877b860e1356dd33763bad3e51841 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2596838 Reviewed-by: Diana Z <dzigterman@chromium.org> Reviewed-by: Abe Levkoy <alevkoy@chromium.org>
Diffstat (limited to 'test')
-rw-r--r--test/usb_pe.h1
-rw-r--r--test/usb_pe_drp.c20
-rw-r--r--test/usb_tcpmv2_compliance_common.c9
3 files changed, 29 insertions, 1 deletions
diff --git a/test/usb_pe.h b/test/usb_pe.h
index 373bf9f5b2..a4967d02e5 100644
--- a/test/usb_pe.h
+++ b/test/usb_pe.h
@@ -120,6 +120,7 @@ enum usb_pe_state {
PE_VCS_TURN_ON_VCONN_SWAP,
PE_VCS_TURN_OFF_VCONN_SWAP,
PE_VCS_SEND_PS_RDY_SWAP,
+ PE_VCS_CBL_SEND_SOFT_RESET,
PE_VDM_IDENTITY_REQUEST_CBL,
PE_INIT_PORT_VDM_IDENTITY_REQUEST,
PE_INIT_VDM_SVIDS_REQUEST,
diff --git a/test/usb_pe_drp.c b/test/usb_pe_drp.c
index 10269db779..8138bb5ddf 100644
--- a/test/usb_pe_drp.c
+++ b/test/usb_pe_drp.c
@@ -189,6 +189,16 @@ test_static int test_send_caps_error_before_connected(void)
EC_SUCCESS, "%d");
mock_prl_message_sent(PORT0);
+ /*
+ * Cable soft reset is always issued after entry into Src/Snk_Ready
+ * simulate no cable response.
+ */
+ TEST_EQ(mock_prl_wait_for_tx_msg(PORT0, TCPC_TX_SOP_PRIME,
+ PD_CTRL_SOFT_RESET, 0,
+ 60 * MSEC),
+ EC_SUCCESS, "%d");
+ mock_prl_report_error(PORT0, ERR_TCH_XMIT, TCPC_TX_SOP_PRIME);
+
TEST_EQ(finish_src_discovery(), EC_SUCCESS, "%d");
task_wait_event(5 * SECOND);
@@ -225,6 +235,16 @@ test_static int test_send_caps_error_when_connected(void)
mock_prl_message_sent(PORT0);
/*
+ * Cable soft reset is always issued after entry into Src/Snk_Ready
+ * simulate no cable response.
+ */
+ TEST_EQ(mock_prl_wait_for_tx_msg(PORT0, TCPC_TX_SOP_PRIME,
+ PD_CTRL_SOFT_RESET, 0,
+ 60 * MSEC),
+ EC_SUCCESS, "%d");
+ mock_prl_report_error(PORT0, ERR_TCH_XMIT, TCPC_TX_SOP_PRIME);
+
+ /*
* Expect VENDOR_DEF for cable identity, simulate no cable (so no
* GoodCRC, so ERR_TCH_XMIT). Don't reply NOT_SUPPORTED, since the spec
* says a cable never does that.
diff --git a/test/usb_tcpmv2_compliance_common.c b/test/usb_tcpmv2_compliance_common.c
index 92efe5a616..a5ff2348d4 100644
--- a/test/usb_tcpmv2_compliance_common.c
+++ b/test/usb_tcpmv2_compliance_common.c
@@ -320,7 +320,6 @@ int proc_pd_e1(enum pd_data_role data_role, enum proc_pd_e1_attach attach)
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;
@@ -366,6 +365,14 @@ int proc_pd_e3(void)
int handle_attach_expected_msgs(enum pd_data_role data_role)
{
if (data_role == PD_ROLE_DFP) {
+ TEST_EQ(verify_tcpci_transmit(TCPC_TX_SOP_PRIME,
+ PD_CTRL_SOFT_RESET, 0),
+ EC_SUCCESS, "%d");
+ mock_set_alert(TCPC_REG_ALERT_TX_SUCCESS);
+ task_wait_event(10 * MSEC);
+ partner_send_msg(PD_MSG_SOP_PRIME, PD_CTRL_NOT_SUPPORTED, 0, 0,
+ NULL);
+
TEST_EQ(verify_tcpci_transmit(TCPC_TX_SOP_PRIME, 0,
PD_DATA_VENDOR_DEF),
EC_SUCCESS, "%d");