summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJett Rink <jettrink@chromium.org>2020-03-24 16:31:59 -0600
committerCommit Bot <commit-bot@chromium.org>2020-03-27 22:12:44 +0000
commitcb893a4257bbb2ebc40940b6a557daa2102ec6fe (patch)
treee485d46265ca231633a26bcc1cacd9daa064cb58
parent90d47e5e3b7a957095b87330359592e19b174297 (diff)
downloadchrome-ec-cb893a4257bbb2ebc40940b6a557daa2102ec6fe.tar.gz
config: update TCPMv2 config options
Reorganize how the TCPMv2 options are used - Update documentation in config.h and bring TCPMv2 items close together - Make the layer defines consistent on how they include compilation units - Update tests to account for how files are included now - Remove unnecessary defines in board.h since they are default on BRANCH=none BUG=none TEST=builds Change-Id: I91fca51648912deef44db23492ecc7775b2e3062 Signed-off-by: Jett Rink <jettrink@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2120063 Reviewed-by: Denis Brockus <dbrockus@chromium.org>
-rw-r--r--baseboard/volteer/baseboard.h3
-rw-r--r--common/usbc/build.mk31
-rw-r--r--common/usbc/usbc_task.c13
-rw-r--r--include/config.h95
-rw-r--r--test/test_config.h35
-rw-r--r--test/usb_pe_drp.c5
-rw-r--r--test/usb_prl.c31
-rw-r--r--test/usb_prl.tasklist3
8 files changed, 108 insertions, 108 deletions
diff --git a/baseboard/volteer/baseboard.h b/baseboard/volteer/baseboard.h
index e37ab14d1b..edd4152b9c 100644
--- a/baseboard/volteer/baseboard.h
+++ b/baseboard/volteer/baseboard.h
@@ -135,9 +135,6 @@
/* TODO: b/145756626 - re-enable once all blocking issues resolved */
#if 0
#define CONFIG_USB_PD_TCPMV2
-#define CONFIG_USB_TYPEC_SM
-#define CONFIG_USB_PRL_SM
-#define CONFIG_USB_PE_SM
#define CONFIG_USB_DRP_ACC_TRYSRC
#else
/*
diff --git a/common/usbc/build.mk b/common/usbc/build.mk
index df86de996f..f8f6f5aa33 100644
--- a/common/usbc/build.mk
+++ b/common/usbc/build.mk
@@ -8,17 +8,30 @@
_usbc_dir:=$(dir $(lastword $(MAKEFILE_LIST)))
ifneq ($(CONFIG_USB_PD_TCPMV2),)
-all-obj-$(CONFIG_USB_PD_TCPMV2)+=$(_usbc_dir)usb_sm.o
-all-obj-$(CONFIG_USB_TYPEC_SM)+=$(_usbc_dir)usbc_task.o
-all-obj-$(CONFIG_USB_PRL_SM)+=$(_usbc_dir)usb_prl_sm.o
+all-obj-y+=$(_usbc_dir)usb_sm.o
+all-obj-y+=$(_usbc_dir)usbc_task.o
+
+# Type-C state machines
+ifneq ($(CONFIG_USB_TYPEC_SM),)
+all-obj-$(CONFIG_USB_VPD)+=$(_usbc_dir)usb_tc_vpd_sm.o
+all-obj-$(CONFIG_USB_CTVPD)+=$(_usbc_dir)usb_tc_ctvpd_sm.o
+all-obj-$(CONFIG_USB_DRP_ACC_TRYSRC)+=$(_usbc_dir)usb_tc_drp_acc_trysrc_sm.o
+endif # CONFIG_USB_TYPEC_SM
+
+# Protocol state machine
+ifneq ($(CONFIG_USB_PRL_SM),)
+all-obj-y+=$(_usbc_dir)usb_prl_sm.o
+endif # CONFIG_USB_PRL_SM
+
+# Policy Engine state machines
ifneq ($(CONFIG_USB_PE_SM),)
all-obj-$(CONFIG_USB_VPD)+=$(_usbc_dir)usb_pe_ctvpd_sm.o
all-obj-$(CONFIG_USB_CTVPD)+=$(_usbc_dir)usb_pe_ctvpd_sm.o
all-obj-$(CONFIG_USB_DRP_ACC_TRYSRC)+=$(_usbc_dir)usb_pe_drp_sm.o
+endif # CONFIG_USB_PE_SM
+
+endif # CONFIG_USB_PD_TCPMV2
+
+# For testing
all-obj-$(CONFIG_TEST_USB_PE_SM)+=$(_usbc_dir)usb_pe_drp_sm.o
-endif
-all-obj-$(CONFIG_USB_VPD)+=$(_usbc_dir)usb_tc_vpd_sm.o
-all-obj-$(CONFIG_USB_CTVPD)+=$(_usbc_dir)usb_tc_ctvpd_sm.o
-all-obj-$(CONFIG_USB_DRP_ACC_TRYSRC)+=\
- $(_usbc_dir)usb_tc_drp_acc_trysrc_sm.o
-endif
+all-obj-$(CONFIG_TEST_SM)+=$(_usbc_dir)usb_sm.o
diff --git a/common/usbc/usbc_task.c b/common/usbc/usbc_task.c
index 9571c25d5a..6dde2712e6 100644
--- a/common/usbc/usbc_task.c
+++ b/common/usbc/usbc_task.c
@@ -111,7 +111,8 @@ void pd_task(void *u)
{
int port = TASK_ID_TO_PD_PORT(task_get_current());
- tc_state_init(port);
+ if (IS_ENABLED(CONFIG_USB_TYPEC_SM))
+ tc_state_init(port);
if (IS_ENABLED(CONFIG_USBC_PPC))
ppc_init(port);
@@ -135,7 +136,8 @@ void pd_task(void *u)
: USBC_EVENT_TIMEOUT);
/* handle events that affect the state machine as a whole */
- tc_event_check(port, evt);
+ if (IS_ENABLED(CONFIG_USB_TYPEC_SM))
+ tc_event_check(port, evt);
/*
* run port controller task to check CC and/or read incoming
@@ -144,15 +146,16 @@ void pd_task(void *u)
if (IS_ENABLED(CONFIG_USB_PD_TCPC))
tcpc_run(port, evt);
+ /* Run policy engine state machine */
if (IS_ENABLED(CONFIG_USB_PE_SM))
- /* Run policy engine state machine */
pe_run(port, evt, tc_get_pd_enabled(port));
+ /* Run protocol state machine */
if (IS_ENABLED(CONFIG_USB_PRL_SM))
- /* Run protocol state machine */
prl_run(port, evt, tc_get_pd_enabled(port));
/* Run TypeC state machine */
- tc_run(port);
+ if (IS_ENABLED(CONFIG_USB_TYPEC_SM))
+ tc_run(port);
}
}
diff --git a/include/config.h b/include/config.h
index 1b6e27cc90..45fdc4e2a4 100644
--- a/include/config.h
+++ b/include/config.h
@@ -894,30 +894,6 @@
#undef CONFIG_CHARGER_BQ25710_IDCHG_LIMIT_MA
/*
- * Define to enable Type-C State Machine. Must be enabled
- * with CONFIG_USB_PD_TCPMV2
- */
-#define CONFIG_USB_TYPEC_SM
-
-/*
- * Define to enable Protocol Layer State Machine. Must be enabled
- * with CONFIG_USB_PD_TCPMV2 and CONFIG_USB_TYPEC_SM
- */
-#define CONFIG_USB_PRL_SM
-
-/*
- * Define to enable Policy Engine State Machine. Must be enabled
- * with CONFIG_USB_SM_PD_TCPMV2 and CONFIG_USB_TYPEC_SM
- */
-#define CONFIG_USB_PE_SM
-
-/*
- * Define to enable Policy Engine State Machine. This is an override
- * that is used to just pull in PE for unit testing.
- */
-#undef CONFIG_TEST_USB_PE_SM
-
-/*
* Board specific maximum input current limit, in mA.
*/
#undef CONFIG_CHARGER_MAX_INPUT_CURRENT
@@ -3651,16 +3627,39 @@
/*
* Enables Version 2 of the Power Delivery state machine
*
- * Along with CONFIG_USB_PD_TCPMV2, you must ensure the follow
- * options are defined to use the new statemachine for USB-C:
- *
- * CONFIG_USB_PD_DECODE_SOP
- * CONFIG_USB_TYPEC_SM (defined by default)
- * CONFIG_USB_PRL_SM (defined by default)
- * One of CONFIG_USB_PE_* policy engine options.
+ * Along with CONFIG_USB_PD_TCPMV2, you must ensure a device type is also
+ * enabled otherwise an error will be emitted.
*/
#undef CONFIG_USB_PD_TCPMV2
+/*
+ * Device Types for TCPMv2.
+ *
+ * Exactly one must be defined when CONFIG_USB_PD_TCPMV2 is defined.
+ *
+ * VPD - Vconn Powered Device
+ * CTVPD - Charge Through Vconn Powered Device
+ * DRP_ACC_TRYSRC - Dual Role Port, Audio Accessory, and Try.SRC Device
+ */
+#undef CONFIG_USB_VPD
+#undef CONFIG_USB_CTVPD
+#undef CONFIG_USB_DRP_ACC_TRYSRC
+
+/*
+ * TCPMv2 statemachine layers
+ *
+ * All layers are defined by default. To opt-out, you must undef in your board.
+ * Also these defines don't take effect unless CONFIG_USB_PD_TCPMV2 is also
+ * defined.
+ *
+ * TYPEC_SM - Type-C deals with CC lines voltage level connections
+ * PRL_SM - Protocol handles flow and chunking TX and RX messages
+ * PE - Policy Engine handles PD communication flow
+ */
+#define CONFIG_USB_TYPEC_SM
+#define CONFIG_USB_PRL_SM
+#define CONFIG_USB_PE_SM
+
/* Enables Zork Auto Discharge Disconnect Changes */
#undef CONFIG_ZORK_AUTO_DISCHARGE
@@ -3994,15 +3993,6 @@
*/
#undef CONFIG_USB_PD_PREFER_MV
-/* Type-C VCONN Powered Device */
-#undef CONFIG_USB_VPD
-
-/* Type-C Charge Through VCONN Powered Device */
-#undef CONFIG_USB_CTVPD
-
-/* Type-C DRP with Accessory and Try.SRC */
-#undef CONFIG_USB_DRP_ACC_TRYSRC
-
/* Type-C Fast Role Swap */
#undef CONFIG_USB_TYPEC_PD_FAST_ROLE_SWAP
@@ -4508,6 +4498,18 @@
*/
#undef CONFIG_INTEL_VIRTUAL_MUX
+/*
+ * TEST ONLY defines (CONFIG_TEST_*)
+ *
+ * Used to include files for unit and other builds tests.
+ */
+
+ /* Define to enable Policy Engine State Machine. */
+#undef CONFIG_TEST_USB_PE_SM
+
+/* Define to enable USB State Machine framework. */
+#undef CONFIG_TEST_SM
+
/*****************************************************************************/
/*
* Include board and core configs, since those hold the CONFIG_ constants for a
@@ -4559,6 +4561,19 @@
#endif
#endif
+
+/******************************************************************************/
+/*
+ * Ensure that CONFIG_USB_PD_TCPMV2 is being used with exactly one device type
+ */
+#ifdef CONFIG_USB_PD_TCPMV2
+#if defined(CONFIG_USB_VPD) + \
+ defined(CONFIG_USB_CTVPD) + \
+ defined(CONFIG_USB_DRP_ACC_TRYSRC) != 1
+#error Must define exactly one CONFIG_USB_ device type.
+#endif
+#endif
+
/******************************************************************************/
/*
* Automatically define CONFIG_HOSTCMD_X86 if either child option is defined.
diff --git a/test/test_config.h b/test/test_config.h
index 1461d52874..eafc524180 100644
--- a/test/test_config.h
+++ b/test/test_config.h
@@ -304,36 +304,11 @@ int ncp15wb_calculate_temp(uint16_t adc);
#define CONFIG_SW_CRC
#endif
-#if defined(TEST_USB_SM_FRAMEWORK_H3)
-#define CONFIG_USB_PD_PORT_MAX_COUNT 1
-#undef CONFIG_USB_PRL_SM
-#undef CONFIG_USB_PE_SM
-#undef CONFIG_USB_TYPEC_SM
-#define CONFIG_USB_PD_TCPMV2
-#endif
-
-#if defined(TEST_USB_SM_FRAMEWORK_H2)
-#define CONFIG_USB_PD_PORT_MAX_COUNT 1
-#undef CONFIG_USB_PRL_SM
-#undef CONFIG_USB_PE_SM
-#undef CONFIG_USB_TYPEC_SM
-#define CONFIG_USB_PD_TCPMV2
-#endif
-
-#if defined(TEST_USB_SM_FRAMEWORK_H1)
-#define CONFIG_USB_PD_PORT_MAX_COUNT 1
-#undef CONFIG_USB_PRL_SM
-#undef CONFIG_USB_PE_SM
-#undef CONFIG_USB_TYPEC_SM
-#define CONFIG_USB_PD_TCPMV2
-#endif
-
-#if defined(TEST_USB_SM_FRAMEWORK_H0)
-#define CONFIG_USB_PD_PORT_MAX_COUNT 1
-#undef CONFIG_USB_PRL_SM
-#undef CONFIG_USB_PE_SM
-#undef CONFIG_USB_TYPEC_SM
-#define CONFIG_USB_PD_TCPMV2
+#if defined(TEST_USB_SM_FRAMEWORK_H3) || \
+ defined(TEST_USB_SM_FRAMEWORK_H2) || \
+ defined(TEST_USB_SM_FRAMEWORK_H1) || \
+ defined(TEST_USB_SM_FRAMEWORK_H0)
+#define CONFIG_TEST_SM
#endif
#if defined(TEST_USB_PRL)
diff --git a/test/usb_pe_drp.c b/test/usb_pe_drp.c
index 64699c4d02..f757adf8ec 100644
--- a/test/usb_pe_drp.c
+++ b/test/usb_pe_drp.c
@@ -41,6 +41,11 @@ void pd_set_vbus_discharge(int port, int enable)
gpio_set_level(GPIO_USB_C0_DISCHARGE, enable);
}
+uint8_t tc_get_pd_enabled(int port)
+{
+ return 1;
+}
+
/**
* Test section
*/
diff --git a/test/usb_prl.c b/test/usb_prl.c
index b99a6fdb51..f0d71a75d2 100644
--- a/test/usb_prl.c
+++ b/test/usb_prl.c
@@ -7,19 +7,19 @@
#include "common.h"
#include "crc.h"
#include "task.h"
+#include "tcpm.h"
#include "test_util.h"
#include "timer.h"
-#include "tcpm.h"
#include "usb_emsg.h"
-#include "usb_pe_sm.h"
-#include "usb_pd.h"
#include "usb_pd_test_util.h"
+#include "usb_pd.h"
+#include "usb_pe_sm.h"
#include "usb_prl_sm.h"
#include "usb_sm_checks.h"
+#include "usb_tc_sm.h"
#include "util.h"
#define PORT0 0
-#define PORT1 1
/*
* These enum definitions are declared in usb_prl_sm and are private to that
@@ -703,6 +703,11 @@ static int simulate_send_extended_data_msg(int port,
len);
}
+uint8_t tc_get_pd_enabled(int port)
+{
+ return pd_port[port].pd_enable;
+}
+
static void enable_prl(int port, int en)
{
tcpm_set_rx_enable(port, en);
@@ -1334,24 +1339,12 @@ static int test_phy_execute_hard_reset_msg(void)
return EC_SUCCESS;
}
-int pd_task(void *u)
-{
- int port = PORT0;
- int evt;
-
- while (1) {
- evt = task_wait_event(-1);
-
- tcpc_run(port, evt);
- prl_run(port, evt, pd_port[port].pd_enable);
- }
-
- return EC_SUCCESS;
-}
-
/* Reset the state machine between each test */
void before_test(void)
{
+ /* This test relies on explicitly cycling through events manually */
+ tc_pause_event_loop(PORT0);
+
pd_port[PORT0].mock_pe_message_sent = 0;
pd_port[PORT0].mock_pe_error = -1;
pd_port[PORT0].mock_pe_hard_reset_sent = 0;
diff --git a/test/usb_prl.tasklist b/test/usb_prl.tasklist
index 9c583f7906..eb41326e3e 100644
--- a/test/usb_prl.tasklist
+++ b/test/usb_prl.tasklist
@@ -7,5 +7,4 @@
* See CONFIG_TEST_TASK_LIST in config.h for details.
*/
#define CONFIG_TEST_TASK_LIST \
- TASK_TEST(PD_C0, pd_task, NULL, LARGER_TASK_STACK_SIZE) \
- TASK_TEST(PD_C1, pd_task, NULL, LARGER_TASK_STACK_SIZE)
+ TASK_TEST(PD_C0, pd_task, NULL, LARGER_TASK_STACK_SIZE)