summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorEdward Hill <ecgh@chromium.org>2020-08-05 19:50:07 -0600
committerCommit Bot <commit-bot@chromium.org>2020-08-12 23:05:27 +0000
commit4c3b024809702c348491c49bec4318a679a6ecad (patch)
tree6b191387274bf5c96e12cf3d6fd3e4fdb51ab8d2 /common
parentaf58e3697787aed2a44bdab20dbb0e4ae547b45e (diff)
downloadchrome-ec-4c3b024809702c348491c49bec4318a679a6ecad.tar.gz
test: Soft_Reset sent regardless of Rp value
Add test for TD.PD.SRC3.E26.Soft_Reset sent regardless of Rp value. BUG=b:161835483 BRANCH=none TEST=make -j run-usb_tcpmv2_tcpci Signed-off-by: Edward Hill <ecgh@chromium.org> Change-Id: I972bffcb1c7a330aef4ebdff98fcd33af9a667be Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2340486 Reviewed-by: Denis Brockus <dbrockus@chromium.org> Reviewed-by: Jett Rink <jettrink@chromium.org> Commit-Queue: Denis Brockus <dbrockus@chromium.org>
Diffstat (limited to 'common')
-rw-r--r--common/mock/tcpci_i2c_mock.c78
-rw-r--r--common/usbc/usb_pe_drp_sm.c6
2 files changed, 45 insertions, 39 deletions
diff --git a/common/mock/tcpci_i2c_mock.c b/common/mock/tcpci_i2c_mock.c
index 09864cc2d2..fa7268ddf4 100644
--- a/common/mock/tcpci_i2c_mock.c
+++ b/common/mock/tcpci_i2c_mock.c
@@ -10,7 +10,7 @@
#include "timer.h"
#define BUFFER_SIZE 100
-#define MOCK_WAIT_TIMEOUT (5 * SECOND)
+#define VERIFY_TIMEOUT (5 * SECOND)
struct tcpci_reg {
uint8_t offset;
@@ -138,31 +138,37 @@ static void print_header(const char *prefix, uint16_t header)
id, cnt, ext);
}
-int verify_tcpci_transmit(enum tcpm_transmit_type tx_type,
- enum pd_ctrl_msg_type ctrl_msg,
- enum pd_data_msg_type data_msg)
+static int verify_transmit(enum tcpm_transmit_type want_tx_type,
+ int want_tx_retry,
+ enum pd_ctrl_msg_type want_ctrl_msg,
+ enum pd_data_msg_type want_data_msg,
+ int timeout)
{
- uint64_t timeout = get_time().val + MOCK_WAIT_TIMEOUT;
+ uint64_t end_time = get_time().val + timeout;
TEST_EQ(tcpci_regs[TCPC_REG_TRANSMIT].value, 0, "%d");
- while (get_time().val < timeout) {
+ while (get_time().val < end_time) {
if (tcpci_regs[TCPC_REG_TRANSMIT].value != 0) {
+ int tx_type = TCPC_REG_TRANSMIT_TYPE(
+ tcpci_regs[TCPC_REG_TRANSMIT].value);
+ int tx_retry = TCPC_REG_TRANSMIT_RETRY(
+ tcpci_regs[TCPC_REG_TRANSMIT].value);
uint16_t header = UINT16_FROM_BYTE_ARRAY_LE(
tx_buffer, 1);
- int type = PD_HEADER_TYPE(header);
- int cnt = PD_HEADER_CNT(header);
- const uint16_t want_tx_reg = tx_type;
- const uint16_t tx_wo_retry =
- tcpci_regs[TCPC_REG_TRANSMIT].value & ~0x0030;
-
- /* Don't validate the retry portion of reg */
- TEST_EQ(tx_wo_retry, want_tx_reg, "0x%x");
- if (ctrl_msg != 0) {
- TEST_EQ(ctrl_msg, type, "0x%x");
- TEST_EQ(cnt, 0, "%d");
- } else {
- TEST_EQ(data_msg, type, "0x%x");
- TEST_GE(cnt, 1, "%d");
+ int pd_type = PD_HEADER_TYPE(header);
+ int pd_cnt = PD_HEADER_CNT(header);
+
+ TEST_EQ(tx_type, want_tx_type, "%d");
+ if (want_tx_retry >= 0)
+ TEST_EQ(tx_retry, want_tx_retry, "%d");
+
+ if (want_ctrl_msg != 0) {
+ TEST_EQ(pd_type, want_ctrl_msg, "0x%x");
+ TEST_EQ(pd_cnt, 0, "%d");
+ }
+ if (want_data_msg != 0) {
+ TEST_EQ(pd_type, want_data_msg, "0x%x");
+ TEST_GE(pd_cnt, 1, "%d");
}
tcpci_regs[TCPC_REG_TRANSMIT].value = 0;
return EC_SUCCESS;
@@ -173,25 +179,25 @@ int verify_tcpci_transmit(enum tcpm_transmit_type tx_type,
return EC_ERROR_UNKNOWN;
}
-int verify_tcpci_tx_retry_count(const uint8_t retry_count)
+int verify_tcpci_transmit(enum tcpm_transmit_type tx_type,
+ enum pd_ctrl_msg_type ctrl_msg,
+ enum pd_data_msg_type data_msg)
{
- uint64_t timeout = get_time().val + MOCK_WAIT_TIMEOUT;
-
- TEST_EQ(tcpci_regs[TCPC_REG_TRANSMIT].value, 0, "%d");
- while (get_time().val < timeout) {
- if (tcpci_regs[TCPC_REG_TRANSMIT].value != 0) {
- const uint16_t tx_retry = TCPC_REG_TRANSMIT_RETRY(
- tcpci_regs[TCPC_REG_TRANSMIT].value);
+ return verify_transmit(tx_type, -1, ctrl_msg, data_msg, VERIFY_TIMEOUT);
+}
- TEST_EQ(tx_retry, retry_count, "%d");
+int verify_tcpci_tx_timeout(enum tcpm_transmit_type tx_type,
+ enum pd_ctrl_msg_type ctrl_msg,
+ enum pd_data_msg_type data_msg,
+ int timeout)
+{
+ return verify_transmit(tx_type, -1, ctrl_msg, data_msg, timeout);
+}
- tcpci_regs[TCPC_REG_TRANSMIT].value = 0;
- return EC_SUCCESS;
- }
- task_wait_event(5 * MSEC);
- }
- TEST_ASSERT(0);
- return EC_ERROR_UNKNOWN;
+int verify_tcpci_tx_retry_count(enum tcpm_transmit_type tx_type,
+ int retry_count)
+{
+ return verify_transmit(tx_type, retry_count, 0, 0, VERIFY_TIMEOUT);
}
void mock_tcpci_receive(enum pd_msg_type sop, uint16_t header,
diff --git a/common/usbc/usb_pe_drp_sm.c b/common/usbc/usb_pe_drp_sm.c
index 34d597f162..5de59c56c2 100644
--- a/common/usbc/usb_pe_drp_sm.c
+++ b/common/usbc/usb_pe_drp_sm.c
@@ -736,7 +736,6 @@ static inline void send_ctrl_msg(int port, enum tcpm_transmit_type type,
#define prl_send_ext_data_msg DO_NOT_USE
#define prl_send_ctrl_msg DO_NOT_USE
-
static void pe_init(int port)
{
pe[port].flags = 0;
@@ -5583,7 +5582,7 @@ uint8_t pd_get_src_cap_cnt(int port)
void pd_dfp_discovery_init(int port)
{
- memset(&pe[port].discovery, 0, sizeof(pe[port].discovery));
+ memset(pe[port].discovery, 0, sizeof(pe[port].discovery));
memset(pe[port].partner_amodes, 0, sizeof(pe[port].partner_amodes));
/* Reset the DPM and DP modules to enable alternate mode entry. */
@@ -5600,13 +5599,14 @@ void pd_dfp_discovery_init(int port)
#ifdef CONFIG_USB_PD_ALT_MODE_DFP
struct pd_discovery *pd_get_am_discovery(int port, enum tcpm_transmit_type type)
{
+ ASSERT(type < DISCOVERY_TYPE_COUNT);
return &pe[port].discovery[type];
}
struct partner_active_modes *pd_get_partner_active_modes(int port,
enum tcpm_transmit_type type)
{
- assert(type < AMODE_TYPE_COUNT);
+ ASSERT(type < AMODE_TYPE_COUNT);
return &pe[port].partner_amodes[type];
}