diff options
author | Shawn Nematbakhsh <shawnn@chromium.org> | 2016-06-23 13:01:09 -0700 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2016-06-28 19:27:53 -0700 |
commit | b763295e9a34a94cb120a3a2a3ab8d63ca0d8c7d (patch) | |
tree | e83a9530e98ebf200a85d525950287584ae89474 | |
parent | 2f92ff3612394fe800962062c0422a46e91dbc59 (diff) | |
download | chrome-ec-b763295e9a34a94cb120a3a2a3ab8d63ca0d8c7d.tar.gz |
pd: tcpci: Properly get / set mux polarity
CONFIG_STANDARD_OUTPUT bit 0 on the TCPC is used to indicate connector
orientation flipped status.
BUG=chrome-os-partner:53502
BRANCH=None
TEST=Manual on amenia / reef. Verify USB3 drive is properly detected as
SuperSpeed for either polarity.
Change-Id: I707e46064cbf0f89b3098c850b1cee55c9fead58
Signed-off-by: Shawn Nematbakhsh <shawnn@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/355670
Commit-Ready: Shawn N <shawnn@chromium.org>
Tested-by: Kevin K Wong <kevin.k.wong@intel.com>
Tested-by: Shawn N <shawnn@chromium.org>
Reviewed-by: Kevin K Wong <kevin.k.wong@intel.com>
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
-rw-r--r-- | driver/tcpm/tcpci.c | 9 | ||||
-rw-r--r-- | driver/tcpm/tcpci.h | 9 |
2 files changed, 11 insertions, 7 deletions
diff --git a/driver/tcpm/tcpci.c b/driver/tcpm/tcpci.c index 37f009045c..1176980419 100644 --- a/driver/tcpm/tcpci.c +++ b/driver/tcpm/tcpci.c @@ -301,12 +301,14 @@ int tcpci_tcpm_mux_set(int i2c_addr, mux_state_t mux_state) if (rv != EC_SUCCESS) return rv; - reg &= ~TCPC_REG_CONFIG_STD_OUTPUT_MUX_MASK; + reg &= ~(TCPC_REG_CONFIG_STD_OUTPUT_MUX_MASK | + TCPC_REG_CONFIG_STD_OUTPUT_CONNECTOR_FLIPPED); if (mux_state & MUX_USB_ENABLED) reg |= TCPC_REG_CONFIG_STD_OUTPUT_MUX_USB; if (mux_state & MUX_DP_ENABLED) reg |= TCPC_REG_CONFIG_STD_OUTPUT_MUX_DP; - /* MUX_POLARITY_INVERTED: polarity is handled by the TCPC */ + if (mux_state & MUX_POLARITY_INVERTED) + reg |= TCPC_REG_CONFIG_STD_OUTPUT_CONNECTOR_FLIPPED; return tcpc_write(port, TCPC_REG_CONFIG_STD_OUTPUT, reg); } @@ -327,7 +329,8 @@ int tcpci_tcpm_mux_get(int i2c_addr, mux_state_t *mux_state) *mux_state |= MUX_USB_ENABLED; if (reg & TCPC_REG_CONFIG_STD_OUTPUT_MUX_DP) *mux_state |= MUX_DP_ENABLED; - /* MUX_POLARITY_INVERTED is always omitted */ + if (reg & TCPC_REG_CONFIG_STD_OUTPUT_CONNECTOR_FLIPPED) + *mux_state |= MUX_POLARITY_INVERTED; return EC_SUCCESS; } diff --git a/driver/tcpm/tcpci.h b/driver/tcpm/tcpci.h index 1256a4330c..1417640a26 100644 --- a/driver/tcpm/tcpci.h +++ b/driver/tcpm/tcpci.h @@ -41,10 +41,11 @@ #define TCPC_REG_FAULT_STATUS_MASK 0x15 #define TCPC_REG_CONFIG_STD_OUTPUT 0x18 -#define TCPC_REG_CONFIG_STD_OUTPUT_MUX_MASK (3 << 2) -#define TCPC_REG_CONFIG_STD_OUTPUT_MUX_NONE (0 << 2) -#define TCPC_REG_CONFIG_STD_OUTPUT_MUX_USB (1 << 2) -#define TCPC_REG_CONFIG_STD_OUTPUT_MUX_DP (2 << 2) +#define TCPC_REG_CONFIG_STD_OUTPUT_MUX_MASK (3 << 2) +#define TCPC_REG_CONFIG_STD_OUTPUT_MUX_NONE (0 << 2) +#define TCPC_REG_CONFIG_STD_OUTPUT_MUX_USB (1 << 2) +#define TCPC_REG_CONFIG_STD_OUTPUT_MUX_DP (2 << 2) +#define TCPC_REG_CONFIG_STD_OUTPUT_CONNECTOR_FLIPPED (1 << 0) #define TCPC_REG_TCPC_CTRL 0x19 #define TCPC_REG_TCPC_CTRL_SET(polarity) (polarity) |