summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--baseboard/asurada/baseboard.c15
-rw-r--r--baseboard/asurada/baseboard.h1
-rw-r--r--board/asurada/board.c12
-rw-r--r--board/spherion/board.c9
-rw-r--r--driver/usb_mux/ps8743.h11
5 files changed, 34 insertions, 14 deletions
diff --git a/baseboard/asurada/baseboard.c b/baseboard/asurada/baseboard.c
index 4943aedc9d..edefec3ff3 100644
--- a/baseboard/asurada/baseboard.c
+++ b/baseboard/asurada/baseboard.c
@@ -64,8 +64,6 @@ static void x_ec_interrupt(enum gpio_signal signal);
#define CPRINTS(format, args...) cprints(CC_SYSTEM, format, ## args)
#define CPRINTF(format, args...) cprintf(CC_SYSTEM, format, ## args)
-static enum board_sub_board board_get_sub_board(void);
-
/* Wake-up pins for hibernate */
enum gpio_signal hibernate_wake_pins[] = {
GPIO_AC_PRESENT,
@@ -192,7 +190,7 @@ static void ppc_interrupt(enum gpio_signal signal)
/* Sub-board */
-static enum board_sub_board board_get_sub_board(void)
+enum board_sub_board board_get_sub_board(void)
{
static enum board_sub_board sub = SUB_BOARD_NONE;
@@ -259,17 +257,6 @@ const int usb_port_enable[] = {
};
BUILD_ASSERT(ARRAY_SIZE(usb_port_enable) == USB_PORT_COUNT);
-/* USB Mux */
-
-void board_usb_mux_init(void)
-{
- if (board_get_sub_board() == SUB_BOARD_TYPEC)
- ps8743_tune_usb_eq(&usb_muxes[1],
- PS8743_USB_EQ_TX_12_8_DB,
- PS8743_USB_EQ_RX_12_8_DB);
-}
-DECLARE_HOOK(HOOK_INIT, board_usb_mux_init, HOOK_PRIO_INIT_I2C + 1);
-
static int board_ps8743_mux_set(const struct usb_mux *me,
mux_state_t mux_state)
{
diff --git a/baseboard/asurada/baseboard.h b/baseboard/asurada/baseboard.h
index 649fccd773..9045b0aaa6 100644
--- a/baseboard/asurada/baseboard.h
+++ b/baseboard/asurada/baseboard.h
@@ -211,5 +211,6 @@ enum board_sub_board {
int board_get_version(void);
void board_reset_pd_mcu(void);
+enum board_sub_board board_get_sub_board(void);
#endif /* !__ASSEMBLER__ */
#endif /* __CROS_EC_BASEBOARD_H */
diff --git a/board/asurada/board.c b/board/asurada/board.c
index a73bb246b1..5f6218299a 100644
--- a/board/asurada/board.c
+++ b/board/asurada/board.c
@@ -350,3 +350,15 @@ __override int syv682x_board_is_syv682c(int port)
return board_get_version() > 2;
}
+void board_usb_mux_init(void)
+{
+ if (board_get_sub_board() == SUB_BOARD_TYPEC) {
+ ps8743_tune_usb_eq(&usb_muxes[1],
+ PS8743_USB_EQ_TX_12_8_DB,
+ PS8743_USB_EQ_RX_12_8_DB);
+ ps8743_write(&usb_muxes[1],
+ PS8743_REG_HS_DET_THRESHOLD,
+ PS8743_USB_HS_THRESH_NEG_10);
+ }
+}
+DECLARE_HOOK(HOOK_INIT, board_usb_mux_init, HOOK_PRIO_INIT_I2C + 1);
diff --git a/board/spherion/board.c b/board/spherion/board.c
index ae1b932ff6..670eb91dd9 100644
--- a/board/spherion/board.c
+++ b/board/spherion/board.c
@@ -103,3 +103,12 @@ static void kb_backlight_disable(void)
gpio_set_level(GPIO_EC_KB_BL_EN, 0);
}
DECLARE_HOOK(HOOK_CHIPSET_SUSPEND, kb_backlight_disable, HOOK_PRIO_DEFAULT);
+
+void board_usb_mux_init(void)
+{
+ if (board_get_sub_board() == SUB_BOARD_TYPEC)
+ ps8743_tune_usb_eq(&usb_muxes[1],
+ PS8743_USB_EQ_TX_12_8_DB,
+ PS8743_USB_EQ_RX_12_8_DB);
+}
+DECLARE_HOOK(HOOK_INIT, board_usb_mux_init, HOOK_PRIO_INIT_I2C + 1);
diff --git a/driver/usb_mux/ps8743.h b/driver/usb_mux/ps8743.h
index 70a47bdb9b..a520f970ac 100644
--- a/driver/usb_mux/ps8743.h
+++ b/driver/usb_mux/ps8743.h
@@ -75,6 +75,17 @@
#define PS8743_USB_EQ_RX_21_3_DB 0xd0
#define PS8743_USB_EQ_RX_22_2_DB 0xe0
+/* USB High Speed Signal Detector thershold adjustment */
+#define PS8743_REG_HS_DET_THRESHOLD 0x3c
+#define PS8743_USB_HS_THRESH_DEFAULT 0x00
+#define PS8743_USB_HS_THRESH_POS_10 0x20
+#define PS8743_USB_HS_THRESH_POS_33 0x40
+#define PS8743_USB_HS_THRESH_NEG_10 0x60
+#define PS8743_USB_HS_THRESH_NEG_25 0x80
+#define PS8743_USB_HS_THRESH_POS_25 0xa0
+#define PS8743_USB_HS_THRESH_NEG_45 0xc0
+#define PS8743_USB_HS_THRESH_NEG_35 0xe0
+
int ps8743_tune_usb_eq(const struct usb_mux *me, uint8_t tx, uint8_t rx);
int ps8743_write(const struct usb_mux *me, uint8_t reg, uint8_t val);
int ps8743_read(const struct usb_mux *me, uint8_t reg, int *val);