diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/usb_pe_drp.c | 54 | ||||
-rw-r--r-- | test/usb_tcpmv2_compliance_common.c | 32 |
2 files changed, 33 insertions, 53 deletions
diff --git a/test/usb_pe_drp.c b/test/usb_pe_drp.c index 8138bb5ddf..0b22c41c9c 100644 --- a/test/usb_pe_drp.c +++ b/test/usb_pe_drp.c @@ -78,8 +78,11 @@ test_static void rx_message(enum pd_msg_type sop, /* * This sequence is used by multiple tests, so pull out into a function to * avoid duplication. + * + * Send in how many SOP' DiscoverIdentity requests have been processed so far, + * as this may vary depending on startup sequencing as a source. */ -test_static int finish_src_discovery(void) +test_static int finish_src_discovery(int startup_cable_probes) { int i; @@ -106,10 +109,20 @@ test_static int finish_src_discovery(void) PDO_FIXED(5000, 500, PDO_FIXED_COMM_CAP)); /* + * 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); + + /* * Cable identity discovery is attempted 6 times total. 1 was done * above, so expect 5 more now. */ - for (i = 0; i < 5; i++) { + for (i = startup_cable_probes; i < 6; i++) { TEST_EQ(mock_prl_wait_for_tx_msg(PORT0, TCPC_TX_SOP_PRIME, 0, PD_DATA_VENDOR_DEF, 60 * MSEC), @@ -189,17 +202,7 @@ 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"); + TEST_EQ(finish_src_discovery(1), EC_SUCCESS, "%d"); task_wait_event(5 * SECOND); @@ -234,30 +237,7 @@ test_static int test_send_caps_error_when_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); - - /* - * 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. - * TODO: Add tests for cable replying to identity, and replying - * NOT_SUPPORTED (since we should be robust to cables doing the wrong - * thing). - */ - TEST_EQ(mock_prl_wait_for_tx_msg(PORT0, TCPC_TX_SOP_PRIME, - 0, PD_DATA_VENDOR_DEF, 10 * MSEC), - EC_SUCCESS, "%d"); - mock_prl_report_error(PORT0, ERR_TCH_XMIT, TCPC_TX_SOP_PRIME); - - TEST_EQ(finish_src_discovery(), EC_SUCCESS, "%d"); + TEST_EQ(finish_src_discovery(0), EC_SUCCESS, "%d"); task_wait_event(5 * SECOND); diff --git a/test/usb_tcpmv2_compliance_common.c b/test/usb_tcpmv2_compliance_common.c index a5ff2348d4..0a1449ede3 100644 --- a/test/usb_tcpmv2_compliance_common.c +++ b/test/usb_tcpmv2_compliance_common.c @@ -365,6 +365,20 @@ 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, + PD_CTRL_GET_SOURCE_CAP, 0), + EC_SUCCESS, "%d"); + mock_set_alert(TCPC_REG_ALERT_TX_SUCCESS); + task_wait_event(10 * MSEC); + partner_send_msg(PD_MSG_SOP, PD_DATA_SOURCE_CAP, 1, 0, &pdo); + + TEST_EQ(verify_tcpci_transmit(TCPC_TX_SOP, + PD_CTRL_GET_SINK_CAP, 0), + EC_SUCCESS, "%d"); + mock_set_alert(TCPC_REG_ALERT_TX_SUCCESS); + task_wait_event(10 * MSEC); + partner_send_msg(PD_MSG_SOP, PD_DATA_SINK_CAP, 1, 0, &pdo); + TEST_EQ(verify_tcpci_transmit(TCPC_TX_SOP_PRIME, PD_CTRL_SOFT_RESET, 0), EC_SUCCESS, "%d"); @@ -387,13 +401,8 @@ int handle_attach_expected_msgs(enum pd_data_role data_role) mock_set_alert(TCPC_REG_ALERT_TX_SUCCESS); task_wait_event(10 * MSEC); partner_send_msg(PD_MSG_SOP, PD_CTRL_NOT_SUPPORTED, 0, 0, NULL); - - TEST_EQ(verify_tcpci_transmit(TCPC_TX_SOP, - PD_CTRL_GET_SOURCE_CAP, 0), - EC_SUCCESS, "%d"); - mock_set_alert(TCPC_REG_ALERT_TX_SUCCESS); - task_wait_event(10 * MSEC); - partner_send_msg(PD_MSG_SOP, PD_DATA_SOURCE_CAP, 1, 0, &pdo); + } else if (data_role == PD_ROLE_UFP) { + int vcs; TEST_EQ(verify_tcpci_transmit(TCPC_TX_SOP, PD_CTRL_GET_SINK_CAP, 0), @@ -401,8 +410,6 @@ int handle_attach_expected_msgs(enum pd_data_role data_role) mock_set_alert(TCPC_REG_ALERT_TX_SUCCESS); task_wait_event(10 * MSEC); partner_send_msg(PD_MSG_SOP, PD_DATA_SINK_CAP, 1, 0, &pdo); - } else if (data_role == PD_ROLE_UFP) { - int vcs; TEST_EQ(verify_tcpci_transmit(TCPC_TX_SOP, PD_CTRL_DR_SWAP, 0), EC_SUCCESS, "%d"); @@ -419,13 +426,6 @@ int handle_attach_expected_msgs(enum pd_data_role data_role) partner_send_msg(PD_MSG_SOP, PD_CTRL_REJECT, 0, 0, NULL); } - - TEST_EQ(verify_tcpci_transmit(TCPC_TX_SOP, - PD_CTRL_GET_SINK_CAP, 0), - EC_SUCCESS, "%d"); - mock_set_alert(TCPC_REG_ALERT_TX_SUCCESS); - task_wait_event(10 * MSEC); - partner_send_msg(PD_MSG_SOP, PD_DATA_SINK_CAP, 1, 0, &pdo); } task_wait_event(1 * SECOND); return EC_SUCCESS; |