From a87663f6dc431e8154b77c49ad7eaa8eb0e7bc4e Mon Sep 17 00:00:00 2001 From: Shawn Nematbakhsh Date: Fri, 2 Sep 2016 11:16:12 -0700 Subject: [PATCH] tcpm: anx74xx: Initialize regs for proper CC cye diagram BUG=chrome-os-partner:56788 BRANCH=None TEST=Verify CC eye diagram looks better. Change-Id: I4880e81b0a4737a303027513e77c9a66845472e2 Signed-off-by: Shawn Nematbakhsh Reviewed-on: https://chromium-review.googlesource.com/380352 Commit-Ready: Shawn N Tested-by: Kevin K Wong Tested-by: Shawn N Reviewed-by: Shawn N --- driver/tcpm/anx74xx.c | 24 ++++++++++++++++++++++-- driver/tcpm/anx74xx.h | 1 + 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/driver/tcpm/anx74xx.c b/driver/tcpm/anx74xx.c index 689d6d1799..889d4f0bd4 100644 --- a/driver/tcpm/anx74xx.c +++ b/driver/tcpm/anx74xx.c @@ -150,10 +150,17 @@ static int anx74xx_tcpm_mux_exit(int port) rv = tcpc_read(port, ANX74XX_REG_ANALOG_CTRL_2, ®); if (rv) return EC_ERROR_UNKNOWN; - rv |= tcpc_write(port, ANX74XX_REG_ANALOG_CTRL_2, reg | ANX74XX_REG_MODE_TRANS); + + /* Clear Bit[7:0] R_SWITCH */ rv |= tcpc_write(port, ANX74XX_REG_ANALOG_CTRL_1, 0x0); - rv |= tcpc_write(port, ANX74XX_REG_ANALOG_CTRL_5, 0x04); + + /* Clear Bit[7:4] R_SWITCH_H */ + rv |= tcpc_read(port, ANX74XX_REG_ANALOG_CTRL_5, ®); + if (rv) + return EC_ERROR_UNKNOWN; + rv |= tcpc_write(port, ANX74XX_REG_ANALOG_CTRL_5, (reg & 0x0f)); + rv |= tcpc_write(port, ANX74XX_REG_ANALOG_CTRL_2, reg & 0x09); if (rv) return EC_ERROR_UNKNOWN; @@ -845,6 +852,14 @@ int anx74xx_tcpm_init(int port) /* HPD pin output enable*/ rv |= tcpc_write(port, ANX74XX_REG_HPD_CTRL_0, ANX74XX_REG_HPD_DEFAULT); + if (rv) + return EC_ERROR_UNKNOWN; + + /* Set AVDD10_BMC to 1.08 */ + rv |= tcpc_read(port, ANX74XX_REG_ANALOG_CTRL_5, ®); + if (rv) + return EC_ERROR_UNKNOWN; + rv = tcpc_write(port, ANX74XX_REG_ANALOG_CTRL_5, (reg & 0xf3)); if (rv) return EC_ERROR_UNKNOWN; @@ -856,6 +871,11 @@ int anx74xx_tcpm_init(int port) if (rv) return EC_ERROR_UNKNOWN; + /* Set BMC TX cap slew rate to 400ns */ + rv = tcpc_write(port, ANX74XX_REG_ANALOG_CTRL_12, 0x4); + if (rv) + return EC_ERROR_UNKNOWN; + #ifdef CONFIG_USB_PD_TCPC_FW_VERSION board_print_tcpc_fw_version(port); #endif diff --git a/driver/tcpm/anx74xx.h b/driver/tcpm/anx74xx.h index 76bb44067e..8fc81c0bc0 100644 --- a/driver/tcpm/anx74xx.h +++ b/driver/tcpm/anx74xx.h @@ -82,6 +82,7 @@ #define ANX74XX_REG_AUX_SWAP_SET_CC2 0xc0 #define ANX74XX_REG_ANALOG_CTRL_11 0x4c +#define ANX74XX_REG_ANALOG_CTRL_12 0x4d #define ANX74XX_REG_MUX_DP_MODE_ACE_CC1 0x49 #define ANX74XX_REG_MUX_DP_MODE_ACE_CC2 0x86