diff options
author | Keith Short <keithshort@chromium.org> | 2020-12-16 20:45:41 -0700 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-01-09 00:44:44 +0000 |
commit | 88d46d61c3081b7fc32225f3aed7426a1d62e36e (patch) | |
tree | 82368a4b5a93e6eba6eb7d2c121a50fcdf7515c6 /test | |
parent | 6be1ff9b14b3593cfc6b657a41334cc8a7f5811d (diff) | |
download | chrome-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.h | 1 | ||||
-rw-r--r-- | test/usb_pe_drp.c | 20 | ||||
-rw-r--r-- | test/usb_tcpmv2_compliance_common.c | 9 |
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"); |