summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam Hurst <shurst@google.com>2020-04-26 09:50:55 -0700
committerCommit Bot <commit-bot@chromium.org>2020-04-29 21:50:31 +0000
commitfe253207e94a3033c44d126ec5ab5208f24efe47 (patch)
treefb92869ba21cecf52858914d1db241d25b0b46f5
parent9abfcc7ced52511ce1c6d501a4b54014fa21f19e (diff)
downloadchrome-ec-fe253207e94a3033c44d126ec5ab5208f24efe47.tar.gz
TCPMv2: Signal to TC Layer that PR Swap is complete on state exit
Inform Type-C layer that Power Role Swap is complete on state exit from pe_prs_src_snk_wait_source_on and pe_prs_snk_src_source_on states. This gurantees that the Type-C layer exits power role swap mode if the two PE states previously mentioned exit due to an error. BUG=b:155011510 BRANCH=none TEST=make -j buildall manual: using a hatch, PD_FAFT passes Change-Id: Ifd887006761332ed340b35163cf1a08ee1b4e4cf Signed-off-by: Sam Hurst <shurst@google.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2167136 Reviewed-by: Jett Rink <jettrink@chromium.org>
-rw-r--r--common/usbc/usb_pe_drp_sm.c15
-rw-r--r--common/usbc/usb_prl_sm.c2
2 files changed, 14 insertions, 3 deletions
diff --git a/common/usbc/usb_pe_drp_sm.c b/common/usbc/usb_pe_drp_sm.c
index c8a5011d47..c424f6d8a7 100644
--- a/common/usbc/usb_pe_drp_sm.c
+++ b/common/usbc/usb_pe_drp_sm.c
@@ -3358,8 +3358,8 @@ static void pe_prs_src_snk_wait_source_on_run(int port)
ext = PD_HEADER_EXT(rx_emsg[port].header);
if ((ext == 0) && (cnt == 0) && (type == PD_CTRL_PS_RDY)) {
- tc_pr_swap_complete(port);
pe[port].ps_source_timer = TIMER_DISABLED;
+
PE_SET_FLAG(port, PE_FLAGS_PR_SWAP_COMPLETE);
set_state_pe(port, PE_SNK_STARTUP);
return;
@@ -3380,6 +3380,11 @@ static void pe_prs_src_snk_wait_source_on_run(int port)
}
}
+static void pe_prs_src_snk_wait_source_on_exit(int port)
+{
+ tc_pr_swap_complete(port);
+}
+
/**
* PE_PRS_SRC_SNK_Send_Swap
*/
@@ -3606,11 +3611,15 @@ static void pe_prs_snk_src_source_on_run(int port)
/* Run swap source timer on entry to pe_src_startup */
PE_SET_FLAG(port, PE_FLAGS_PR_SWAP_COMPLETE);
- tc_pr_swap_complete(port);
set_state_pe(port, PE_SRC_STARTUP);
}
}
+static void pe_prs_snk_src_source_on_exit(int port)
+{
+ tc_pr_swap_complete(port);
+}
+
/**
* PE_PRS_SNK_SRC_Send_Swap
* PE_FRS_SNK_SRC_Send_Swap
@@ -5338,6 +5347,7 @@ static const struct usb_state pe_states[] = {
[PE_PRS_SRC_SNK_WAIT_SOURCE_ON] = {
.entry = pe_prs_src_snk_wait_source_on_entry,
.run = pe_prs_src_snk_wait_source_on_run,
+ .exit = pe_prs_src_snk_wait_source_on_exit,
},
[PE_PRS_SRC_SNK_SEND_SWAP] = {
.entry = pe_prs_src_snk_send_swap_entry,
@@ -5368,6 +5378,7 @@ static const struct usb_state pe_states[] = {
[PE_PRS_SNK_SRC_SOURCE_ON] = {
.entry = pe_prs_snk_src_source_on_entry,
.run = pe_prs_snk_src_source_on_run,
+ .exit = pe_prs_snk_src_source_on_exit,
.parent = &pe_states[PE_PRS_FRS_SHARED],
},
/* State actions are shared with PE_FRS_SNK_SRC_SEND_SWAP */
diff --git a/common/usbc/usb_prl_sm.c b/common/usbc/usb_prl_sm.c
index cdfc59e637..8b375abfab 100644
--- a/common/usbc/usb_prl_sm.c
+++ b/common/usbc/usb_prl_sm.c
@@ -1585,7 +1585,7 @@ static void prl_rx_wait_for_phy_message(const int port, int evt)
if (cnt > CHK_BUF_SIZE)
cnt = CHK_BUF_SIZE;
- /* dump received packet content (only dump ping at debug level 3) */
+ /* dump received packet content (only dump ping at debug level MAX) */
if ((prl_debug_level >= DEBUG_LEVEL_1 && type != PD_CTRL_PING) ||
prl_debug_level >= DEBUG_LEVEL_3) {
int p;