summaryrefslogtreecommitdiff
path: root/board/storo/board.c
diff options
context:
space:
mode:
authorMike Lee <mike5@huaqin.corp-partner.google.com>2021-03-25 11:16:52 +0800
committerCommit Bot <commit-bot@chromium.org>2021-06-08 04:55:47 +0000
commitd5e9773ea42c8ea3c2666b031abef85f3d43b162 (patch)
treebfc7675db1c03dfe8d6c936b8a3455aad62c7827 /board/storo/board.c
parent8be8b1d6f832f05e76268eaba890e2120da87a54 (diff)
downloadchrome-ec-d5e9773ea42c8ea3c2666b031abef85f3d43b162.tar.gz
storo: tune tusb544 EQ setting
Modify strength value setting of tusb544, set vod dcgain setting_5,set usb eq 15,and set dp eq 6. BUG=b:183583917,b:183586638 BRANCH=dedede TEST=make BOARD=storo and verified pass by EE Signed-off-by: Mike Lee <mike5@huaqin.corp-partner.google.com> Change-Id: Ic8b16fed18e06e4fa763faf47c2041dc1d3c29f1 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2784332 Reviewed-by: Aseda Aboagye <aaboagye@chromium.org> Commit-Queue: Aseda Aboagye <aaboagye@chromium.org>
Diffstat (limited to 'board/storo/board.c')
-rw-r--r--board/storo/board.c99
1 files changed, 99 insertions, 0 deletions
diff --git a/board/storo/board.c b/board/storo/board.c
index 55417139e2..207d312a17 100644
--- a/board/storo/board.c
+++ b/board/storo/board.c
@@ -222,11 +222,110 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_MAX_COUNT] = {
};
/* USB Retimer */
+enum tusb544_conf {
+ USB_DP = 0,
+ USB_DP_INV,
+ USB,
+ USB_INV,
+ DP,
+ DP_INV
+};
+
+static int board_tusb544_set(const struct usb_mux *me, mux_state_t mux_state)
+{
+ int rv = EC_SUCCESS;
+ int reg;
+ enum tusb544_conf usb_mode = 0;
+
+ if (mux_state & USB_PD_MUX_USB_ENABLED) {
+ if (mux_state & USB_PD_MUX_DP_ENABLED) {
+ /* USB with DP */
+ usb_mode = (mux_state & USB_PD_MUX_POLARITY_INVERTED)
+ ? USB_DP_INV
+ : USB_DP;
+ } else {
+ /* USB without DP */
+ usb_mode = (mux_state & USB_PD_MUX_POLARITY_INVERTED)
+ ? USB_INV
+ : USB;
+ }
+ } else if (mux_state & USB_PD_MUX_DP_ENABLED) {
+ /* DP without USB */
+ usb_mode = (mux_state & USB_PD_MUX_POLARITY_INVERTED)
+ ? DP_INV
+ : DP;
+ } else {
+ return EC_SUCCESS;
+ }
+
+ rv = i2c_read8(me->i2c_port, me->i2c_addr_flags,
+ TUSB544_REG_GENERAL6, &reg);
+ if (rv)
+ return rv;
+
+ reg |= TUSB544_VOD_DCGAIN_OVERRIDE;
+ reg &= ~TUSB544_VOD_DCGAIN_SEL;
+ reg |= (TUSB544_VOD_DCGAIN_SETTING_5 << 2);
+
+ rv = i2c_write8(me->i2c_port, me->i2c_addr_flags,
+ TUSB544_REG_GENERAL6, reg);
+ if (rv)
+ return rv;
+
+ /* Write the retimer config byte */
+ if (usb_mode == USB_INV) {
+ rv |= i2c_write8(me->i2c_port, me->i2c_addr_flags,
+ TUSB544_REG_GENERAL4, 0x15);
+ rv |= i2c_write8(me->i2c_port, me->i2c_addr_flags,
+ TUSB544_REG_USB3_1_1, 0xff);
+ rv |= i2c_write8(me->i2c_port, me->i2c_addr_flags,
+ TUSB544_REG_USB3_1_2, 0xff);
+ } else if (usb_mode == USB) {
+ rv |= i2c_write8(me->i2c_port, me->i2c_addr_flags,
+ TUSB544_REG_GENERAL4, 0x11);
+ rv |= i2c_write8(me->i2c_port, me->i2c_addr_flags,
+ TUSB544_REG_USB3_1_1, 0xff);
+ rv |= i2c_write8(me->i2c_port, me->i2c_addr_flags,
+ TUSB544_REG_USB3_1_2, 0xff);
+ } else if (usb_mode == USB_DP_INV) {
+ rv |= i2c_write8(me->i2c_port, me->i2c_addr_flags,
+ TUSB544_REG_GENERAL4, 0x1F);
+ rv |= i2c_write8(me->i2c_port, me->i2c_addr_flags,
+ TUSB544_REG_USB3_1_1, 0xff);
+ rv |= i2c_write8(me->i2c_port, me->i2c_addr_flags,
+ TUSB544_REG_USB3_1_2, 0xff);
+ } else if (usb_mode == USB_DP) {
+ rv |= i2c_write8(me->i2c_port, me->i2c_addr_flags,
+ TUSB544_REG_GENERAL4, 0x1B);
+ rv |= i2c_write8(me->i2c_port, me->i2c_addr_flags,
+ TUSB544_REG_USB3_1_1, 0xff);
+ rv |= i2c_write8(me->i2c_port, me->i2c_addr_flags,
+ TUSB544_REG_USB3_1_2, 0xff);
+ } else if (usb_mode == DP_INV) {
+ rv |= i2c_write8(me->i2c_port, me->i2c_addr_flags,
+ TUSB544_REG_GENERAL4, 0x1E);
+ } else if (usb_mode == DP) {
+ rv |= i2c_write8(me->i2c_port, me->i2c_addr_flags,
+ TUSB544_REG_GENERAL4, 0x1A);
+ }
+
+ rv |= i2c_write8(me->i2c_port, me->i2c_addr_flags,
+ TUSB544_REG_DISPLAYPORT_1, 0x66);
+ rv |= i2c_write8(me->i2c_port, me->i2c_addr_flags,
+ TUSB544_REG_DISPLAYPORT_2, 0x66);
+ if (rv)
+ return EC_ERROR_UNKNOWN;
+ else
+ return EC_SUCCESS;
+}
+
+/* USB Retimer */
const struct usb_mux usbc1_retimer = {
.usb_port = 1,
.i2c_port = I2C_PORT_SUB_USB_C1,
.i2c_addr_flags = TUSB544_I2C_ADDR_FLAGS0,
.driver = &tusb544_drv,
+ .board_set = &board_tusb544_set,
};
/* USB Muxes */