summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorDenis Brockus <dbrockus@google.com>2020-08-27 15:34:03 -0600
committerCommit Bot <commit-bot@chromium.org>2020-09-02 21:50:25 +0000
commitbc7b14284465675c69cfa186da6a3389debfde16 (patch)
treea0e3705a72ba983e7cfca0fe5bf75e73a8e31c0c /test
parent44302acb01290bea42acf35bd15a390a36a6688d (diff)
downloadchrome-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.h1
-rw-r--r--test/usb_tcpmv2_tcpci.c31
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();