summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJameson Thies <jthies@google.com>2023-01-12 22:52:37 +0000
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2023-01-13 19:46:36 +0000
commit55198413f19b7bb43ed7ff9578e30c663ef4c664 (patch)
treeee00ff0f86666bd7d92406acdee12cfdf884ce59
parent088f0aba43e335e5aaa916517d5b6b569188768d (diff)
downloadchrome-ec-55198413f19b7bb43ed7ff9578e30c663ef4c664.tar.gz
zephyr: make the test emulator's PD revision configurable
This CL updates the tcpci partner emulator to have an internal variable define how it responds to Get_Revision, instead of hardcoding it's RMDO to 0x31000000 (USBPD 3.1). BUG=b:236868370 BRANCH=None TEST=./twister -p native_posix -p unit_testing Signed-off-by: Jameson Thies <jthies@google.com> Change-Id: Ib212383ce2a29c87f7284a971b2ad96cce6b68c6 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/4159990 Reviewed-by: Abe Levkoy <alevkoy@chromium.org> Code-Coverage: Zoss <zoss-cl-coverage@prod.google.com>
-rw-r--r--zephyr/emul/tcpc/emul_tcpci_partner_common.c1
-rw-r--r--zephyr/emul/tcpc/emul_tcpci_partner_src.c14
-rw-r--r--zephyr/include/emul/tcpc/emul_tcpci_partner_common.h2
-rw-r--r--zephyr/test/drivers/default/src/integration/usbc/usb_pd_rev3.c3
4 files changed, 14 insertions, 6 deletions
diff --git a/zephyr/emul/tcpc/emul_tcpci_partner_common.c b/zephyr/emul/tcpc/emul_tcpci_partner_common.c
index 0473f967dc..7a1670fe0e 100644
--- a/zephyr/emul/tcpc/emul_tcpci_partner_common.c
+++ b/zephyr/emul/tcpc/emul_tcpci_partner_common.c
@@ -1634,6 +1634,7 @@ void tcpci_partner_init(struct tcpci_partner_data *data, enum pd_rev_type rev)
data->identity_vdos = 0;
data->svids_vdos = 0;
data->modes_vdos = 0;
+ data->rmdo = 0;
data->enter_usb_accept = false;
tcpci_partner_common_clear_ams_ctrl_msg(data);
diff --git a/zephyr/emul/tcpc/emul_tcpci_partner_src.c b/zephyr/emul/tcpc/emul_tcpci_partner_src.c
index 7f4245fa6f..c89e40379c 100644
--- a/zephyr/emul/tcpc/emul_tcpci_partner_src.c
+++ b/zephyr/emul/tcpc/emul_tcpci_partner_src.c
@@ -126,9 +126,6 @@ tcpci_src_emul_handle_sop_msg(struct tcpci_partner_extension *ext,
CONTAINER_OF(ext, struct tcpci_src_emul_data, ext);
uint16_t header;
- /* Data used for responses */
- uint32_t rmdo;
-
header = sys_get_le16(msg->buf);
if (PD_HEADER_EXT(header)) {
@@ -168,9 +165,14 @@ tcpci_src_emul_handle_sop_msg(struct tcpci_partner_extension *ext,
0);
return TCPCI_PARTNER_COMMON_MSG_HANDLED;
case PD_CTRL_GET_REVISION:
- rmdo = 0x31000000;
- tcpci_partner_send_data_msg(
- common_data, PD_DATA_REVISION, &rmdo, 1, 0);
+ if (!common_data->rmdo) {
+ tcpci_partner_send_control_msg(
+ common_data, PD_CTRL_NOT_SUPPORTED, 0);
+ return TCPCI_PARTNER_COMMON_MSG_HANDLED;
+ }
+ tcpci_partner_send_data_msg(common_data,
+ PD_DATA_REVISION,
+ &common_data->rmdo, 1, 0);
return TCPCI_PARTNER_COMMON_MSG_HANDLED;
default:
return TCPCI_PARTNER_COMMON_MSG_NOT_HANDLED;
diff --git a/zephyr/include/emul/tcpc/emul_tcpci_partner_common.h b/zephyr/include/emul/tcpc/emul_tcpci_partner_common.h
index dd8909c2ca..91e7d057f5 100644
--- a/zephyr/include/emul/tcpc/emul_tcpci_partner_common.h
+++ b/zephyr/include/emul/tcpc/emul_tcpci_partner_common.h
@@ -187,6 +187,8 @@ struct tcpci_partner_data {
*/
bool have_response[PD_BATT_MAX];
} battery_capabilities;
+ /* RMDO returned by partner in response to a Get_Revision message */
+ uint32_t rmdo;
/* Used to control accept/reject for partner port of Enter_USB msg */
bool enter_usb_accept;
diff --git a/zephyr/test/drivers/default/src/integration/usbc/usb_pd_rev3.c b/zephyr/test/drivers/default/src/integration/usbc/usb_pd_rev3.c
index f328f343ba..0ac22ae359 100644
--- a/zephyr/test/drivers/default/src/integration/usbc/usb_pd_rev3.c
+++ b/zephyr/test/drivers/default/src/integration/usbc/usb_pd_rev3.c
@@ -43,6 +43,9 @@ static void *usb_attach_5v_3a_pd_source_setup(void)
test_fixture.src_ext.pdo[1] =
PDO_FIXED(5000, 3000, PDO_FIXED_UNCONSTRAINED);
+ /* Set the partner's USB PD Revision to 3.1 */
+ test_fixture.source_5v_3a.rmdo = 0x31000000;
+
return &test_fixture;
}