From 2dd2eecaa743a65d8369c7799bbc1450b0d91d0e Mon Sep 17 00:00:00 2001 From: Denis Brockus Date: Tue, 15 Oct 2019 06:53:06 -0600 Subject: pd: fix timer issue on pe_prs_snk_src_source_on_run BUG=none BRANCH=none TEST=make buildall -j Change-Id: I12fbeb0a85d45bce8173c0c3831f663f5b618cc8 Signed-off-by: Denis Brockus Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1862621 Reviewed-by: Jett Rink Reviewed-by: Edward Hill --- common/usbc/usb_pe_drp_sm.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/common/usbc/usb_pe_drp_sm.c b/common/usbc/usb_pe_drp_sm.c index d0e91e5098..abd5e5bb6b 100644 --- a/common/usbc/usb_pe_drp_sm.c +++ b/common/usbc/usb_pe_drp_sm.c @@ -3069,15 +3069,14 @@ static void pe_prs_snk_src_source_on_entry(int port) static void pe_prs_snk_src_source_on_run(int port) { /* Wait until power supply turns on */ - if (get_time().val < pe[port].ps_source_timer) - return; - - if (pe[port].ps_source_timer != 0) { - /* update pe power role */ - pe[port].power_role = tc_get_power_role(port); - prl_send_ctrl_msg(port, TCPC_TX_SOP, PD_CTRL_PS_RDY); - /* reset timer so PD_CTRL_PS_RDY isn't sent again */ - pe[port].ps_source_timer = TIMER_DISABLED; + if (pe[port].ps_source_timer != TIMER_DISABLED) { + if (get_time().val >= pe[port].ps_source_timer) { + /* update pe power role */ + pe[port].power_role = tc_get_power_role(port); + prl_send_ctrl_msg(port, TCPC_TX_SOP, PD_CTRL_PS_RDY); + /* reset timer so PD_CTRL_PS_RDY isn't sent again */ + pe[port].ps_source_timer = TIMER_DISABLED; + } } /* -- cgit v1.2.1