diff options
-rw-r--r-- | test/usb_tcpmv2_compliance.h | 9 | ||||
-rw-r--r-- | test/usb_tcpmv2_compliance_common.c | 131 | ||||
-rw-r--r-- | test/usb_tcpmv2_td_pd_ll_e3.c | 3 | ||||
-rw-r--r-- | test/usb_tcpmv2_td_pd_ll_e4.c | 3 | ||||
-rw-r--r-- | test/usb_tcpmv2_td_pd_ll_e5.c | 3 | ||||
-rw-r--r-- | test/usb_tcpmv2_td_pd_snk3_e12.c | 3 | ||||
-rw-r--r-- | test/usb_tcpmv2_td_pd_src3_e26.c | 3 |
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"); /* |