summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShawn Nematbakhsh <shawnn@chromium.org>2016-10-21 11:49:03 -0700
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2016-10-21 19:30:45 +0000
commit6686ed576ef9ad5134622f9267f4a1a90b1fac85 (patch)
treedcacf6a2231831710e69a6f49a33b06b23bca14a
parent4163e81a2d8a77a3d82e97dcb0d56ccba3e2aa46 (diff)
downloadchrome-ec-6686ed576ef9ad5134622f9267f4a1a90b1fac85.tar.gz
tcpm: fusb302: Fix BIST mode
Upon request, enter BIST mode 2 (alternating 1/0 output pattern) for 50ms. BUG=chrome-os-partner:58282 BRANCH=gru TEST=Verify compliance test runs on kevin. Signed-off-by: Shawn Nematbakhsh <shawnn@chromium.org> Change-Id: Ie284066eb2fb54d1c567b516670d8bd966dc9a30 Reviewed-on: https://chromium-review.googlesource.com/401700 Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
-rw-r--r--driver/tcpm/fusb302.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/driver/tcpm/fusb302.c b/driver/tcpm/fusb302.c
index a76e814d0e..49c22c31a0 100644
--- a/driver/tcpm/fusb302.c
+++ b/driver/tcpm/fusb302.c
@@ -748,10 +748,22 @@ static int fusb302_tcpm_transmit(int port, enum tcpm_transmit_type type,
break;
case TCPC_TX_BIST_MODE_2:
- /* Simply hit the BIST_MODE2 bit */
+ /* Hit the BIST_MODE2 bit and start TX */
tcpc_read(port, TCPC_REG_CONTROL1, &reg);
reg |= TCPC_REG_CONTROL1_BIST_MODE2;
tcpc_write(port, TCPC_REG_CONTROL1, reg);
+
+ tcpc_read(port, TCPC_REG_CONTROL0, &reg);
+ reg |= TCPC_REG_CONTROL0_TX_START;
+ tcpc_write(port, TCPC_REG_CONTROL0, reg);
+
+ task_wait_event(PD_T_BIST_TRANSMIT);
+
+ /* Clear BIST mode bit, TX_START is self-clearing */
+ tcpc_read(port, TCPC_REG_CONTROL1, &reg);
+ reg &= ~TCPC_REG_CONTROL1_BIST_MODE2;
+ tcpc_write(port, TCPC_REG_CONTROL1, reg);
+
break;
default:
return EC_ERROR_UNIMPLEMENTED;
@@ -846,6 +858,7 @@ void fusb302_tcpc_alert(int port)
}
+/* For BIST receiving */
void tcpm_set_bist_test_data(int port)
{
int reg;