diff options
author | Zick Wei <zick.wei@quanta.corp-partner.google.com> | 2020-10-13 19:56:55 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-11-18 17:55:00 +0000 |
commit | ae7a3b0270447ddd484c444b171c1c44656683e7 (patch) | |
tree | 4b88adb67a9616ae836ec7cc3fb4b6a600363818 /driver/retimer | |
parent | db27b92f6221b02dfd95aa17f06b6b9339352a6e (diff) | |
download | chrome-ec-ae7a3b0270447ddd484c444b171c1c44656683e7.tar.gz |
berknip: update tusb544 eq setting
This patch update tusb544 eq setting for berknip.
BUG=b:170708727, b:170708972
BRANCH=zork
TEST=verify USB type C 3.0 RX , DP eq can pass, make buildall.
Signed-off-by: Zick Wei <zick.wei@quanta.corp-partner.google.com>
Change-Id: Ief018e02090f5bc409a57a93da86f9ff095773aa
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2467602
Reviewed-by: Denis Brockus <dbrockus@chromium.org>
Commit-Queue: Denis Brockus <dbrockus@chromium.org>
Diffstat (limited to 'driver/retimer')
-rw-r--r-- | driver/retimer/tusb544.c | 17 | ||||
-rw-r--r-- | driver/retimer/tusb544.h | 55 |
2 files changed, 67 insertions, 5 deletions
diff --git a/driver/retimer/tusb544.c b/driver/retimer/tusb544.c index c9e2642651..e76e5bd976 100644 --- a/driver/retimer/tusb544.c +++ b/driver/retimer/tusb544.c @@ -22,6 +22,20 @@ static int tusb544_read(const struct usb_mux *me, int offset, int *data) offset, data); } +int tusb544_i2c_field_update8(const struct usb_mux *me, int offset, + uint8_t field_mask, uint8_t set_value) +{ + int rv; + + rv = i2c_field_update8(me->i2c_port, + me->i2c_addr_flags, + offset, + field_mask, + set_value); + + return rv; +} + static int tusb544_enter_low_power_mode(const struct usb_mux *me) { int reg; @@ -63,6 +77,9 @@ static int tusb544_set_mux(const struct usb_mux *me, mux_state_t mux_state) reg &= ~TUSB544_GEN4_CTL_SEL; + if (IS_ENABLED(CONFIG_TUSB544_EQ_BY_REGISTER)) + reg |= TUSB544_GEN4_EQ_OVRD; + if ((mux_state & USB_PD_MUX_USB_ENABLED) && (mux_state & USB_PD_MUX_DP_ENABLED)) { reg |= TUSB544_CTL_SEL_DP_USB; diff --git a/driver/retimer/tusb544.h b/driver/retimer/tusb544.h index 2c63a159ca..252cd2e38a 100644 --- a/driver/retimer/tusb544.h +++ b/driver/retimer/tusb544.h @@ -4,18 +4,60 @@ * * TI TUSB544 USB Type-C Multi-Protocol Linear Redriver */ +#include "usb_mux.h" #ifndef __CROS_EC_USB_REDRIVER_TUSB544_H #define __CROS_EC_USB_REDRIVER_TUSB544_H + #define TUSB544_I2C_ADDR_FLAGS0 0x44 #define TUSB544_REG_GENERAL4 0x0A -#define TUSB544_GEN4_CTL_SEL GENMASK(1, 0) -#define TUSB544_GEN4_FLIP_SEL BIT(2) -#define TUSB544_GEN4_HPDIN BIT(3) -#define TUSB544_GEN4_EQ_OVRD BIT(4) -#define TUSB544_GEN4_SWAP_SEL BIT(5) +#define TUSB544_GEN4_CTL_SEL GENMASK(1, 0) +#define TUSB544_GEN4_FLIP_SEL BIT(2) +#define TUSB544_GEN4_HPDIN BIT(3) +#define TUSB544_GEN4_EQ_OVRD BIT(4) +#define TUSB544_GEN4_SWAP_SEL BIT(5) + +#define TUSB544_REG_DISPLAYPORT_1 0x10 +#define TUSB544_REG_DISPLAYPORT_2 0x11 +#define TUSB544_REG_USB3_1_1 0x20 +#define TUSB544_REG_USB3_1_2 0x21 +#define TUSB544_EQ_RX_DFP_MINUS14_UFP_MINUS33 (0) +#define TUSB544_EQ_RX_DFP_04_UFP_MINUS15 (1) +#define TUSB544_EQ_RX_DFP_17_UFP_0 (2) +#define TUSB544_EQ_RX_DFP_32_UFP_14 (3) +#define TUSB544_EQ_RX_DFP_41_UFP_24 (4) +#define TUSB544_EQ_RX_DFP_52_UFP_35 (5) +#define TUSB544_EQ_RX_DFP_61_UFP_43 (6) +#define TUSB544_EQ_RX_DFP_69_UFP_52 (7) +#define TUSB544_EQ_RX_DFP_77_UFP_60 (8) +#define TUSB544_EQ_RX_DFP_83_UFP_66 (9) +#define TUSB544_EQ_RX_DFP_88_UFP_72 (10) +#define TUSB544_EQ_RX_DFP_94_UFP_77 (11) +#define TUSB544_EQ_RX_DFP_98_UFP_81 (12) +#define TUSB544_EQ_RX_DFP_103_UFP_86 (13) +#define TUSB544_EQ_RX_DFP_106_UFP_90 (14) +#define TUSB544_EQ_RX_DFP_110_UFP_94 (15) +#define TUSB544_EQ_RX_MASK (0x0F) + +#define TUSB544_EQ_TX_DFP_MINUS14_UFP_MINUS33 (0 << 4) +#define TUSB544_EQ_TX_DFP_04_UFP_MINUS15 (1 << 4) +#define TUSB544_EQ_TX_DFP_17_UFP_0 (2 << 4) +#define TUSB544_EQ_TX_DFP_32_UFP_14 (3 << 4) +#define TUSB544_EQ_TX_DFP_41_UFP_24 (4 << 4) +#define TUSB544_EQ_TX_DFP_52_UFP_35 (5 << 4) +#define TUSB544_EQ_TX_DFP_61_UFP_43 (6 << 4) +#define TUSB544_EQ_TX_DFP_69_UFP_52 (7 << 4) +#define TUSB544_EQ_TX_DFP_77_UFP_60 (8 << 4) +#define TUSB544_EQ_TX_DFP_83_UFP_66 (9 << 4) +#define TUSB544_EQ_TX_DFP_88_UFP_72 (10 << 4) +#define TUSB544_EQ_TX_DFP_94_UFP_77 (11 << 4) +#define TUSB544_EQ_TX_DFP_98_UFP_81 (12 << 4) +#define TUSB544_EQ_TX_DFP_103_UFP_86 (13 << 4) +#define TUSB544_EQ_TX_DFP_106_UFP_90 (14 << 4) +#define TUSB544_EQ_TX_DFP_110_UFP_94 (15 << 4) +#define TUSB544_EQ_TX_MASK (0xF0) enum tusb544_ct_sel { TUSB544_CTL_SEL_DISABLED, @@ -48,4 +90,7 @@ enum tusb544_dir_sel { extern const struct usb_mux_driver tusb544_drv; +int tusb544_i2c_field_update8(const struct usb_mux *me, int offset, + uint8_t field_mask, uint8_t set_value); + #endif |