summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYongBeum.Ha <ybha@samsung.corp-partner.google.com>2021-04-02 14:09:47 +0900
committerCommit Bot <commit-bot@chromium.org>2021-04-22 08:51:38 +0000
commit759032cb3cc5a4839aab8781bd818b273186b041 (patch)
treefe1dae69575bc86f567d569760d823c03da09c20
parenta18259036ddc0f1a2cf9673772ba03360aac3b74 (diff)
downloadchrome-ec-759032cb3cc5a4839aab8781bd818b273186b041.tar.gz
sasuke : support multi-usb mux
Select usb mux on board init with cbi_ssfc. BUG=b:182596801 BRANCH=none TEST=make -j BOARD=sasuke & check if c1 port works Signed-off-by: YongBeum.Ha <ybha@samsung.corp-partner.google.com> Change-Id: Id5886a5dbe128cbb7c32af4cb24d930be302eaa0 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2801177 Reviewed-by: Aseda Aboagye <aaboagye@chromium.org>
-rw-r--r--board/sasuke/board.c33
-rw-r--r--board/sasuke/board.h2
2 files changed, 34 insertions, 1 deletions
diff --git a/board/sasuke/board.c b/board/sasuke/board.c
index 7e96204f11..21631c0323 100644
--- a/board/sasuke/board.c
+++ b/board/sasuke/board.c
@@ -8,6 +8,7 @@
#include "adc_chip.h"
#include "button.h"
#include "cbi_fw_config.h"
+#include "cbi_ssfc.h"
#include "charge_manager.h"
#include "charge_state_v2.h"
#include "charger.h"
@@ -22,6 +23,7 @@
#include "driver/tcpm/tcpci.h"
#include "driver/temp_sensor/thermistor.h"
#include "driver/usb_mux/pi3usb3x532.h"
+#include "driver/usb_mux/ps8743.h"
#include "extpower.h"
#include "gpio.h"
#include "hooks.h"
@@ -175,7 +177,10 @@ BUILD_ASSERT(ARRAY_SIZE(temp_sensors) == TEMP_SENSOR_COUNT);
static int board_id = -1;
+static int mux_c1 = SSFC_USB_SS_MUX_DEFAULT;
+
extern const struct usb_mux usbc0_retimer;
+extern const struct usb_mux usbmux_ps8743;
void board_init(void)
{
@@ -229,6 +234,13 @@ void board_init(void)
}
}
}
+
+ mux_c1 = get_cbi_ssfc_usb_ss_mux();
+
+ if (mux_c1 == SSFC_USB_SS_MUX_PS8743)
+ memcpy(&usb_muxes[1],
+ &usbmux_ps8743,
+ sizeof(struct usb_mux));
}
DECLARE_HOOK(HOOK_INIT, board_init, HOOK_PRIO_DEFAULT);
@@ -480,6 +492,8 @@ static int board_nb7v904m_mux_set_c0(const struct usb_mux *me,
mux_state_t mux_state);
static int board_nb7v904m_mux_set(const struct usb_mux *me,
mux_state_t mux_state);
+static int ps8743_tune_mux(const struct usb_mux *me);
+
const struct usb_mux usbc0_retimer = {
.usb_port = 0,
.i2c_port = I2C_PORT_USB_C0,
@@ -495,7 +509,15 @@ const struct usb_mux usbc1_retimer = {
.board_set = &board_nb7v904m_mux_set,
};
-const struct usb_mux usb_muxes[CONFIG_USB_PD_PORT_MAX_COUNT] = {
+const struct usb_mux usbmux_ps8743 = {
+ .usb_port = 1,
+ .i2c_port = I2C_PORT_SUB_USB_C1,
+ .i2c_addr_flags = PS8743_I2C_ADDR0_FLAG,
+ .driver = &ps8743_usb_mux_driver,
+ .board_init = &ps8743_tune_mux,
+};
+
+struct usb_mux usb_muxes[CONFIG_USB_PD_PORT_MAX_COUNT] = {
{
.usb_port = 0,
.i2c_port = I2C_PORT_USB_C0,
@@ -511,6 +533,15 @@ const struct usb_mux usb_muxes[CONFIG_USB_PD_PORT_MAX_COUNT] = {
.next_mux = &usbc1_retimer,
}
};
+/* USB Mux C1 : board_init of PS8743 */
+static int ps8743_tune_mux(const struct usb_mux *me)
+{
+ ps8743_tune_usb_eq(me,
+ PS8743_USB_EQ_TX_3_6_DB,
+ PS8743_USB_EQ_RX_16_0_DB);
+
+ return EC_SUCCESS;
+}
/* USB Mux C0 */
static int board_nb7v904m_mux_set_c0(const struct usb_mux *me,
diff --git a/board/sasuke/board.h b/board/sasuke/board.h
index 08bb872787..bb0fd8e286 100644
--- a/board/sasuke/board.h
+++ b/board/sasuke/board.h
@@ -64,6 +64,8 @@
/* USB */
#define CONFIG_BC12_DETECT_PI3USB9201
#define CONFIG_USBC_RETIMER_NB7V904M
+#define CONFIG_USB_MUX_RUNTIME_CONFIG
+#define CONFIG_USB_MUX_PS8743
/* USB PD */
#define CONFIG_USB_PD_PORT_MAX_COUNT 2