diff options
author | Poornima Tom <poornima.tom@intel.com> | 2020-10-21 02:37:17 +0530 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-10-28 21:06:46 +0000 |
commit | d71b1068563579dce725cab892cea21f8498f297 (patch) | |
tree | d2a357d13090e505941097240d40f74615b7ee06 | |
parent | 4a9ba76bf50fe343f0665935489d32c4df3f7e26 (diff) | |
download | chrome-ec-d71b1068563579dce725cab892cea21f8498f297.tar.gz |
FUSB302:Implement SOP' & SOP'' in transmit function
Implementation of correct tokens to be transmitted
by the driver, when SOP'/SOP'' is the transmit type.
This is required to establish proper communication with
electronically marked cables.
BRANCH=None
BUG=b:171380594
TEST=Tested on ADL-RVP
Signed-off-by: Poornima Tom <poornima.tom@intel.com>
Change-Id: Ibd714425c2b7a63b9ba68ea92f1eaab5bd6a2e1a
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2490683
Reviewed-by: Keith Short <keithshort@chromium.org>
-rw-r--r-- | driver/tcpm/fusb302.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/driver/tcpm/fusb302.c b/driver/tcpm/fusb302.c index 5ec8c284c2..458286cb35 100644 --- a/driver/tcpm/fusb302.c +++ b/driver/tcpm/fusb302.c @@ -870,6 +870,30 @@ static int fusb302_tcpm_transmit(int port, enum tcpm_transmit_type type, buf[buf_pos++] = FUSB302_TKN_SYNC2; return fusb302_send_message(port, header, data, buf, buf_pos); + case TCPC_TX_SOP_PRIME: + + /* put register address first for of burst tcpc write */ + buf[buf_pos++] = TCPC_REG_FIFOS; + + /* Write the SOP' Ordered Set into TX FIFO */ + buf[buf_pos++] = FUSB302_TKN_SYNC1; + buf[buf_pos++] = FUSB302_TKN_SYNC1; + buf[buf_pos++] = FUSB302_TKN_SYNC3; + buf[buf_pos++] = FUSB302_TKN_SYNC3; + + return fusb302_send_message(port, header, data, buf, buf_pos); + case TCPC_TX_SOP_PRIME_PRIME: + + /* put register address first for of burst tcpc write */ + buf[buf_pos++] = TCPC_REG_FIFOS; + + /* Write the SOP'' Ordered Set into TX FIFO */ + buf[buf_pos++] = FUSB302_TKN_SYNC1; + buf[buf_pos++] = FUSB302_TKN_SYNC3; + buf[buf_pos++] = FUSB302_TKN_SYNC1; + buf[buf_pos++] = FUSB302_TKN_SYNC3; + + return fusb302_send_message(port, header, data, buf, buf_pos); case TCPC_TX_HARD_RESET: /* Simply hit the SEND_HARD_RESET bit */ tcpc_read(port, TCPC_REG_CONTROL3, ®); |