summaryrefslogtreecommitdiff
path: root/driver/retimer
diff options
context:
space:
mode:
authorZick Wei <zick.wei@quanta.corp-partner.google.com>2020-10-13 19:56:55 +0800
committerCommit Bot <commit-bot@chromium.org>2020-11-18 17:55:00 +0000
commitae7a3b0270447ddd484c444b171c1c44656683e7 (patch)
tree4b88adb67a9616ae836ec7cc3fb4b6a600363818 /driver/retimer
parentdb27b92f6221b02dfd95aa17f06b6b9339352a6e (diff)
downloadchrome-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.c17
-rw-r--r--driver/retimer/tusb544.h55
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