diff options
author | Mike Lee <mike5@huaqin.corp-partner.google.com> | 2021-03-25 11:16:52 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-06-08 04:55:47 +0000 |
commit | d5e9773ea42c8ea3c2666b031abef85f3d43b162 (patch) | |
tree | bfc7675db1c03dfe8d6c936b8a3455aad62c7827 /board/storo/board.c | |
parent | 8be8b1d6f832f05e76268eaba890e2120da87a54 (diff) | |
download | chrome-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.c | 99 |
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, ®); + 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 */ |