summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTang Zhentian1 <ztang@analogixsemi.com>2016-09-09 10:49:22 +0800
committerchrome-bot <chrome-bot@chromium.org>2016-09-21 19:37:19 -0700
commit0fbbafc151fd2d08c7aa8400a77c103bd019c245 (patch)
treeca32cc99165a4779d34553197f192f0b4a1c91b4
parent0174d4f85bc83d9081c39de1d5399cab45c61a72 (diff)
downloadchrome-ec-0fbbafc151fd2d08c7aa8400a77c103bd019c245.tar.gz
tcpm: anx74xx: fix wrong clear CABLE_DET bit in 0x50:43 register.
BUG=None TEST=Verify cable detect is correct. BRANCH=None Change-Id: I6eb7c6cd979120835f89bbb68116ddbc03813f3b Signed-off-by: Tang Zhentian1 <ztang@analogixsemi.com> Reviewed-on: https://chromium-review.googlesource.com/382868 Commit-Ready: Kevin K Wong <kevin.k.wong@intel.com> Tested-by: Kevin K Wong <kevin.k.wong@intel.com> Reviewed-by: Shawn N <shawnn@chromium.org>
-rw-r--r--driver/tcpm/anx74xx.c24
1 files changed, 14 insertions, 10 deletions
diff --git a/driver/tcpm/anx74xx.c b/driver/tcpm/anx74xx.c
index 8ce164d817..3da89c108c 100644
--- a/driver/tcpm/anx74xx.c
+++ b/driver/tcpm/anx74xx.c
@@ -144,21 +144,25 @@ static int anx74xx_tcpm_mux_init(int i2c_addr)
static int anx74xx_tcpm_mux_exit(int port)
{
- int rv = EC_SUCCESS;
-
- rv |= tcpc_write(port, ANX74XX_REG_ANALOG_CTRL_2,
- ANX74XX_REG_MODE_TRANS);
- rv |= tcpc_write(port, ANX74XX_REG_ANALOG_CTRL_1,
- 0x0);
- rv |= tcpc_write(port, ANX74XX_REG_ANALOG_CTRL_5,
- 0x04);
- rv |= tcpc_write(port, ANX74XX_REG_ANALOG_CTRL_2,
- 0x0);
+ int rv = EC_SUCCESS;
+ int reg = 0x0;
+
+ rv = tcpc_read(port, ANX74XX_REG_ANALOG_CTRL_2, &reg);
if (rv)
return EC_ERROR_UNKNOWN;
+
+ rv |= tcpc_write(port, ANX74XX_REG_ANALOG_CTRL_2, reg | ANX74XX_REG_MODE_TRANS);
+ rv |= tcpc_write(port, ANX74XX_REG_ANALOG_CTRL_1, 0x0);
+ rv |= tcpc_write(port, ANX74XX_REG_ANALOG_CTRL_5, 0x04);
+ rv |= tcpc_write(port, ANX74XX_REG_ANALOG_CTRL_2, reg & 0x09);
+ if (rv)
+ return EC_ERROR_UNKNOWN;
+
return rv;
+
}
+
static int anx74xx_set_mux(int port, int polarity)
{
int reg, rv = EC_SUCCESS;