diff options
author | Diana Z <dzigterman@chromium.org> | 2020-11-11 16:53:12 -0700 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-11-20 17:43:24 +0000 |
commit | 30a9f90a098be3514beea0ed4238252c63d93c51 (patch) | |
tree | 4b195823ca1893f25c4f753d25366bfa443df349 /test | |
parent | d0530ca42969435e91627977267c517e26349c97 (diff) | |
download | chrome-ec-30a9f90a098be3514beea0ed4238252c63d93c51.tar.gz |
TCPMv2: Always probe sink caps
This commit adds the ability to always probe the partner for sink
capabilities, and re-names the state to reflect that sources may use it
now too. This also fixes some issues in the state to get sink
capabilities, including correcting the message detection and soft
resetting with the SOP* of the unexpected message.
This also updates the unit tests to expect a Get_Sink_Caps message as a
part of typical startup.
BRANCH=None
BUG=b:168862110,b:160009733
TEST=on drawcia, observe sink caps are requested from source and sink
partners
Signed-off-by: Diana Z <dzigterman@chromium.org>
Change-Id: I5da3adc17ccec71f6cad9e8f152b9570ec99691d
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2540389
Reviewed-by: Keith Short <keithshort@chromium.org>
Diffstat (limited to 'test')
-rw-r--r-- | test/usb_pe_drp.c | 17 | ||||
-rw-r--r-- | test/usb_tcpmv2_tcpci.c | 12 |
2 files changed, 29 insertions, 0 deletions
diff --git a/test/usb_pe_drp.c b/test/usb_pe_drp.c index f780834612..f5ced4c7b1 100644 --- a/test/usb_pe_drp.c +++ b/test/usb_pe_drp.c @@ -103,6 +103,23 @@ test_static int test_send_caps_error(void) task_wait_event(200 * MSEC); /* + * Expect GET_SINK_CAP, reply with a simple Sink Cap since sink partners + * must support this message. + */ + TEST_EQ(fake_prl_get_last_sent_ctrl_msg(PORT0), + PD_CTRL_GET_SINK_CAP, "%d"); + fake_prl_message_sent(PORT0); + task_wait_event(10 * MSEC); + rx_emsg[PORT0].header = PD_HEADER(PD_DATA_SINK_CAP, PD_ROLE_SINK, + PD_ROLE_UFP, 2, + 1, PD_REV30, 0); + rx_emsg[PORT0].len = 4; + *(uint32_t *)rx_emsg[PORT0].buf = PDO_FIXED(5000, 500, + PDO_FIXED_COMM_CAP); + fake_prl_message_received(PORT0); + task_wait_event(200 * MSEC); + + /* * Now connected. Send GET_SOURCE_CAP, to check how error sending * SOURCE_CAP is handled. */ diff --git a/test/usb_tcpmv2_tcpci.c b/test/usb_tcpmv2_tcpci.c index 960cb9ff0f..c032c472a2 100644 --- a/test/usb_tcpmv2_tcpci.c +++ b/test/usb_tcpmv2_tcpci.c @@ -244,6 +244,18 @@ __maybe_unused static int test_connect_as_pd3_source(void) rx_id++; mock_set_alert(TCPC_REG_ALERT_RX_STATUS); + 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); + mock_tcpci_receive(PD_MSG_SOP, + PD_HEADER(PD_DATA_SINK_CAP, PD_ROLE_SINK, + PD_ROLE_UFP, rx_id, + 1, PD_REV30, 0), + &pdo); + rx_id++; + mock_set_alert(TCPC_REG_ALERT_RX_STATUS); + task_wait_event(1 * SECOND); TEST_EQ(tc_is_attached_src(PORT0), true, "%d"); TEST_EQ(TCPC_REG_ROLE_CTRL_RP(mock_tcpci_get_reg(TCPC_REG_ROLE_CTRL)), |