summaryrefslogtreecommitdiff
path: root/common/usbc/usb_tc_drp_acc_trysrc_sm.c
diff options
context:
space:
mode:
authorDenis Brockus <dbrockus@google.com>2021-02-17 16:09:29 -0700
committerCommit Bot <commit-bot@chromium.org>2021-03-02 00:12:20 +0000
commita4d04c52b68ba1a38c7b77e5c4a6ed2415391b05 (patch)
treee283bbdf9a9fa797555e48f62ccd3f74e5609e77 /common/usbc/usb_tc_drp_acc_trysrc_sm.c
parent6e6dd4f867b68d7bbd2f89c839cfb6d12a910f83 (diff)
downloadchrome-ec-a4d04c52b68ba1a38c7b77e5c4a6ed2415391b05.tar.gz
TCPMv2: PD Timers - Add TC PDDebounce to framework
BUG=b:178029034 BRANCH=none TEST=make runtests Signed-off-by: Denis Brockus <dbrockus@google.com> Change-Id: I1a27ff33162e81fd7c328681ff823ab580d4d76b Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2707811 Commit-Queue: Denis Brockus <dbrockus@chromium.org> Tested-by: Denis Brockus <dbrockus@chromium.org> Reviewed-by: Diana Z <dzigterman@chromium.org>
Diffstat (limited to 'common/usbc/usb_tc_drp_acc_trysrc_sm.c')
-rw-r--r--common/usbc/usb_tc_drp_acc_trysrc_sm.c28
1 files changed, 17 insertions, 11 deletions
diff --git a/common/usbc/usb_tc_drp_acc_trysrc_sm.c b/common/usbc/usb_tc_drp_acc_trysrc_sm.c
index 3fa3c0e143..d284beff4e 100644
--- a/common/usbc/usb_tc_drp_acc_trysrc_sm.c
+++ b/common/usbc/usb_tc_drp_acc_trysrc_sm.c
@@ -404,12 +404,6 @@ static struct type_c {
uint32_t flags;
/* Time a port shall wait before it can determine it is attached */
uint64_t cc_debounce;
- /*
- * Time a Sink port shall wait before it can determine it is detached
- * due to the potential for USB PD signaling on CC as described in
- * the state definitions.
- */
- uint64_t pd_debounce;
#ifdef CONFIG_USB_PD_TRY_SRC
/*
* Time a port shall wait before it can determine it is
@@ -2278,7 +2272,7 @@ static void tc_attach_wait_snk_run(const int port)
/* Debounce the cc state */
if (new_cc_state != tc[port].cc_state) {
tc[port].cc_debounce = get_time().val + PD_T_CC_DEBOUNCE;
- tc[port].pd_debounce = get_time().val + PD_T_PD_DEBOUNCE;
+ pd_timer_enable(port, TC_TIMER_PD_DEBOUNCE, PD_T_PD_DEBOUNCE);
tc[port].cc_state = new_cc_state;
return;
}
@@ -2290,7 +2284,7 @@ static void tc_attach_wait_snk_run(const int port)
* Unattached.SNK.
*/
if (new_cc_state == PD_CC_NONE &&
- get_time().val > tc[port].pd_debounce) {
+ pd_timer_is_expired(port, TC_TIMER_PD_DEBOUNCE)) {
/* We are detached */
if (drp_state[port] == PD_DRP_TOGGLE_OFF
|| drp_state[port] == PD_DRP_FREEZE
@@ -2341,6 +2335,11 @@ static void tc_attach_wait_snk_run(const int port)
}
}
+static void tc_attach_wait_snk_exit(const int port)
+{
+ pd_timer_disable(port, TC_TIMER_PD_DEBOUNCE);
+}
+
/**
* Attached.SNK, shared with Debug Accessory.SNK
*/
@@ -3387,15 +3386,15 @@ static void tc_try_wait_snk_run(const int port)
/* Debounce the cc state */
if (new_cc_state != tc[port].cc_state) {
tc[port].cc_state = new_cc_state;
- tc[port].pd_debounce = get_time().val + PD_T_PD_DEBOUNCE;
+ pd_timer_enable(port, TC_TIMER_PD_DEBOUNCE, PD_T_PD_DEBOUNCE);
}
/*
* The port shall transition to Unattached.SNK when the state of both
* of the CC1 and CC2 pins is SNK.Open for at least tPDDebounce.
*/
- if ((get_time().val > tc[port].pd_debounce) &&
- (new_cc_state == PD_CC_NONE)) {
+ if (new_cc_state == PD_CC_NONE &&
+ pd_timer_is_expired(port, TC_TIMER_PD_DEBOUNCE)) {
set_state_tc(port, TC_UNATTACHED_SNK);
return;
}
@@ -3408,6 +3407,11 @@ static void tc_try_wait_snk_run(const int port)
pd_is_vbus_present(port))
set_state_tc(port, TC_ATTACHED_SNK);
}
+
+static void tc_try_wait_snk_exit(const int port)
+{
+ pd_timer_disable(port, TC_TIMER_PD_DEBOUNCE);
+}
#endif
/*
@@ -3838,6 +3842,7 @@ static __const_data const struct usb_state tc_states[] = {
[TC_ATTACH_WAIT_SNK] = {
.entry = tc_attach_wait_snk_entry,
.run = tc_attach_wait_snk_run,
+ .exit = tc_attach_wait_snk_exit,
.parent = &tc_states[TC_CC_RD],
},
[TC_ATTACHED_SNK] = {
@@ -3870,6 +3875,7 @@ static __const_data const struct usb_state tc_states[] = {
[TC_TRY_WAIT_SNK] = {
.entry = tc_try_wait_snk_entry,
.run = tc_try_wait_snk_run,
+ .exit = tc_try_wait_snk_exit,
.parent = &tc_states[TC_CC_RD],
},
#endif /* CONFIG_USB_PD_TRY_SRC */