summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Ma <magf@bitland.corp-partner.google.com>2020-04-26 10:46:30 +0800
committerCommit Bot <commit-bot@chromium.org>2020-04-26 09:34:47 +0000
commit486d49750715c5ca5ff279b04e3f9b95fc8541d3 (patch)
tree3d991678b5306568fcc12df0ab7b8ab88133feb1
parentd14696499ad6b9cdbc92362f98d29c8c5b5492e9 (diff)
downloadchrome-ec-486d49750715c5ca5ff279b04e3f9b95fc8541d3.tar.gz
dalboz: let i2c control ps8743 DP/USB/FLIP selection
Let i2c control ps8743 DP/USB/FLIP selection. Do not use any GPIO. BUG=b:154957683 BRANCH=none TEST=build and boot dalboz, verify USB2/USB3/DP work well. Change-Id: Ibb9a258a30e4433f5fcd4196ac6ccebbc0719bfe Signed-off-by: Paul Ma <magf@bitland.corp-partner.google.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2167111 Reviewed-by: Edward Hill <ecgh@chromium.org> Commit-Queue: Edward Hill <ecgh@chromium.org>
-rw-r--r--board/dalboz/board.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/board/dalboz/board.c b/board/dalboz/board.c
index 412661fbba..85d7f32b11 100644
--- a/board/dalboz/board.c
+++ b/board/dalboz/board.c
@@ -158,6 +158,26 @@ void pcal6408_interrupt(enum gpio_signal signal)
hook_call_deferred(&pcal6408_handler_data, 0);
}
+static int board_ps8743_mux_set(const struct usb_mux *me,
+ mux_state_t mux_state)
+{
+ int rv = EC_SUCCESS;
+ int reg = 0;
+
+ rv = ps8743_read(me, PS8743_REG_MODE, &reg);
+ if (rv)
+ return rv;
+
+ /* Disable FLIP pin, enable I2C control. */
+ reg |= PS8743_MODE_FLIP_REG_CONTROL;
+ /* Disable CE_USB pin, enable I2C control. */
+ reg |= PS8743_MODE_USB_REG_CONTROL;
+ /* Disable CE_DP pin, enable I2C control. */
+ reg |= PS8743_MODE_DP_REG_CONTROL;
+
+ return ps8743_write(me, PS8743_REG_MODE, reg);
+}
+
static void setup_fw_config(void)
{
uint32_t board_version = 0;
@@ -167,6 +187,7 @@ static void setup_fw_config(void)
ccprints("PS8743 USB MUX");
usb_muxes[USBC_PORT_C1].i2c_addr_flags = PS8743_I2C_ADDR1_FLAG;
usb_muxes[USBC_PORT_C1].driver = &ps8743_usb_mux_driver;
+ usb_muxes[USBC_PORT_C1].board_set = &board_ps8743_mux_set;
} else {
ccprints("PS8740 USB MUX");
usb_muxes[USBC_PORT_C1].i2c_addr_flags = PS8740_I2C_ADDR0_FLAG;