diff options
author | Denis Brockus <dbrockus@google.com> | 2020-05-30 12:20:36 -0600 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-06-11 02:47:30 +0000 |
commit | 0ca41341b9bb80b3e640aaa516a16e2096327515 (patch) | |
tree | 674ace0f1290cb1327071857912500b403cec09d /common/usbc/usb_prl_sm.c | |
parent | 8a834c60790e232db196032eec905f56032c5515 (diff) | |
download | chrome-ec-0ca41341b9bb80b3e640aaa516a16e2096327515.tar.gz |
tcpmv2: cache analog and collision Rp in CL
Adding update_cc mechanism to keep correct Rp set
BUG=b:158291622
BRANCH=none
TEST=check Rp value over attach, hard reset and pr-swap
Signed-off-by: Denis Brockus <dbrockus@google.com>
Change-Id: I369c71e637cbb6a8fc37b434194ce39cc9bf5417
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2232830
Tested-by: Denis Brockus <dbrockus@chromium.org>
Reviewed-by: Denis Brockus <dbrockus@chromium.org>
Commit-Queue: Denis Brockus <dbrockus@chromium.org>
Auto-Submit: Denis Brockus <dbrockus@chromium.org>
Diffstat (limited to 'common/usbc/usb_prl_sm.c')
-rw-r--r-- | common/usbc/usb_prl_sm.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/common/usbc/usb_prl_sm.c b/common/usbc/usb_prl_sm.c index 9ddca79416..8585fa93a1 100644 --- a/common/usbc/usb_prl_sm.c +++ b/common/usbc/usb_prl_sm.c @@ -483,7 +483,13 @@ static void prl_init(int port) int i; const struct sm_ctx cleared = {}; + /* + * flags without PRL_FLAGS_SINK_NG present means we are initially + * in SinkTxOK state + */ prl_tx[port].flags = 0; + if (IS_ENABLED(CONFIG_USB_PD_REV30)) + typec_select_src_collision_rp(port, SINK_TX_OK); prl_tx[port].last_xmit_type = TCPC_TX_SOP; prl_tx[port].xmit_status = TCPC_TX_UNSET; @@ -757,8 +763,8 @@ static void prl_tx_wait_for_message_request_run(const int port) if (IS_ENABLED(CONFIG_USB_PD_REV30) && !pe_in_local_ams(port)) { /* Note PRL_Tx_Src_Sink_Tx is embedded here. */ if (PRL_TX_CHK_FLAG(port, PRL_FLAGS_SINK_NG)) { - tcpm_select_rp_value(port, SINK_TX_OK); - tcpm_set_cc(port, TYPEC_CC_RP); + typec_select_src_collision_rp(port, SINK_TX_OK); + typec_update_cc(port); } PRL_TX_CLR_FLAG(port, PRL_FLAGS_SINK_NG | PRL_FLAGS_WAIT_SINK_OK); @@ -852,8 +858,8 @@ static void prl_tx_src_source_tx_entry(const int port) print_current_prl_tx_state(port); /* Set Rp = SinkTxNG */ - tcpm_select_rp_value(port, SINK_TX_NG); - tcpm_set_cc(port, TYPEC_CC_RP); + typec_select_src_collision_rp(port, SINK_TX_NG); + typec_update_cc(port); } static void prl_tx_src_source_tx_run(const int port) |