diff options
Diffstat (limited to 'common/usbc/usb_prl_sm.c')
-rw-r--r-- | common/usbc/usb_prl_sm.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/common/usbc/usb_prl_sm.c b/common/usbc/usb_prl_sm.c index 4fd0a79970..3d2e7a5bc4 100644 --- a/common/usbc/usb_prl_sm.c +++ b/common/usbc/usb_prl_sm.c @@ -1963,6 +1963,14 @@ static void prl_rx_wait_for_phy_message(const int port, int evt) uint8_t cnt; int8_t msid; + /* + * If PD3, wait for the RX chunk SM to copy the pdmsg into the extended + * buffer before overwriting pdmsg. + */ + if (IS_ENABLED(CONFIG_USB_PD_REV30) && + RCH_CHK_FLAG(port, PRL_FLAGS_MSG_RECEIVED)) + return; + /* If we don't have any message, just stop processing now. */ if (!tcpm_has_pending_message(port) || tcpm_dequeue_message(port, pdmsg[port].rx_chk_buf, &header)) |