diff options
author | Jameson Thies <jthies@google.com> | 2023-01-12 22:52:37 +0000 |
---|---|---|
committer | Chromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2023-01-13 19:46:36 +0000 |
commit | 55198413f19b7bb43ed7ff9578e30c663ef4c664 (patch) | |
tree | ee00ff0f86666bd7d92406acdee12cfdf884ce59 | |
parent | 088f0aba43e335e5aaa916517d5b6b569188768d (diff) | |
download | chrome-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>
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; } |