diff options
author | Denis Brockus <dbrockus@google.com> | 2020-08-27 15:34:03 -0600 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-09-02 21:50:25 +0000 |
commit | bc7b14284465675c69cfa186da6a3389debfde16 (patch) | |
tree | a0e3705a72ba983e7cfca0fe5bf75e73a8e31c0c /test | |
parent | 44302acb01290bea42acf35bd15a390a36a6688d (diff) | |
download | chrome-ec-bc7b14284465675c69cfa186da6a3389debfde16.tar.gz |
TCPMv2: Add DPM_REQUEST_GET_SRC_CAP
As a SRC that runs on battery it can be handy to determine
if the connected partner has unconstrained power available
so we can try to PR_Swap to let them power us. This only
requests the information, if it is not already available,
and leaves it to other code to determine if the swap is
a good idea.
BUG=b:166446426
BRANCH=none
TEST=connect a sink device and determine it performed the action
Signed-off-by: Denis Brockus <dbrockus@google.com>
Change-Id: If45801a33df8b75e541989d7ee8f36ed316ffcc6
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2381408
Tested-by: Denis Brockus <dbrockus@chromium.org>
Reviewed-by: Jett Rink <jettrink@chromium.org>
Commit-Queue: Jett Rink <jettrink@chromium.org>
Auto-Submit: Denis Brockus <dbrockus@chromium.org>
Diffstat (limited to 'test')
-rw-r--r-- | test/usb_pe.h | 1 | ||||
-rw-r--r-- | test/usb_tcpmv2_tcpci.c | 31 |
2 files changed, 28 insertions, 4 deletions
diff --git a/test/usb_pe.h b/test/usb_pe.h index 3a4479d534..fb5ac10f88 100644 --- a/test/usb_pe.h +++ b/test/usb_pe.h @@ -133,6 +133,7 @@ enum usb_pe_state { PE_DEU_SEND_ENTER_USB, PE_DR_SNK_GET_SINK_CAP, PE_DR_SNK_GIVE_SOURCE_CAP, + PE_DR_SRC_GET_SOURCE_CAP, /* PD3.0 only states below here*/ PE_FRS_SNK_SRC_START_AMS, diff --git a/test/usb_tcpmv2_tcpci.c b/test/usb_tcpmv2_tcpci.c index 1ab0ec7f66..960cb9ff0f 100644 --- a/test/usb_tcpmv2_tcpci.c +++ b/test/usb_tcpmv2_tcpci.c @@ -63,6 +63,8 @@ uint16_t tcpc_get_alert_status(void) return 0; } +static int rx_id; + const struct svdm_response svdm_rsp = { .identity = NULL, .svids = NULL, @@ -145,8 +147,11 @@ __maybe_unused static int test_startup_and_resume(void) __maybe_unused static int test_connect_as_pd3_source(void) { - int rx_id = 0; uint32_t rdo = RDO_FIXED(1, 500, 500, 0); + uint32_t pdo = PDO_FIXED(5000, 500, + PDO_FIXED_DUAL_ROLE | + PDO_FIXED_DATA_SWAP | + PDO_FIXED_COMM_CAP); /* DRP auto-toggling with AP in S0, source enabled. */ TEST_EQ(test_startup_and_resume(), EC_SUCCESS, "%d"); @@ -184,6 +189,7 @@ __maybe_unused static int test_connect_as_pd3_source(void) PD_ROLE_UFP, rx_id, 1, PD_REV30, 0), &rdo); + rx_id++; mock_set_alert(TCPC_REG_ALERT_RX_STATUS); TEST_EQ(verify_tcpci_transmit(TCPC_TX_SOP, PD_CTRL_ACCEPT, 0), EC_SUCCESS, "%d"); @@ -208,9 +214,10 @@ __maybe_unused static int test_connect_as_pd3_source(void) task_wait_event(10 * MSEC); mock_tcpci_receive(PD_MSG_SOP_PRIME, PD_HEADER(PD_CTRL_NOT_SUPPORTED, PD_PLUG_FROM_CABLE, - PD_ROLE_UFP, 1, + PD_ROLE_UFP, rx_id, 0, PD_REV30, 0), NULL); + rx_id++; mock_set_alert(TCPC_REG_ALERT_RX_STATUS); TEST_EQ(verify_tcpci_transmit(TCPC_TX_SOP, 0, PD_DATA_VENDOR_DEF), @@ -219,9 +226,22 @@ __maybe_unused static int test_connect_as_pd3_source(void) task_wait_event(10 * MSEC); mock_tcpci_receive(PD_MSG_SOP, PD_HEADER(PD_CTRL_NOT_SUPPORTED, PD_ROLE_SINK, - PD_ROLE_UFP, 2, + PD_ROLE_UFP, rx_id, 0, PD_REV30, 0), NULL); + rx_id++; + mock_set_alert(TCPC_REG_ALERT_RX_STATUS); + + 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); + mock_tcpci_receive(PD_MSG_SOP, + PD_HEADER(PD_DATA_SOURCE_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); @@ -319,9 +339,10 @@ __maybe_unused static int test_pd3_source_send_soft_reset(void) */ mock_tcpci_receive(PD_MSG_SOP, PD_HEADER(PD_CTRL_GET_SOURCE_CAP, PD_ROLE_SINK, - PD_ROLE_UFP, 3, + PD_ROLE_UFP, rx_id, 0, PD_REV30, 0), NULL); + rx_id++; mock_set_alert(TCPC_REG_ALERT_RX_STATUS); /* @@ -346,6 +367,8 @@ __maybe_unused static int test_pd3_source_send_soft_reset(void) void before_test(void) { + rx_id = 0; + mock_usb_mux_reset(); mock_tcpci_reset(); |