summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShawn Nematbakhsh <shawnn@chromium.org>2016-06-23 13:01:09 -0700
committerchrome-bot <chrome-bot@chromium.org>2016-06-28 19:27:53 -0700
commitb763295e9a34a94cb120a3a2a3ab8d63ca0d8c7d (patch)
treee83a9530e98ebf200a85d525950287584ae89474
parent2f92ff3612394fe800962062c0422a46e91dbc59 (diff)
downloadchrome-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.c9
-rw-r--r--driver/tcpm/tcpci.h9
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)