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>
This commit is contained in:
Shawn Nematbakhsh
2016-06-23 13:01:09 -07:00
committed by chrome-bot
parent 2f92ff3612
commit b763295e9a
2 changed files with 11 additions and 7 deletions

View File

@@ -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;
}

View File

@@ -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)