summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPoornima Tom <poornima.tom@intel.com>2020-10-21 02:37:17 +0530
committerCommit Bot <commit-bot@chromium.org>2020-10-28 21:06:46 +0000
commitd71b1068563579dce725cab892cea21f8498f297 (patch)
treed2a357d13090e505941097240d40f74615b7ee06
parent4a9ba76bf50fe343f0665935489d32c4df3f7e26 (diff)
downloadchrome-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.c24
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, &reg);